Програмски преводиоци 1/К1 2015 — разлика између измена
м (Bela pozadina na <gallery>) |
м (I malo veće slike) |
||
Ред 191: | Ред 191: | ||
=== Rešenje === | === Rešenje === | ||
<gallery class="transparent-svg"> | <gallery class="transparent-svg" widths="500" heights="500"> | ||
PPR K1 2015 zadatak 4 a.svg | Sintaksno stablo u stavci pod a. | PPR K1 2015 zadatak 4 a.svg | Sintaksno stablo u stavci pod a. | ||
PPR K1 2015 zadatak 4 b.svg | Graf nedeterminističkog konačnog automata u stavci pod b. | PPR K1 2015 zadatak 4 b.svg | Graf nedeterminističkog konačnog automata u stavci pod b. |
Верзија на датум 31. октобар 2022. у 15:07
Prvi kolokvijum 2015. godine održan je 25. oktobra i trajao je 90 minuta. Postavka je dostupna sa stranice predmeta (arhiva).
1. zadatak
Postavka
- Opisati korake generalnog postupka kojim se za dva proizvoljna deterministička automata sa istim ulaznim azbukama konstruiše automat koji prihvata sve sekvence koje prihvata i prvi automat i dodatno sve sekvence koje NE prihvata drugi automat (i nijednu više).
- Konstruisati minimalni deterministički konačni automat prema postupku opisanom pod a) za sledeća dva automata. Prikazati svaki korak postupka.
x | y | Prihvata | |
---|---|---|---|
→ 0 | 1 | 0 | 1 |
1 | 2 | 1 | 0 |
2 | 2 | 0 | 0 |
x | y | Prihvata | |
---|---|---|---|
→ A | B | A | 0 |
B | A | B | 1 |
Rešenje
Generalni postupak konstruisanja takvog automata jeste da se dva deterministička automata samo spoje, nova početna stanja postaju početna stanja oba automata a na drugom automatu se obrne šta su stanja prihvatanja a šta neprihvatanja kako bi se prihvatale sekvence koje drugi automat ne prihvata. Kako se ovim postupkom dobija nedeterministički konačni automat, potrebno je pretvoriti nedeterministički u deterministički konačni automat. Početno stanje se sastoji od početnih stanja oba automata, a stanja prihvatanja su sva stanja koje sadrže neko od stanja prihvatanja prethodnih automata.
Ispod je prikazan postupak konverzije gorenavedenih automata.
x | y | Prihvata | |
---|---|---|---|
→ 0 | 1 | 0 | 1 |
1 | 2 | 1 | 0 |
2 | 2 | 0 | 0 |
→ A | B | A | 0 |
B | A | B | 1 |
x | y | Prihvata | |
---|---|---|---|
0, A | 1, B | 0, A | 1 |
1, B | 2, A | 1, B | 0 |
2, A | 2, B | 0, A | 1 |
2, B | 2, A | 0, B | 0 |
0, B | 1, A | 0, B | 1 |
1, A | 2, B | 1, A | 1 |
x | y | Prihvata | |
---|---|---|---|
A | B | A | 1 |
B | C | B | 0 |
C | D | A | 1 |
D | C | E | 0 |
E | F | E | 1 |
F | D | F | 1 |
2. zadatak
Postavka
Konstruisati regularnu gramatiku koja generiše tačno iste sekvence kao regularni izraz a* | b*.
Rešenje
- <S> → <A>
- <S> → <B>
- <A> → a <A>
- <A> → ε
- <B> → b <B>
- <B> → ε
3. zadatak
Postavka
Napisati beskontekstnu gramatiku koja opisuje sve sekvence koje pripadaju sledećem jeziku: , gde predstavlja skup simbola alfabeta.
Rešenje
- <S> → a <S> b <A>
- <S> → a <A> b <A>
- <A> → c <A>
- <A> → ε
Ovo rešenje nije ispravno, jer ne garantuje da će pri svakom ponavljanju biti podjednak broj slova . Ipak, nije poznato da li je uopšte moguće napisati bezkontekstnu gramatiku za jezik iz postavke zadataka, pa je ovo rešenje možda prihvatljivo.
4. zadatak
Postavka
- Na osnovu regularnog izraza , konstruisati minimalni deterministički automat metodom pozicija.
- Nacrtati graf NKA dobijenog transformacijom regularnog izraza primenom Tompsonovog algoritma. Nije potrebno konstruisati minDKA.
Rešenje
Pozicija | Sledeća pozicija |
---|---|
1 | 1, 3 |
2 | 2, 3 |
3 | 3, 4 |
4 | - |
a | b | c | Prihvata | |
---|---|---|---|---|
1, 2, 3 | 1, 3 | 2, 3 | 3, 4 | 0 |
1, 3 | 1, 3 | 3, 4 | 0 | |
2, 3 | 2, 3 | 3, 4 | 0 | |
3, 4 | 3, 4 | 1 |