Upload
-
View
73
Download
2
Embed Size (px)
DESCRIPTION
Konacni Automati
Citation preview
Rezime:Konačni automati
Primer konačne automatizacije
• Postoje stanja off i on, automatizacija započinje u off i pokušava da dostigne “prihvatno stanje” on
• Koja sekvenca f-ova vodi do prihvatnog stanja?
• Odgovor: {f, fff, fffff, …} = {f n: n je neparan}
• Ovo je konačna automatizacija nad alfabetom {f}
off on
f
f
Deterministički konačni automati
• Deterministička konačna automatizacija (DFA) je 5-člani skup (Q, Σ, δ, q0, F) gde
– Q je konačan skup stanja
– Σ je azbuka
– δ: Q× Σ→ Q je funkcija prelaza
– q0 ∈ Q je početno stanje
– F ⊆ Q je skup prihvatnih stanja (ili konačnih stanja).
• Na dijagramima, prihvatna stanja će biti označena duplim krugovima
Primer
q0 q1 q21 0
0 0,11
azbuka Σ = {0, 1}stanja Q = {q0, q1, q2}početno stanje q0prihvatna stanja F = {q0, q1}
stan
ja
ulazi
0 1q0q1q2
q0 q1q2
q2q2
q1
tabelafunkcije prelaza δ:
Jezik od DFA
Jezik od DFA (Q, Σ, δ, q0, F) je skup svih stringovanad Σ koji, počinjući iz q0 i prateći prelaze kako se string čita sa leva na desno, će dostići neko od prihvatnih stanja.
• Jezik od M je {f, fff, fffff, …} = {f n: n je neparan}
off on
f
f
M:
q0 q1
0 1
1
0
Koji su jezici od ovih automata?
Primeri
q0
q1
q2
q3
q4
a
a
a a
a
b
b
bb
b
q0 q1
0 1
1 0 q2
0, 1
Σ = {0, 1} Σ = {a, b}
Primeri
• Konstruisati DFA nad azbukom {0, 1} koji prihvatasve stringove sa najviše tri 1-ce
Primeri
• Konstruisati DFA nad azbukom {0, 1} koji prihvatasve stringove sa najviše tri 1-ce
• Odgovor
q0 q1
0
1 1 q2
0
q31 q4+
0, 10
1
0
Primeri
• Konstruisati DFA koji prihvata jezik
L = {010, 1} ( Σ = {0, 1} )
Primeri
• Konstruisati DFA koji prihvata jezik
• Odgovor
L = {010, 1} ( Σ = {0, 1} )
qε
q0
q1
q01 q010
qdie0, 1
0
1 0
0, 11
0 1
0, 1
Primeri
• Konstruisati DFA nad azbukom {0, 1} koji prihvata sve stringove koji završavaju sa 101
Primeri
• Konstruisati DFA nad azbukom {0, 1} koji prihvata sve stringove koji završavaju sa 101
• Putokaz: DFA mora “zapamtiti” poslednja 3 bitastringa koji čita
Primeri
0
1
…
…
……
qε
q0
q1
q00
q10
q01
q11
q000
q001
q101
q111
0
1
0
1
0
1
1
1
1
1
0
• Konstruisati DFA nad azbukom {0, 1} koji prihvatasve stringove koji završavaju na 101
• Skica odgovora:
Nedeterminizam
Da li bi bilo lakše ako…
• Pretpostavimo da možemo da pogadjamo kada string koji čitamo ima samo 3 preostala simbola
• Onda bi jednostavno mogli da potražimo sekvencu 101i da prihvatimo kada je vidimo
qdie
1 0 13 preostala simbola
Ovo nije DFA!
Nedeterminizam
• Nedeterminizam je sposobnost pogadjanja, koju kasnije možemo verifikovati
• Neformalni nedeterministički algoritmi za stringove koji završavaju na 101:
1. Pogoditi da li se prilazi kraju ulaza
2. Ako je pogodak da, tražiti 101 i prihvatiti ako se vidi
3. Ako je odgovor ne, pročitati jedan simbol više i ići na korak 1
Nedeterministička konačna automatizacija
• Ovo je vrsta automatizacije koja nam dozvoljava da pogadjamo
• Svako stanje može imati nula, jednu, ili više prelaza (tranzicija) obeleženih istim simbolom
1 0 1
0, 1
q0 q1 q2 q3
Semantika pogadjanja
1 0 1
0, 1
q0 q1 q2 q3
• Stanje q0 ima dva prelaza označena sa 1
• Nakon čitanja 1, imamo izbor da ostanemo u stanju q0ili da se pomerimo u stanje q1
Semantika pogadjanja
1 0 1
0, 1
q0 q1 q2 q3
• Stanje q1 nema prelaza označenih sa 1
• Nakon čitanja 1 u q1, zaustavljamo se (eng. die); nakon čitanja 0, nastavljamo do q2
Semantika pogadjanja
1 0 1
0, 1
q0 q1 q2 q3
• Stanje q3 nema prelaza koje izlaze iz njega
• Nakon čitanja bilo čega u q3, zaustavljamo se (eng. die)
Značenje automatizacije
1 0 1
0, 1
q0 q1 q2 q3
Pogodite da li ste 3 simbolaod kraja ulaza
Ako jeste, pogodite da li ćete videti sekvencu 101
Proverite da li ste na kraju ulaza
Primer
• Konstruisati NFA nad azbukom {0, 1} koja prihvataone stringove koji sadrže sekvencu 001
Primer
• Konstruisati NFA nad azbukom {0, 1} koja prihvata one stringove koji sadrže sekvencu 001
• Odgovor
0 0 1
0, 1
q0 q1 q2 q3
0, 1
Primer
• Konstruisati NFA koji prihvata sve stringove sa parnim brojem 0-la ili neparnim brojem 1-ca
r0 r1
1 1
0
0Paran broj 0-la
s0 s1
0 0
1
1Neparan broj 1-ca
q0
ε
ε
ε-prelazi Se mogu uzeti za džabe (bez čitanja ulaza)
Formalna definicija
• Nedeterministička konačna utomatizacija (NFA) je5-člani skup (Q, Σ, δ, q0, F) gde
– Q predstavlja konačan skup stanja
– Σ predstavlja azbuku
– δ: Q× (Σ ∪ {ε}) → podskup od Q je funkcija prelaza
– q0 ∈ Q je početno stanje
– F ⊆ Q je skup prihvatnih stanja (ili konačnih stanja).
• Razlike u odnosu na DFA:
– Funkcija prelaza δ može ići u nekoliko stanja
– Dozvoljeni su ε-prelazi
Primer
azbuka Σ = {0, 1}stanja Q = {q0, q1, q2}
početno stanje q0prihvatno stanje F = {q2}
stan
ja
ulazi
0 1
q0q1q2
{q1}
tabelafunkcije prelaza δ:
∅
{q0, q1}
∅
∅
∅
q0ε, 1 0
0
εq1 q2
ε
{q1}
{q2}
∅
Jezik od NFA
Jezik od NFA je skup svih stringova za koje postojineka putanja takva da, počinjući iz q0, vodi do prihvatnog stanja dok se string čita sa leva na desno (i ε-prelazi se uzimaju po potrebi).
• Primer
ε, 00, 001, 101 su prihvaćeni, ali 11, 0110 nisu
q0ε, 1 0
0
εq1 q2
Primeri
q0ε, 1
ε
0
q1 q2
q0ε, 1
ε
0
q1 q2
ε1
2
00
0
01
2
3
4
5
q0ε, 1
ε
0
q1 q2
01
2 3
4
q0ε, 1
ε
0
q1 q2
01
2
3
54
ili
ili
Primeri
q0ε , 1
ε
0
q1 q2
15
001
0
q0ε, 1
ε
0
q1 q2
01
4
q0ε, 1
ε
0
q1 q2
01
2
3
4
1012
3
11
q0ε, 1
ε
0
q1 q2
01
2
STOP
STOP
NFA su moćni kao i DFA
• Očigledno, NFA može uraditi sve što i DFA može
• Ali, može li uraditi više?
NFA su moćni kao i DFA
• Očigledno, NFA može uraditi sve što i DFA može
• Ali, može li uraditi više?
• Teorema
Ako je jezik L prihvaćen od nekog NFA, onda jeisto tako prihvaćen od nekog DFA.
NE!
Konverzija NFA u DFA
Dokaz teoreme
• Pokazaćemo generalni način konvertovanja svakogNFA u ekvivalentni DFA
• Korak 1: Pojednostaviti NFA eliminacijom ε-prelaza
• Korak 2: Konvertovati pojednostavljeni NFA (bez ε-na) u DFA
Ovo radimo prvo
Intuicija konverzije NFA u DFA
1 0
0, 1
q0 q1 q2NFA:
DFA: 1q0 q0 or q1
1
q0 or q2
1
0 0
0
Intuicija konverzije NFA u DFA
1 0
0, 1
q0 q1 q2NFA:
DFA: 1q0 {q0, q1}
1
{q0, q2}
1
0 0
0
Generalna metoda
NFA DFAstanja q0, q1, …, qn ∅, {q0}, {q1}, {q0,q1}, …, {q0,…,qn}
Jedan za svako podskup stanja u NFA
Početno stanje
q0 {q0}
prelazi δ δ’({qi1,…,qik}, a) =
δ(qi1, a) ∪…∪ δ(qik, a)
Prihvatna stanja
F ⊆ Q F’ = {S: S sadrži neka stanja u F}
Zašto metoda radi?
• Na kraju, DFA prihvata kada je u stanju koje sadržineka prihvatna stanja od NFA
• Tako da DFA prihvata samo kada NFA prihvata
Nakon čitanja n simbola, DFA je u stanju{qi1,…,qik} ako i samo ako je NFA u jednom od stanja qi1,…,qik
Konvertovanje pomoću generalne metode
1 0
0, 1
q0 q1 q2NFA:
DFA:{q0, q1}
{q0, q2} {q0, q1, q2}
{q1, q2}
{q0}
{q1}
{q2}
∅
0, 1
0
1
0
1
0, 1
0
1
0 1
0
1
0
1
Konvertovanje pomoću generalne metode
{q0, q1}
{q0, q2} {q0, q1, q2}
{q1, q2}
{q0}
{q1}
{q2}
∅
0, 1
0
1
0
1
0, 1
0
1
0 1
0
1
0
1
Nakon eliminisanja “dead” stanja i prelaza, završavamo sa istom sikom
Dokaz teoreme
• Pokazaćemo generalni način konverzije svakog NFA u ekvivalentni DFA
• Korak 1: Pojednostaviti NFA eliminacijom ε-prelaza
• Korak 2: Konvertovati pojednostavljeni NFA (bez ε-na) u DFA
Eliminacija ε-prelaza
q0 q1 q2ε, 1 0
0
εεNFA:
Tabela prelaza odgovarajućeg NFA:st
anja
ulazi
0 1
q0q1q2
{q1, q2}{q0, q1, q2}
{q0, q1, q2}
∅
∅
∅
Prihvatna stanja od NFA: q0, q1, q2
Eliminacija ε-prelaza
q0 q1 q2ε, 1
0
0
εNFA:
NFA bez ε-na: q0 q1 q20, 1
0
0
0
0, 1
0
Eliminacija ε-prelaza: Generalna metoda
• Za svako stanje qi i svaki simbol a ∈ Σ, zameniti svaku putanju iz qi kao
• Za svako prihvatno stanje qf, napraviti prihvatnim sva
stanja vezana sa njim preko ε-na:
q4
qi q5 q2 q0 q5ε ε εa qi
q5
a
ε
ε
qi q5a qi
a
ε ε
ε
q9 q7 q3 qf