Kertust: kielet j utomtit Lskennllisen ongelmn rtkisevi tietokoneohjelmi j -litteit voidn trkstell utomttein ICS-C2 Tietojenkäsittelyteori Luento 2: Äärelliset utomtit Alto-yliopisto Perustieteiden korkekoulu Tietotekniikn litos Kevät 26 x = 483 x = 5899 def isprime(x): return res true flse Akkosto: äärellinen joukko symbolej, esim Σ = {,,2,,9} Kieli: joukko Σ:n merkkijonoj, esim {x Σ x on lkuluku} = {,2,3,5,7,,} {x {x,x,,xff} x on virusvp tietokoneohjelm} Millinen utomtti trvitn nnetun ongelmn rtkisemiseen (eli kielen tunnistmiseen)? Voiko kikki ongelmt rtkist jollin utomtill? 2/39 Alue j iheet Orposen prujun luvut 2 23 (ti Sipserin kirjn luku ) Äärellisen utomtin rkenne j sen esitystpoj Äärellisen utomtin toimint Semnttisten toimintojen liittäminen utomtteihin Äärellisten utomttien j niiden toiminnn trkk mtemttinen esitys eli formlisointi Äärelliset utomtit 3/39 4/39
Tilkviot j tiltulut 2c 2c c c c c 2 3 enough Trkstelln luksi tietojenkäsittelyjärjestelmiä, joill on vin äärellisen mont mhdollist til Tällisen järjestelmän toimint voidn kuvt äärellisenä utomttin t äärellisenä tilkoneen (engl finite utomton, finite stte mchine) Äärellisillä utomteill on useit vihtoehtoisi esitystpoj: tilkviot, tiltulut, 2c 2c c 2c more thn enough Em tilkvion esittämä utomtti rtkisee päätösongelmn riittävätkö nnetut rht khvin ostmiseen? Äärellisiä utomttej voidn yleensäkin käyttää yksinkertisten päätösongelmien rtkisujen mllintmiseen Automttimllist on muitkin kuin binäärivsteisten järjestelmien kuvmiseen trkoitettuj versioit (ns Moore- j Mely-utomtit), mutt niitä ei käsitellä tällä kurssill c 2c 5/39 6/39 Tilkvioiden merkinnät: q Automtin til nimeltä q C-kielen etumerkittömät liukuluvut q 7 q Alkutil q q f q q 2 Lopputil q f : utomtti hyväksyy syötejonon, jos se jonon loppuess on tällisess tilss Syötemerkin iknsm siirtymä tilst q tiln q 2 q q q 2 q 3 exp exp exp q 4 q 6 Sekä lyhennysmerkintä: q, b, c q 2 q b c q 2 +,- Käytetyt lyhenteet: = {,,,9}, exp = {E,e} q 5 7/39 8/39
Äärellisen utomtin esitys tiltulun: utomtin uusi til vnhn tiln j syötemerkin funktion Liukulukuutomtin tiltulu: exp + q q q 7 q q q 2 q 4 q 2 q 3 q 4 q 3 q 3 q 4 q 4 q 6 q 5 q 5 q 5 q 6 q 6 q 6 q 7 q 3 K: Mitä tiltulun tyhjät pikt trkoittvt? V: Tiltulun tyhjät pikt, ti vstvsti tilkvion puuttuvt kret, kuvvt utomtin virhetilnteit Jos utomtti ohjutuu tälliseen pikkn, syötejono ei kuulu utomtin hyväksymään joukkoon Muodollisesti utomtiss jtelln olevn erityinen virhetil, jot ei vin selkeyden vuoksi merkitä näkyviin missä ilmisee lkutil j lopputil 9/39 /39 Liukulukuutomtin täydellinen kvioesitys olisi: +,- q q exp, +,- error, exp,,+,- exp j liukulukuutomtin täydellinen tuluesitys olisi: exp + q q q 7 error error error q q q 2 q 4 error error q 6 q 6 error error error error error error error error error error /39 2/39
22 Äärellisiin utomtteihin perustuv ohjelmointi Annetun äärellisen utomtin pohjlt on helppo lti utomtin toimint vstv ohjelm Liukulukuutomttiin perustuv syötejonon syntksitestus Pythonohjelmointikielellä: from sys import s t d i n q= f o r c i n s t d i n r e d l i n e ( ) s t r i p ( " \ n " ) : i f q==: i f c i s d i g i t ( ) : q= e l i f c== " " : q=7 e l i f q==: i f c i s d i g i t ( ) : q= e l i f c== " " : q=2 e l i f c== "E" or c== " e " : q=4 e l i f q==7: i f c i s d i g i t ( ) : q=3 i f q i n [ 2, 3, 6 ] : p r i n t " I s v l i d f l o t i n g p o i n t number " else : p r i n t " Not f l o t i n g p o i n t number " 3/39 4/39 Semnttisten toimintojen liittäminen äärellisiin utomtteihin Khdeksnjärjestelmän lukuj tunnistv utomtti j siihen perustuv syöteluvun rvonmääritys ( muuttminen kymmenjärjestelmään ) Lyhennysmerkintä d = {,,,7} q +, q d q 2 d d Pelkän syntksitestin toteutus: from sys import s t d i n q= f o r c i n s t d i n r e d l i n e ( ) s t r i p ( " \ n " ) : i f q==: i f c== " + " or c== " " : q= e l i f c i n " 234567 " : q=2 e l i f q==: i f c i n " 234567 " : q=2 e l i f q==2: i f c i n " 234567 " : q=2 i f q==2: p r i n t " Octl numerl " else : p r i n t " Not n o c t l numerl " 5/39 6/39
Täydennys syöteluvun rvon lskevill opertioill ( luvun muuttminen kymmenjärjestelmään ): from sys import s t d i n q= sgn= # SEM: sign vl = # SEM: bsolute vlue f o r c i n s t d i n r e d l i n e ( ) s t r i p ( " \ n " ) : i f q==: i f c== " + " : q= e l i f c== " " : sgn= ; q= e l i f c i n " 234567 " : v l = i n t ( c ) ; q=2 e l i f q==: i f c i n " 234567 " : v l = i n t ( c ) ; q=2 e l i f q==2: i f c i n " 234567 " : v l =8 * v l + i n t ( c ) ; q=2 i f q==2: p r i n t " Octl numerl ; deciml p r e s e n t t i o n i s ", sgn * v l else : p r i n t " Not n o c t l numerl " Sivupolku: hiemn lisää iheest Äärellisiä utomttej voidn käyttää käytöksen suunnittelun j toteutuksen pun esim peleissä: linkki j linkki 2 Myös kurssin tietokonekotitehtävissä käytetyn utomttieditorin käyttöliittymän logiikk voidn nähdä j on suunniteltu utomttin ( jos olemme tilss lisää siirtymä j tulee tphtum krisymboli klikttu, siirry litiln muokk krisymbolijoukko jne) Adoben ActionScript lnguge ( the progrmming lnguge for the Adobe Flsh Plyer nd Adobe AIR runtime environments ) sisältää tuen utomteille (ktso kpple kirjss Snders nd Cumrntunge: ActionScript 3 Design Ptterns) Wikipedist voi lukist vikkp rtikkelit tphtumpohjisist utomteist j utomttipohjisest ohjelmoinnist 7/39 8/39 23 Äärellisen utomtin käsitteen formlisointi Meknistinen mlli: syötenuh: nuhpää: ohjusyksikkö: i n p u q q 2 Äärellinen utomtti M koostuu äärellistilisest ohjusyksiköstä, jonk toimint säätelee utomtin siirtymäfunktio δ, sekä merkkipikkoihin jetust syötenuhst j nämä yhdistävästä nuhpäästä, jok kullkin hetkellä osoitt yhtä syötenuhn merkkiä q δ t Automtin toimint : Automtti käynnistetään erityisessä lkutilss q, siten että trksteltv syöte on kirjoitettun syötenuhlle j nuhpää osoitt sen ensimmäistä merkkiä Yhdessä toimint-skeless utomtti lukee nuhpään kohdll olevn syötemerkin, päättää ohjusyksikön tiln j luetun merkin perusteell siirtymäfunktion mukisesti ohjusyksikön uudest tilst, j siirtää nuhpäätä yhden merkin eteenpäin Automtti pysähtyy, kun viimeinen syötemerkki on käsitelty Jos ohjusyksikön til tällöin kuuluu erityiseen (hyväksyvien) lopputilojen joukkoon, utomtti hyväksyy syötteen, muuten hylkää sen Automtin tunnistm kieli on sen hyväksymien merkkijonojen joukko 9/39 2/39
Edellisen klvon snllinen määritelmä voi jättää tulkinnnvr (mitä tphtuu tyhjällä syötteellä ε, jne) Täsmällinen, mtemttinen muotoilu: Määritelmä Äärellinen utomtti on viisikko missä M = (Q,Σ,δ,q,F), Q on utomtin tilojen äärellinen joukko; Σ on utomtin äärellinen syötekkosto; δ : Q Σ Q on utomtin siirtymäfunktio; q Q on utomtin lkutil; F Q on utomtin (hyväksyvien) lopputilojen joukko Liukulukuutomtin formli esitys: M = ({q,,q 7,error},{,,,9,,E,e,+,-}, δ,q,{q 2,q 3,q 6 }), missä δ on kuten iemmin tulukoss; esim δ(q,) = δ(q,) = = δ(q,9) = q, δ(q,) = q 7, δ(q,e) = δ(q,e) = error, δ(q,) = q 2, δ(q,e) = δ(q,e) = q 4, jne 2/39 22/39 Automtin käytöksen formlisointi Edellinen määritelmä kuvsi utomtin rkenteen mutt ei vielä sen käytöstä Myös käytös voidn kuvt trksti mtemttisesti prin lisämääritelmän vull Automtin tilnne on pri (q,w) Q Σ Erityisesti utomtin lkutilnne syötteellä x on pri (q,x) Intuitio: q on utomtin til j w on syötemerkkijonon jäljellä olev, so nuhpäästä oikelle sijitsev os Esimerkki Muun muss seurvt ovt liukulukuutomtin tilnteit: (q,25e2), (q,ee33), (error,e33), (q,25e2), (q 6,ε) Syötteellä 242E utomtin lkutilnne on (q,242e) Tilnne (q,w) joht suorn tilnteeseen (q,w ), merkitään (q,w) M (q,w ), jos on w = w ( Σ) j q = δ(q,) Tällöin snotn myös, että tilnne (q,w ) on tilnteen (q,w) välitön seurj Intuitio: utomtti ollessn tilss q j lukiessn nuhll olevn merkkijonon w = w ensimmäisen merkin siirtyy tiln q j siirtää nuhpäätä yhden skelen eteenpäin, jolloin nuhlle jää merkkijono w Jos utomtti M on yhteydestä selvä, reltiot voidn merkitä yksinkertisesti (q,w) (q,w ) Esimerkki Pohdi miksi liukulukuutomtill (i) pätee (q,25e2) (q,25e2), (ii) ei päde (q,25e2) (q 6,5E2), j (iii) tilnteell (q 6,ε) ei ole välittömiä seurji 23/39 24/39
Tilnne (q,w) joht tilnteeseen (q,w ) t tilnne (q,w ) on tilnteen (q, w) seurj, merkitään (q,w) M (q,w ), jos on olemss välitilnnejono (q,w ), (q,w ),, (q n,w n ), n, siten että (q,w) = (q,w ), (q,w ) M (q,w ), (q,w ) M (q 2,w 2 ) (q n,w n ) M (q n,w n ) j (q n,w n ) = (q,w ) Erikoistpuksen n = sdn (q,w) M (q,w) millä thns tilnteell (q, w) Jälleen, jos utomtti M on yhteydestä selvä, merkitään yksinkertisesti (q,w) (q,w ) Automtti M hyväksyy merkkijonon x Σ, jos on voimss muuten M hylkää x:n (q,x) M (q f,ε) jollkin q f F; Toisin snoen: utomtti hyväksyy x:n, jos sen lkutilnne syötteellä x joht, syötteen loppuess, johonkin hyväksyvään lopputilnteeseen Automtin M tunnistm kieli määritellään: L(M) = {x Σ (q,x) M (q f,ε) jollkin q f F} 25/39 26/39 Merkkijonon 25E2 käsittely liukulukuutomtill: (q,25e2) (q,25e2) (q 2,25E2) (q 3,5E2) (q 3,E2) (q 4,2) (q 6,ε) Kosk q 6 F = {q 2,q 3,q 6 }, on siis 25E2 L(M) Vihtoehtoinen määritelmä (Sipserin kirjst) Automtin hyväksymät snt voitisiin määritellä myös ilmn tilnnett Kulloinkin jäljellä olev syöte ei tällöin näy suorn esityksestä Määritelmä Olkoon M = (Q,Σ,δ,q,F) äärellinen utomtti M hyväksyy merkkijonon w = w w 2 w n Σ jos on olemss jono r r r 2 r n Q utomtin tiloj siten, että r = q δ(r i,w i+ ) = r i+ pätee kikille i < n r n F L(M) = {w Σ M hyväksyy w:n} Liukulukuutomtti hyväksyy merkkijonon 25E2 kosk ylläminitut ehdot täyttyvät tiljonoll q q q 2 q 3 q 3 q 4 q 6 27/39 28/39
Hiemn lisää esimerkkejä Kielet j {w {,} w sisältää prillisen määrän symboli } {w {,} w sisältää limerkkijonon } voidn tunnist seurvill utomteill: e o b c d, Tiln selitys voisi oll ei oll vielä nähty merkkijono j edellinen merkki ei ollut Mitkä voisivt oll muiden utomtin tilojen selitykset? Luse Jos L Σ voidn tunnist äärellisellä utomtill, niin myös kieli L = {w Σ w / L} voidn Todistus Otetn mikä thns äärellinen utomtti M L = (Q,Σ,δ,q,F), jok tunnist kielen L (eli L(M L ) = L) Kosk utomtin til suorituksen lopuss on yksikäsitteinen mille thns syötemerkkijonolle, smme äärellisen utomtin komplementtikielelle L = {w Σ w / L} yksinkertisesti vihtmll kikki hyväksyvät lopputilt ei-hyväksyviksi j päinvstoin eli M L = (Q,Σ,δ,q,Q \ F) 29/39 3/39 Edellisen esimerkin utomtist kielelle L = {w {,} w sisältää limerkkijonon } smme tällä konstruktioll komplementtikielen L = {w {,} w ei sisällä limerkkijono } hyväksyvän utomtin: b c d, Luse Jos kielet A,B Σ voidn tunnist äärellisellä utomteill, niin myös kieli A B = {w Σ w A j w B} voidn Todistus Olkoot M A = (Q A,Σ,δ A,q A,,F A ) j M B = (Q B,Σ,δ B,q B,,F B ) äärellisiä utomttej, jotk tunnistvt kielet A j B Tehdään utomtti M A B = (Q A B,Σ,δ A B,q A B,,F A B ), jok simuloi kumpkin utomtti yhtäik j hyväksyy merkkijonon jos j vin jos kumpikin utomtti hyväksyisi Q A B = Q A Q B eli utomtin tilt ovt prej, jotk pitävät kirj siitä, missä tilss simuloitvt utomtit A j B olisivt q A B, = (q A,,q B, ) eli lkutilss kummtkin simuloitvt utomtit olisivt lkutilss 3/39 32/39
δ A B ((q,q B ),σ) = (δ A (q A,σ),δ B (q B,σ)) eli siirrytään uuteen tiln niin, että se vst niitä tiloj, joihin simuloitvt utomtit olisivt päättyneet luettun smn merkin σ, j F A B = F A F B eli hyväksytään joss kumpikin simuloitv utomtti hyväksyisi Nyt voitisiin näyttää induktioll syöte merkkijonon pituuden suhteen, että jos utomtti A on syötteen lukemisen jälkeen tilss q j utomtti B tilss q B, niin silloin utomtti M A B on tilss (q A,q B ) (Vstvi konstruktioit kierroksen 3 demotehtävissä) Tehdään esitetyllä konstruktioll utomtti, jok hyväksyy snt, jotk sisältävät sekä prillisen määrän symboli että lisnn Lähtöutomtit: e o b c d Tulos: (e, ) (e, b) (e, c) (e, d) (o, ) (o, b) (o, c) (o, d), 33/39 34/39 Sivupolku: joitin muit utomttiluokki Äärelliset utomtit ovt ehkäpä yksinkertisin utomttiluokk Niiden ljennuksi on pljon, seurvill klvoill olevien lisäksi mm: Pinoutomtit: trkstelln myöhemmin kurssill Ajstetut utomtit: ljentvt äärellisiä utomttej relilukurvoisill kelloill (ktso esim johdntortikkeli j eräs työklu) Hybridiutomtit: sllivt yleisemmän relilukurvoisten muuttujien käytön, käytetään mllintmn tietokoneohjelmien j -litteiden j fyysisten prosessien välistä vuorovikutust Turingin koneet: trkstelln myöhemmin kurssill 35/39 36/39
Äärettömät merkkijonot Tällä kurssill trkstelln vin äärellisiä merkkijonoj mutt joisskin sovelluksiss trvitn myös äärettömiä syötteitä: Esimerkiksi rektiivisiss järjestelmissä (serverit, protokollt, jne) suorituksen ei välttämättä oletet päättyvän ollenkn Äärettömille merkkijonoille on määritelty useit utomttiluokki Esim Büchi-utomtit hyväksyvät äärettömän merkkijonon jos hyväksyvässä tilss käydään äärettömän usein Sovellusesimerkkinä: spin verifiction tool Büchi-utomtti, jok hyväksyy kkoston {, b, c} äärettömät merkkijonot, joiden prillisiss positioiss on b, c s s Nyt bccb hyväksytään mutt bbccb j bcccb hylätään Büchi-utomtti, jok hyväksyy kkoston {req, ck, dt} äärettömät merkkijonot, joiss jokist req-symboli ( request, pyyntö ) seur myöhemmin ck-symboli ( cknowledgement, kuittus ) ck req s s req, dt ck, dt 37/39 38/39 Muuntimet Äärellistiliset muuntimet (engl trnsducers) eivät hylkää/hyväksy syötettä vn muuntvt sen toiseksi merkkijonoksi Esimerkiksi Mooren koneet liittävät tulosteen lskennn tiloihin s / b, c b, c b, c s / s 2 / input: stte: output: b c c s s s s s s 2 s 2 s kun ts Melyn koneet sllivt tulosteen riippu myös nykyisestä syötemerkistä: b/, c/ input: b c c / stte: s s s s s s s s s s output: b/, c/ / Käytetään yleisimmin litteistosuunnitteluss (syötekkosto on joukko kellotettuj signlej jne); kokeile nettihku termillä Mely mchine 39/39