Jezike tehnologije 2 Konani automati ta su automati

  • Slides: 30
Download presentation
Jezičke tehnologije 2 Konačni automati

Jezičke tehnologije 2 Konačni automati

Šta su automati? • Automat je idealizovana mašina za obavljanje nekog izračunavanja • Automat

Šta su automati? • Automat je idealizovana mašina za obavljanje nekog izračunavanja • Automat je matematički formalizam a ne fizički objekat. • Za svaki automat se mora specifikovati ulaz na koji reaguje i izlaz koji proizvodi • Vezu između ulaza i izlaza određuje struktura ili unutrašnja organizacija automata. 2

Vrste automata • Automati kod kojih je izlaz potpuno određen ulazom su neprobabilistički automati.

Vrste automata • Automati kod kojih je izlaz potpuno određen ulazom su neprobabilistički automati. Ako se za dati ulaz može proizvesti više izlaza pri čemu je svakom pridružena verovatnoća javljanja, to su probabilistički automati. • Ulaz i izlaz automata mogu da budu kontinuirane vrednosti, ili diskretne vrednosti. Automati koji su u vezi s teorijom formalnih jezika su diskretni automati. • Ulaz i izlaz su niske simbola koji se pojavljuju u susednim ćelijama na ulaznoj i izlaznoj traci. 3

Struktura automata • Sekvenca sa ulaza određuje u svakom trenutku stanje automata, a stanje

Struktura automata • Sekvenca sa ulaza određuje u svakom trenutku stanje automata, a stanje određuje mogući izlaz. • Struktura automata se prikazuje preko stanja i načina na koji ulaz određuje prelaz iz jednog stanja u drugo, i kako to utiče na izlaz. • Struktura automata je snabdevena memorijom, jer stanje u kome se automat nalazi u opštem slučaju zavisi od cele sekvencije do tada pročitanog ulaza. • Kod automata koji nema memoriju, stanje bi uvek zavisilo od poslednjeg pročitanog ulaznog simbola. 4

Konačni automati • Konačni automati su automati koji imaju konačan broj stanja i to

Konačni automati • Konačni automati su automati koji imaju konačan broj stanja i to je njihova jedina memorija. • Moćniji automati se mogu definisati dodavanjem memorijske trake; • Samo najjednostavniji automati su konačni, jer ako bi se u stanja automata uvrstio i sadržaj pomoćnih memorijskih traka, onda bi automati imali beskonačan broj stanja. 5

Izlaz automata • Automat obavlja određeno “izračunavanje” pa se može reči da automat izračunava

Izlaz automata • Automat obavlja određeno “izračunavanje” pa se može reči da automat izračunava funkciju f(x), pri čemu je x niska sa ulaza, a f(x) je izlazna niska. • U matematičkoj lingvistici je posebno značajna jedna vrsta automata, a to su oni kod kojih je izlaz karakteristična funkcija podskupa A skupa S. • F(x) = 1, ako je x A, i F(x) = 0, ako je x S-A • Ako je S = Σ* skup svih niski nad alfabetom Σ i konstruišemo automat čiji su ulazni simboli iz alfabeta Σ, izlazni simboli 0 i 1, onda automat računa karaterističnu funkciju podskupa A od S. • To jest, automat prepoznaje ili prihvata jezik A. • Ovo je veza između automata i formalnih jezika 6

Završno stanje automata • Umesto da se govori o izlazu automata često se govori

Završno stanje automata • Umesto da se govori o izlazu automata često se govori o završnom stanju automata. • Ulazna niska je prepoznata ako se posle izračunavanja automat nalazi u završnom stanju. • Umesto da kažemo da je na izlazu niska 1. • Ulazna niska nije prepoznata ako se posle izračunavanja automat ne nalazi u završnom stanju. • Umesto da kažemo da je na izlazu niska 0. • U matematičkoj lingvistici je od velikog značaja ekvivalencija određenih klasa automata i određenih klasa gramatika u odnosu na jezike koje automati prihvataju, to jest, gramatike generišu. 7

Definicija konačnih automata • Konačan automat je sistem • < V, Σ, R, F

