43
Rezime: Konačni automati

Konacni Automati

  • Upload
    -

  • View
    73

  • Download
    2

Embed Size (px)

DESCRIPTION

Konacni Automati

Citation preview

Page 1: Konacni Automati

Rezime:Konačni automati

Page 2: Konacni 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

Page 3: Konacni Automati

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

Page 4: Konacni Automati

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 δ:

Page 5: Konacni Automati

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:

Page 6: Konacni Automati

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}

Page 7: Konacni Automati

Primeri

• Konstruisati DFA nad azbukom {0, 1} koji prihvatasve stringove sa najviše tri 1-ce

Page 8: Konacni Automati

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

Page 9: Konacni Automati

Primeri

• Konstruisati DFA koji prihvata jezik

L = {010, 1} ( Σ = {0, 1} )

Page 10: Konacni Automati

Primeri

• Konstruisati DFA koji prihvata jezik

• Odgovor

L = {010, 1} ( Σ = {0, 1} )

q0

q1

q01 q010

qdie0, 1

0

1 0

0, 11

0 1

0, 1

Page 11: Konacni Automati

Primeri

• Konstruisati DFA nad azbukom {0, 1} koji prihvata sve stringove koji završavaju sa 101

Page 12: Konacni Automati

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

Page 13: Konacni Automati

Primeri

0

1

……

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:

Page 14: Konacni Automati

Nedeterminizam

Page 15: Konacni Automati

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!

Page 16: Konacni Automati

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

Page 17: Konacni Automati

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

Page 18: Konacni Automati

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

Page 19: Konacni Automati

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

Page 20: Konacni Automati

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)

Page 21: Konacni Automati

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

Page 22: Konacni Automati

Primer

• Konstruisati NFA nad azbukom {0, 1} koja prihvataone stringove koji sadrže sekvencu 001

Page 23: Konacni Automati

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

Page 24: Konacni Automati

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)

Page 25: Konacni Automati

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

Page 26: Konacni Automati

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}

Page 27: Konacni Automati

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

Page 28: Konacni Automati

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

Page 29: Konacni Automati

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

Page 30: Konacni Automati

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?

Page 31: Konacni Automati

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!

Page 32: Konacni Automati

Konverzija NFA u DFA

Page 33: Konacni Automati

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

Page 34: Konacni Automati

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

Page 35: Konacni Automati

Intuicija konverzije NFA u DFA

1 0

0, 1

q0 q1 q2NFA:

DFA: 1q0 {q0, q1}

1

{q0, q2}

1

0 0

0

Page 36: Konacni Automati

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}

Page 37: Konacni Automati

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

Page 38: Konacni Automati

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

Page 39: Konacni Automati

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

Page 40: Konacni Automati

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

Page 41: Konacni Automati

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

Page 42: Konacni Automati

Eliminacija ε-prelaza

q0 q1 q2ε, 1

0

0

εNFA:

NFA bez ε-na: q0 q1 q20, 1

0

0

0

0, 1

0

Page 43: Konacni Automati

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