Програмски преводиоци 1/К1 2015 — разлика између измена
(Moja rešenja K1 2015) |
м (Formatiranje regularnih izraza) |
||
(5 међуизмена истог корисника није приказано) | |||
Ред 78: | Ред 78: | ||
| B | | B | ||
| A | | A | ||
| | | 1 | ||
|- | |- | ||
! B | ! B | ||
| A | | A | ||
| B | | B | ||
| | | 0 | ||
|} | |} | ||
{| class="wikitable" | {| class="wikitable" | ||
Ред 165: | Ред 165: | ||
=== Rešenje === | === Rešenje === | ||
* <S> → <A> | * <S> → a <A> | ||
* <S> → <B> | * <S> → b <B> | ||
* <S> → ε | |||
* <A> → a <A> | * <A> → a <A> | ||
* <A> → ε | * <A> → ε | ||
Ред 186: | Ред 187: | ||
=== Postavka === | === Postavka === | ||
<div class="abc-list"> | <div class="abc-list"> | ||
# Na osnovu regularnog izraza <math>(a* | b*) c+</math>, konstruisati minimalni deterministički automat metodom pozicija. | # Na osnovu regularnog izraza <math>(a^* | b^*) c^+</math>, konstruisati minimalni deterministički automat metodom pozicija. | ||
# Nacrtati graf NKA dobijenog transformacijom regularnog izraza <math>(a* | b*)+</math> primenom Tompsonovog algoritma. Nije potrebno konstruisati minDKA. | # Nacrtati graf NKA dobijenog transformacijom regularnog izraza <math>(a^* | b^*)^+</math> primenom Tompsonovog algoritma. Nije potrebno konstruisati minDKA. | ||
</div> | </div> | ||
=== Rešenje === | === Rešenje === | ||
<gallery> | <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. | ||
Ред 218: | Ред 219: | ||
! b | ! b | ||
! c | ! c | ||
! Prihvata | ! Prihvata | ||
|- | |- | ||
Ред 225: | Ред 225: | ||
| 2, 3 | | 2, 3 | ||
| 3, 4 | | 3, 4 | ||
| 0 | | 0 | ||
|- | |- | ||
Ред 232: | Ред 231: | ||
| | | | ||
| 3, 4 | | 3, 4 | ||
| 0 | | 0 | ||
|- | |- | ||
Ред 239: | Ред 237: | ||
| 2, 3 | | 2, 3 | ||
| 3, 4 | | 3, 4 | ||
| 0 | | 0 | ||
|- | |- | ||
Ред 246: | Ред 243: | ||
| | | | ||
| 3, 4 | | 3, 4 | ||
| 1 | | 1 | ||
|} | |} |
Тренутна верзија на датум 31. октобар 2022. у 16:29
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 | 1 |
B | A | B | 0 |
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 <A>
- <S> → b <B>
- <S> → ε
- <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 |