Definicija konačnih automata • Konačan automat je sistem • < V, Σ, R, F > • Pri čemu je: V ulazni alfabet {a 0, a 1, a 2, . . . , ak} Σ je skup stanja automata {s 0, s 1, s 2, . . . , sn} s 0 je početno stanje automata (s 0 Σ) R je skup pravila prelaska koji su oblika (si, aj) → sk što znači da ako je automat u stanju si i na ulazu se učita aj onda automat prelazi u stanje sk. • F je skup završnih stanja automata (F Σ); Skup završnih stanja može da obuhvati i početno stanje s 0. • • 8

Ulazna azbuka automata V={0, 1} Pravila prelaska početno stanje završno stanje Svako stanje treba

Ulazna azbuka automata V={0, 1} Pravila prelaska početno stanje završno stanje Svako stanje treba da napusti onoliko lukova koliko ima simbola u ulaznom alfabetu. Proizvoljan broj lukova može da ulazi u neko stanje. 9

Ulazna traka i promena stanja automata Ponašanje automata se može predvideti ako se prati

Ulazna traka i promena stanja automata Ponašanje automata se može predvideti ako se prati korak po korak prelazak iz stanja u stanje prateći ulaznu traku i strelice u dijagramu. Važnije je da se utvrdi opšte tvrđenje, tj. koji jezik koji automat prihvata. 10

Koji jezik prihvata ovaj automat? • Uočava se da je automat u završnom stanju

Koji jezik prihvata ovaj automat? • Uočava se da je automat u završnom stanju s 0 kada je pročitao paran broj jedinica, a u stanju s 1 koje nije završno kada je pročitao neparan broj jedinica. • Učitane 0 ne utiču na stanje automata. • Ovaj automat prihvata niske: • 0010100 • 0110101. . . • ali i niske: • 000000. . . , • Pa i praznu nisku ε 11

Prepoznavanje jezika • Za učitanu nisku se kaže da je automat prihvata ili prepoznaje

Prepoznavanje jezika • Za učitanu nisku se kaže da je automat prihvata ili prepoznaje ako se poslednjeg učitanog simbola automat nalazi u završnom stanju. • Jezik koji automat prihvata je skup svih niski prihvaćenih automatom • Dakle automat prihvata regularni jezik L = {0*10*1}* • Ako se početno stanje nalazi u skupu završnih stanja onda automat prihvata i praznu nisku ε. • U tom slučaju jezik koji automat prihvata nije prazan je prihvata bar ε. • Jezik je prazan ako se automat ni za jednu nisku s ulaza neće naći u završnom stanju. 12

Stanja koja blokiraju automat Često se dešava da za veliki broj parova (si, aj)

Stanja koja blokiraju automat Često se dešava da za veliki broj parova (si, aj) automat blokira, tj. dolazak u završno stanje više nije moguć. Uvodi se zasebno stanje φ takvo da je (φ, aj ) → φ, za svaki simbol iz alfabeta V, a φ nije u skupu završnih stanja. Automat prepoznaje niske: a, ababa, abababa, . . . Jezik koji automat prihvata je: L = {a(ba)*} 13

Pojednostavljenje istog automata Stanje koje blokira se može izostaviti 14

Pojednostavljenje istog automata Stanje koje blokira se može izostaviti 14

Automat prepoznaje niske: acf, ade, abbde, acfabce. . . Jezik koji automat prihvata: L

Automat prepoznaje niske: acf, ade, abbde, acfabce. . . Jezik koji automat prihvata: L = (ab*(c|d)(e|f))* 15

Pojednostavljenje automata Ako se iz stanja si može preći u stanje sj učitavanjem više

Pojednostavljenje automata Ako se iz stanja si može preći u stanje sj učitavanjem više simbola ulaznog alfabeta, onda se u dijagramu stanja može nacrtati jedan luk iz stanja si u stanje sj koji je obeležen svim simbolima ulaznog alfabeta za koje postoje pravila (si, x) → sj x V, 16

Nacrtati dijagram stanja automata 17

Nacrtati dijagram stanja automata 17

Koje niske prihvata ovaj automat • Nisku 01011 ne prihvata – prolazi kroz stanja:

Koje niske prihvata ovaj automat • Nisku 01011 ne prihvata – prolazi kroz stanja: • s 0, s 1, s 2, s 0 • Nisku 0011 prihvata: • s 0, s 1, s 2 • Nisku 11001101 prihvata: • s 0, s 1, s 2, s 0, s 1, s 2 • Nisku 01010111111: prihvata • s 0, s 1, s 2, s 0, s 1, s 2 • Automat prihvata niske koje sadrže 2+3 n (n>=0) jedinica: 18

Nacrtati dijagram stanja automata 19

Nacrtati dijagram stanja automata 19

Koje niske prihvata ovaj automat • Automat prihvata niske: • aabaab, . . .

Koje niske prihvata ovaj automat • Automat prihvata niske: • aabaab, . . . • Automat prihvata jezik • L = (aab)* 20

K-ograničeni automati: stanje automata može uvek da se odredi na osnovu poslednjih k ili

K-ograničeni automati: stanje automata može uvek da se odredi na osnovu poslednjih k ili manje učitanih simbola Jezik koji automat prihvata: L = (ab*(c|d)(e|f))* U svakoj koloni matrice prelaska 1 -ograničenog automata samo jedno stanje nije stanje φ koje blokira rad automata 21

Automat koji nije 1 -ograničen • Kada prihvati simbol b može da bude samo

Automat koji nije 1 -ograničen • Kada prihvati simbol b može da bude samo u stanju so. • Kada prihvati simbol a može da bude u stanju s 1 ili s 2. • Posle aa je u stanju s 2, posle ab u stanju so, posle ba u stanju s 1, niska bb nikada nije prihvaćena. • Automat je 2 -ograničen. a b so s 1 φ s 1 s 2 φ s 0 22

Automat koji nije k-ograničen • Automat može da prihvati proizvoljnu dugačku nisku 0 a

Automat koji nije k-ograničen • Automat može da prihvati proizvoljnu dugačku nisku 0 a da bude u stanju s 0, s 1 ili s 2 0 1 s 0 s 1 s 1 s 2 s 2 s 0 23

Konstruisati dijagram stanja automata koji prihvata niske 0 i 1 koje sadrže podnisku od

Konstruisati dijagram stanja automata koji prihvata niske 0 i 1 koje sadrže podnisku od bar 3 uzastopne 1 24

Automat nije k-ograničen • Automat može da prihvati proizvoljan broj 0 a da bude

Automat nije k-ograničen • Automat može da prihvati proizvoljan broj 0 a da bude u stanju s 0 ili s 3 0 1 s 0 s 2 s 0 s 3 s 3 25

Ekvivalentni automati • Dva automata su ekvivalentna ako prihvataju tačno isti jezik • Dva

Ekvivalentni automati • Dva automata su ekvivalentna ako prihvataju tačno isti jezik • Dva dijagrama stanja su ekvivalentna ako su dijagrami stanja dva ekvivalentna automata • Dijagram stanja je redukovan ako ne postoji ekvivalentan dijagram stanja koji ima manji broj stanja. 26

Odrediti jezik koji prepoznaju automati Σ 1 a 2 Σ = {a, b} b

Odrediti jezik koji prepoznaju automati Σ 1 a 2 Σ = {a, b} b 3 a 4 Automat prihvata sve niske koje se završavaju sa aba; kako počinju nije od začaja L = (a|b)*aba 27

Odrediti jezik koji automat prihvata Σ 1 Σ b 2 Σ = sadrži b

Odrediti jezik koji automat prihvata Σ 1 Σ b 2 Σ = sadrži b i još nešto drugo Automat prihvata sve niske koje sadrže bar jedno b L = Σ*bΣ* 28

Konstruisati konačni automat koji prepoznaje jezik L = aab*ab b 1 a 2 a

Konstruisati konačni automat koji prepoznaje jezik L = aab*ab b 1 a 2 a 3 a 4 b 5 29

Konstruisati automate koji prepoznaju sledeće jezike 010*1 (010*1)* 0 0 1 2 1 3

Konstruisati automate koji prepoznaju sledeće jezike 010*1 (010*1)* 0 0 1 2 1 3 0 1 4 0 1 2 1 3 1 (010*1)*1 4 1 1 1(010*1)* 0 0 0 2 1 1 3 1 1 2 0 3 1 4 1 30