laskennan perusmallit (lap) - uef · 2013. 1. 4. · laskennan perusmallit (lap) pekka...

171
Laskennan perusmallit (LAP) Pekka Kilpel¨ ainen Tietojenk¨ asittelytieteen laitos, It¨ a-Suomen yliopisto s¨ahk¨oposti: [email protected] Lukuvuoden 2012–13 III periodi Versiohistoria: vuodet luennoija 2012–2013 Pekka Kilpel¨ ainen 2011–2012 Matti Nyk¨ anen 2007–2010 Kimmo Fredriksson Sis¨ alt¨ o 1 Kurssin asema opetuksessa 1 2 Kurssin asema tietojenk¨ asittelytieteess¨ a 2 2.1 Historiaa ..................................... 3 2.2 Kurssin sis¨ alt¨ o t¨ ast¨ a eteenp¨ ain ......................... 4 3 Johdanto 5 3.1 Laskennalliset ongelmat ............................ 6 3.2 at¨ osongelmat ja formaalit kielet ....................... 9 3.3 Laskennallisten ongelmien ratkeavuus ..................... 14 3.3.1 Churchin–Turingin teesi ........................ 16 3.3.2 Pys¨ ahtymisongelman ratkeamattomuus ................ 17 4 ann¨ olliset kielet ja ¨ arelliset automaatit 19 4.1 ¨ arellisen automaatin esitystapoja ...................... 21 4.2 ¨ arellisen automaatin formaali m¨ arittely .................. 23 4.3 ann¨ ollinen kieli ................................ 25 4.4 ¨ arellisen automaatin laskentavoimasta .................... 28 4.5 Sovelluksista ................................... 31 4.6 Automaatin minimointi ............................. 33 4.7 Ep¨ adeterministiset ¨ arelliset automaatit ................... 39 4.8 ann¨ olliset lausekkeet ja kielet ........................ 52 4.9 ann¨ olliset lausekkeet ja ¨ arelliset automaatit ................ 59 4.9.1 ann¨ ollisest¨ a lausekkeesta automaatti ................ 60 4.9.2 Automaatista s¨ ann¨ ollinen lauseke .................. 61 4.10 S¨ ann¨ ollisten kielten sulkeumaominaisuudet ................. 67 4.11 S¨ ann¨ ollisten kielten rajoituksista ....................... 69 i

Upload: others

Post on 22-Jan-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Laskennan perusmallit (LAP)

Pekka KilpelainenTietojenkasittelytieteen laitos, Ita-Suomen yliopisto

sahkoposti: [email protected]

Lukuvuoden 2012–13 III periodi

Versiohistoria:vuodet luennoija2012–2013 Pekka Kilpelainen2011–2012 Matti Nykanen2007–2010 Kimmo Fredriksson

Sisalto

1 Kurssin asema opetuksessa 1

2 Kurssin asema tietojenkasittelytieteessa 22.1 Historiaa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32.2 Kurssin sisalto tasta eteenpain . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Johdanto 53.1 Laskennalliset ongelmat . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63.2 Paatosongelmat ja formaalit kielet . . . . . . . . . . . . . . . . . . . . . . . 93.3 Laskennallisten ongelmien ratkeavuus . . . . . . . . . . . . . . . . . . . . . 14

3.3.1 Churchin–Turingin teesi . . . . . . . . . . . . . . . . . . . . . . . . 163.3.2 Pysahtymisongelman ratkeamattomuus . . . . . . . . . . . . . . . . 17

4 Saannolliset kielet ja aarelliset automaatit 194.1 Aarellisen automaatin esitystapoja . . . . . . . . . . . . . . . . . . . . . . 214.2 Aarellisen automaatin formaali maarittely . . . . . . . . . . . . . . . . . . 234.3 Saannollinen kieli . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.4 Aarellisen automaatin laskentavoimasta . . . . . . . . . . . . . . . . . . . . 284.5 Sovelluksista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314.6 Automaatin minimointi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334.7 Epadeterministiset aarelliset automaatit . . . . . . . . . . . . . . . . . . . 394.8 Saannolliset lausekkeet ja kielet . . . . . . . . . . . . . . . . . . . . . . . . 524.9 Saannolliset lausekkeet ja aarelliset automaatit . . . . . . . . . . . . . . . . 59

4.9.1 Saannollisesta lausekkeesta automaatti . . . . . . . . . . . . . . . . 604.9.2 Automaatista saannollinen lauseke . . . . . . . . . . . . . . . . . . 61

4.10 Saannollisten kielten sulkeumaominaisuudet . . . . . . . . . . . . . . . . . 674.11 Saannollisten kielten rajoituksista . . . . . . . . . . . . . . . . . . . . . . . 69

i

Page 2: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

5 Kontekstittomat kielet ja pinoautomaatit 785.1 Kontekstittomien kielten sulkeumaominaisuuksista . . . . . . . . . . . . . . 875.2 Saannolliset ja kontekstittomat kielet . . . . . . . . . . . . . . . . . . . . . 88

5.2.1 Aarellista automaattia vastaava lineaarinen kielioppi . . . . . . . . 895.2.2 Lineaarista kielioppia vastaava aarellinen automaatti . . . . . . . . 90

5.3 Pinoautomaatti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 925.3.1 Deterministiset ja epadeterministiset pinoautomaatit . . . . . . . . 985.3.2 Pinoautomaatit ja kontekstittomat kielet . . . . . . . . . . . . . . . 100

5.4 Kielioppien jasennysongelma . . . . . . . . . . . . . . . . . . . . . . . . . . 1055.5 Cocke-Younger-Kasami-algoritmi . . . . . . . . . . . . . . . . . . . . . . . 1165.6 Tehokkaammat jasennysmenetelmat . . . . . . . . . . . . . . . . . . . . . . 130

5.6.1 LL(1)-kielioppi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.6.2 LR-kieliopeista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

5.7 Kontekstittomien kielten rajoituksista . . . . . . . . . . . . . . . . . . . . . 146

6 Laskennan ”filosofiaa” 1506.1 Turingin kone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1506.2 Algoritmin maaritelma . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1536.3 Ratkeamattomuudesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1546.4 Laskennan vaativuusteoriasta . . . . . . . . . . . . . . . . . . . . . . . . . 1556.5 Ongelmien vaikeusluokitukset ja palautukset . . . . . . . . . . . . . . . . . 158

7 Summa summarum 162

Viitteet

Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman. Compilers: Principles,Techniques, and Tools. Addison Wesley, second edition, 2007.

Michael R. Garey and David S. Johnson. Computers and Intractability: A Guide to theTheory of NP-Completeness. Freeman, 1979.

John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman. Introduction to AutomataTheory, Languages and Computation. Addison Wesley, second edition, 2001.

John R. Levine, Tony Mason, and Doug Brown. Lex & Yacc. O’Reilly, second edition,1992.

Harry R. Lewis and Christos H. Papadimitriou. Elements of the Theory of Computation.Prentice-Hall, second edition, 1981.

Michael Sipser. Introduction to the Theory of Computation. Course Technology, secondedition, 2005.

Thomas A. Sudkamp. Languages and Machines: An Introduction to the Theory of Com-puter Science. Addison Wesley, second edition, 1997.

ii

Page 3: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1 Kurssin asema opetuksessa

• Tietojenkasittelytieteen paaaineopiskelijoille pakollinen aineopintokurssi (3 op).

• Esitietovaatimukset:

Johdatus tietojenkasittelytieteeseen (JTT): Laskennan, algoritmin ja tieto-koneen kasitteet.

Diskreetit rakenteet (DSR): Sovelletaan joitakin diskreetin matematiikan pe-ruskasitteita, kuten puita ja verkkoja. Lisaksi molemmilla kursseilla lahestymis-tapa ja ajatusmaailma on matemaattinen (eika esimerkiksi ohjelmointitekni-nen).

Tietorakenteet 1 (TRA1): Kaytetaan joitakin siella selostettuja perustietora-kenteita, kuten pinoja ja puita. Lisaksi viitataan joihinkin siella esiteltyihinkasitteisiin, kuten asymptoottiseen aikavaativuuteen.

• Kiinnostuneille lisaa valinnaisilla syventavien opintojen jatkokursseilla:

Algoritmien suunnittelu ja analyysi (ASA): Tata kurssia laajemmat perus-

tiedot ns. P?= NP-ongelmasta seka teoreettisesta etta algoritmisuunnittelun

nakokulmasta.

Laskennan teoria (LAT): Syvallisemmin tasta ongelmasta ja muistakin talla kurs-silla esitellyista asioista.

• Tama P?= NP-ongelma onkin tunnetuin esimerkki laskennan vaativuusteorian

kasittelemista ongelmista.

Yksi (mutta ei laheskaan ainoa!) tapa lukea se on:

P = sellaiset laskentaongelmat, joiden vastaukset voi laskea tavallisella tietokoneellatehokkaasti

NP = voisi jos koneeseen lisattaisiin ”maaginen konekasky”

valitse hyppaatko nyt riville X vaiko riville Y

joka jotenkin aina osaisi valita juuri oikein.

Silloin kysymys on: “Voisiko tavallinen tietokone aina loytaa itsekin oikean valinnannopeasti?”

• Yleisesti uskotaan, etta ei voisi:

Uskotaan, etta on sellaisia ongelmia ja tilanteita, joissa on vaistamatta hidastaloytaa se oikea valinta.

• Tama P?= NP-ongelma on kuitenkin osoittautunut

teoriassa hyvin vaikeaksi ratkaista — se on yha avoin, ja on saatu tuloksia “aina-kaan menetelmalla X sita ei voi ratkaista” erilaisille lahestymistavoille X .

kaytannossa merkittavaksi, koska monet kaytannon ongelmat ovat osoittautuneetns. NP-vaikeiksi, eli sellaisiksi etta jos yksikin niista voitaisiin ratkaista tehok-kaasti (eli se kuuluisi luokkaan P) niin sen avulla ne kaikki muutkin voitaisiinratkaista tehokkaasti.

1

Page 4: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Clay Mathematics Institute onkin valinnut sen yhdeksi seitsemasta Millennium-ongelmastaan, ja antaa sen ratkaisusta palkinnoksi 1 000 000 USD! (http://www.claymath.org/millennium/)

• Jo tietojenkasittelijan yleissivistykseen kuuluu tuntea peruskasitteet kuten “lasken-taongelma” jne., ja taman kurssin tavoitteena onkin tutustuttaa niihin.

Oppimateriaali

• Nama luentomuistiinpanot ovat wikissa:

http://wiki.uef.fi

→tkt-wiki

→Kurssien kotisivuja - Course homepages

→LAP - Laskennan perusmallit (3621317, 3op).

• Pohjautuvat Kimmo Fredrikssonin ja Matti Nykasen luentoihin edellisilta vuosilta.

• Pelkat muistiinpanot eivat valttamatta riita itseopiskeluun, vaan voivat vaatia tuek-seen joko luentojen tai jonkun oppikirjan seuraamista.

• Esimerkiksi kirjan Hopcroft, John E., Motwani, Rajeev ja Ullman, Jeffrey D.: Int-roduction to Automata Theory, Languages and Computation, 2. painos (AddisonWesley, 2001) luvut 1–8.2, 9–9.3 ja 10 kattavat valtaosan kurssin asioista (naitaluentoja yksityiskohtaisemmin).

Naista asioista on julkaistu monia muitakin oppikirjoja, kuten esimerkiksi Lewis andPapadimitriou (1981), Sipser (2005) ja Sudkamp (1997), joita voi myos kayttaa.

2 Kurssin asema tietojenkasittelytieteessa

• Eraan maaritelman mukaan tietojenkasittely tutkii

1. millaiset tietojenkasittelytehtavat on mahdollista automatisoida ja

2. miten tama automatisointi tulisi suorittaa.

• Useimpien kurssien lahestymistapa on yleensa konstruktiivinen, eli kohta 2.

Esimerkiksi TRA: Kehitetaan annetun laskentaongelman tehokkaasti ratkaiseva al-goritmi ja sen tarvitsemat tietorakenteet.

• Talla kurssilla painoalue onkin kohdassa 1. Osoittautuu, etta on olemassa erilaisiatehtavia; sellaisia

1. joita ei edes periaatteessa voi automatisoida — algoritmin olemassaolo on loo-ginen mahdottomuus.

2. jotka voi automatisoida, mutta vain tehottomasti — tehokasta algoritmia eivoi olla olemassa.

3. jotka voi automatisoida ja tehokkaasti — tehokaskin algoritmi on keksitty:luokka P.

4. joista emme viela tieda ovatko ne tehokkaasti ratkaistavissa vai aidosti tyolaita;erityisesti pateeko NP ! P?

2

Page 5: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

2.1 Historiaa

• Laskentaongelman kasitteen muotoilu seka ongelmien erottelu automatisoitumatto-miin (eli tyyppiin 1) ja automatisoituviin tehtiin 1930-luvulla.

– Siis jo ennen tietokoneita! (Ensimmaiset yleiskayttoiset tietokoneet rakennet-tiin pian II maailmansodan jalkeen.)

– Motivaationa oli matematiikan filosofian ja formaalin logiikan kehitys:

∗ Haluttiin erottaa toisistaan sellaiset matemaattiset ja loogiset ongelmat,jotka vaativat ”aitoa luovuutta”, sellaisista joihin riitti ”pelkka laskemi-nen”. . .

∗ . . . siis antaa tarkka formaali maaritelma arkikielen kasitteelle ”mekaani-nen laskenta”.

– Nain syntyi laskettavuuden teoria yhdeksi keskeiseksi osaksi matemaattista lo-giikkaa.

• Talla kurssilla esitetaan mekaaniselle laskennalle tarkka formaali maaritelma kayt-taen ns. Turingin koneita — tietokonepioneeri Alan M. Turingin vuonna 1936 esit-tamaa abstraktia matemaattista mallia hypoteettiselle laskulaitteelle.

• Samaan aikaan oli muitakin loogikkojen ehdotuksia mekaanisen laskennan maari-telmaksi, esimerkiksi:

Kurt Godel kehitti 1930-luvun alusta alkaen rekursiivisten funktioiden teoriaaosana kuuluisan (ensimmaisen) epataydellisyyslauseensa todistusta.

Ideana oli induktio: funktion “seuraava” arvo f(n+1) voidaan maaritella “edel-lisen” arvon f(n) avulla, jossa n ∈ N.

Alonzo Church esitti vuonna 1936 oman λ-laskentansa.

Ideana oli laskenta lausekkeen sievennyksena.

Nama taas olivat tarkeita ohjelmoinnin ja ohjelmointikielten kehitykselle.

Talla kurssilla niita ei kasitella, mutta kurssilla Johdatus funktionaaliseen ohjel-mointiin (FOH) sivutaan λ-laskentaa.

• Miksi valittiin Turingin ”laitelahtoinen” lahestymistapa mekaanisen laskennan maa-ritelmaksi eika Godelin tai Churchin ”ohjelmointilahtoista”?

– Eksplisiittinen ”laite joka kulkea raksuttaa kuin kello” on konkreettisempikasite kuin ”induktio” tai ”sievennys” joiden voisi epailla sittenkin vaativansita ”aitoa luovuutta”. . .

– Laskentaan kuluva aika ja tila on helpompi maaritella laitteen kuin siina pyo-rivan ohjelman kautta.

• Tietokoneiden yleistymisen myota alettiin huomata, etta tama mekaaninen laskentajakautui edelleen vaivalloiseen (eli tyypin 2) ja vaivattomaan (eli tyypin 3) mekaa-niseen laskentaan.

– Yksi tapa selventaa tata jakoa on tutkia viela yksinkertaisempia laskulaittei-ta kuin Turingin kone. Tata automaattien teoriaa on kehitetty 1960-luvultalahtien. Talla kurssilla tutustummekin sen keskeisiin kasitteisiin kuten aarellisiinja pinoautomaatteihin.

3

Page 6: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Toinen tapa on asettaa resurssirajoja Turingin koneille. Tata laskennan vaati-vuusteoriaa on kehitetty 1970-luvulta lahtien. Sen keskeinen ongelma on juuri

edella mainittu P?= NP. Vaativuusteoria kuitenkin jatetaan valtaosin kurs-

seille ASA ja LAT.

2.2 Kurssin sisalto tasta eteenpain

1. Johdanto:

• Yleiskatsaus laskennan teoriaan, laskennan vaativuusteoriaan ja laskennan mal-leihin.

• Kurssilla kaytettavien kasitteiden ja notaatioiden maaritelmia.

2. Saannolliset kielet: aarelliset automaatit ja saannolliset lausekkeet.

• Aarelliset automaatit ovat mahdollisimman yksinkertaisia laskulaitteita.

• Saannolliset kielet taas ovat sellaisia merkkijonojoukkoja, joihin kuuluminenvoidaan ratkaista nailla laitteilla.

• Saannolliset lausekkeet taas ovat notaatio, jolla niita voidaan kuvata lyhyesti.

• Kun esimerkiksi kirjoitat Linuxin komentoriville ls *.jar niin

– kaytat saannollista lauseketta *.jar

– kuvailemaan saannollisen kielen ”kaikki sellaiset ASCII-merkkijonot, jotkapaattyvat merkkijonoon .jar”

– ja kone listaa sinulle kaikki ne taman hakemiston tiedostonimet, jotkataman kielen tunnistava automaatti hyvaksyy sen jaseniksi.

• Kaytannossa niihin tormaa esimerkiksi merkkijonoalgoritmeissa, hajautettujenjarjestelmien mallintamisessa seka dokumenttirakenteiden kaaviokielissa (ku-ten XML DTD ja XML Schema).

3. Kontekstittomat kielet ja kieliopit seka pinoautomaatit.

• Vastaavasti pinoautomaatit ovat hieman mutkikkaampia laskulaitteita ja kon-tekstittomat kielet niita, joita ne voivat tunnistaa.

• Ne ovat kaytannossa tarkeita rakenteisen syotteen kasittelyssa.

– Esimerkiksi HTML, XML seka rakenteisella ohjelmointikielella kirjoitet-tu lahdekoodi ovat rakenteisia syotteita, koska niissa on mielivaltaisenmutkikkaita sisakkaisyyksia, joista syotetta lukevan ohjelman pitaa ottaaselvaa.

– Esimerkiksi HTML-syotetta lukevan ohjelman pitaa loytaa korostuksenaloittavalle tagille <em> juuri oikea sita vastaava lopettava tag </em>, janiiden valissa voi olla muita senkaltaisia tagpareja, jotka pitaa samoinparittaa.

• Kontekstittomat kieliopit taas ovat naiden kielten kuvailutapa, vastaavasti kuinsaannolliset lausekkeet ovat saannollisille kielille.

4. Johdanto laskennan teoriaan, eli laskettavuuden teorian ja laskennan vaativuusteo-rian peruskasitteisiin.

Laskennallisesti vaativiin tai jopa kokonaan ratkeamattomiin ongelmiin tormaa esi-merkiksi tekoalyssa seka ohjelmien ja jarjestelmien formaalissa verifioinnissa.

4

Page 7: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

3 Johdanto

• Laskennan teoria (theory of computation) kasittelee sita, miten ongelma luokitellaanratkeavuuden, vaikeuden ja tehokkuuden perusteella ennen kuin se ratkaistaan. Sejaetaan perinteisesti kahteen osa-alueeseen:

Laskettavuuden teoria (theory of computability) tutkii, mita tietokoneella yli-paansa voidaan ratkaista ja kuinka vaikea annettu ongelma on. Ongelmien vai-keus maaritellaan melko karkealla tasolla sen perusteella, kuinka monimutkais-ta laskennan mallia ratkaisussa tarvitaan. Lisaksi laskettavuuden teoria antaahyvia evaita itse ratkaisun laatimiseen.

(LAP, LAT)

Laskennan vaativuusteoria (theory of computational complexity) tutkii, kuinkatehokkaasti ongelma voidaan ratkaista. Laskennan vaativuusteoria muistuttaaalgoritmien analyysia, mutta siina ei maaritella yksittaisen ratkaisualgoritminaika- tai tilavaativuutta, vaan itse ongelman pahimman tapauksen aika- ja tila-vaativuusluokka. Laskennan vaativuusteoria antaa myos hyvat evaat ongelmienpalauttamiseksi toisiin, jo tunnettuihin ongelmiin.

(LAT, ASA)

• Talla kurssilla kasitellaan jonkin verran laskennan teorian ensimmaista osa-aluettaeli laskettavuuden teoriaa.

• Aihepiirina ovat laskennalliset ongelmat ja niiden ratkaisun mekaaniset mallit, joitakutsutaan laskennan malleiksi.

• Kasittelemme kahta eri laskennan mallia

aarellisia automaatteja ja

pinoautomaatteja

seka tutkimme, mita kullakin mallilla voidaan ratkaista. Kurssin loppupuolella esi-tellaan lyhyesti myos Turingin koneet (joista enemman kurssilla LAT).

Laskettavuuden teoriasta

• Laskennan mekaaninen malli, automatisointi, tarkoittaa taman kurssin kannalta “al-goritmin esittamista”. Intuitiivisesti algoritmi kuvaa tietojenkasittelyprosessin niintasmallisesti, etta se voidaan taman kuvauksen perusteella suorittaa mekaanisesti(ilman “luovaa ajattelua”). Mekaanisen laskennan tarkemmaksi maarittelemiseksi,eli algoritmikasitteen matemaattiseksi formalisoimiseksi, on kaksi lahestymistapaa:

1. Lahdetaan liikkeelle tyhjasta ja mietitaan, mita voidaan pitaa mekaanisenalaskentana.

2. Otetaan lahtokohdaksi nykyiset tietokoneet, jotka selvasti suorittavat mekaa-nista laskemista, ja pelkistetaan pois epaolennaisuudet.

• Koska mekaaninen laskenta on keskeista matematiikan perusteiden tarkastelussa,matemaatikot ja loogikot miettivat asiaa paljon 1930-luvulla.

He sovelsivat luonnollisesti lahestymistapaa 1 — koska tietokoneita ei silloin vielaollut.

5

Page 8: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Jos taas halutaan soveltaa tuloksia kaytannon tietojenkasittelyyn, lahestymistapa 2tuntuisi lupaavammalta.

Tama on oleellisesti se tapa, jota kaytettiin esimerkiksi kurssilla TRA, kun siellalaskettiin asymptoottisia resurssitarpeita eli ”O-arvioita”.

• Onneksi osoittautuu, etta lahestymistavat 1 ja 2 johtavat samaan algoritmikasitteenformalisointiin.

Siis matemattista logiikkaa ja tietokoneita koskevilla periaatteellisilla rajoituksillaon syvallinen yhteys.

Laskettavuuden teoria tarkastelee naita rajoituksia, eli sita millaisille ongelmille onolemassa ratkaisualgoritmi.

Automaattiteoria

• Kun on saatu valmiiksi abstrakti malli tietokoneelle, voidaan kysya, mika muuttuu,jos mallista jatetaan jokin piirre pois. Rajoitettujen mallien tarkasteleminen auttaaymmartamaan yleisempia malleja.

Aarellinen automaatti on hyvin yksinkertainen (abstrakti) laskentalaite, jollakuitenkin voi tehda mielenkiintoisia asioita. Teoreettisen mielenkiinnon lisaksise on hyodyllinen kaytannossa ohjelmointi- ja mallinnustekniikkana.

Kontekstittomat kieliopit ovat hieman aarellisia automaatteja ilmaisuvoimai-sempi mekanismi, jolla on tarkeita sovelluksia esimerkiksi ohjelmointikieltenmaarittelemisessa ja kaantamisessa ja luonnollisen kielen mallintamisessa.

3.1 Laskennalliset ongelmat

• Laskennallinen ongelma = mika tahansa tehtava, joka voidaan mallintaa ratkaista-vaksi digitaalisella tietokoneella. (Kuva 1.)

• Laskennallisia ongelmia:

– kokonaislukujen kertolasku

– kirjastokortiston aakkostaminen

– yrityksen palkanlaskenta

– yliopistollisen kurssin kurssitietojen yllapito

– annetun kokonaislukulista jarjestaminen

– . . .

• Ongelman ratkaiseva ohjelma on sen yksi esitystapa.

• Mihin sijoittuu ongelma

Onko oikein huijata tentissa?

– Jos mielestasi tentissa huijaaminen on kaikissa olosuhteissa vaarin, niin silloinongelma on triviaalisti laskennallinen ja tehokkaasti ratkaistavissa:

Tietenkin voidaan kirjoittaa ohjelma, joka ei lue syotettaan, vaan tulostaa heti’’Ei!’’.

6

Page 9: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

LASKENNALLINENONGELMA

RATKEAVA RATKEAMATONONGELMA ONGELMA

OSITTAINRATKEAVA

TÄYSINRATKEAMATON

TEHOKKAASTIRATKAISTAVISSA

TEHOKASTARATKAISUA EI OLE

MISSÄ NÄIDEN VÄLINEN RAJA KULKEE?(useita eri asteita)

EI−LASKENNALLINENONGELMA

ONGELMA

Kuva 1: Ongelmien hyvin karkea luokittelu

– Jos taas mielestasi tentissa huijaaminen voi olla oikein joissakin lieventavissaolosuhteissa niin silloin on mietittava jatkokysymysta

Voiko nama olosuhteet kuvailla tyhjentavasti sanallisesti?

– Jos mielestasi naiden olosuhteiden kaikki relevantit aspektit voi kuvailla vaik-kapa jollakin sopivalla logiikalla, niin silloin ongelma on laskennallinen:

Jos olosuhteet ovat kuten tama kaava φ kuvailee, niin onko silloinoikein huijata tentissa vaiko ei?

∗ Tama φ on se syote, joka luetaan, ja jonka perusteella ratkaistaan onkovastaus ’’Kylla!’’ vaiko ’’Ei!’’.

∗ Ongelma on ratkeava, jos tama kaytetty logiikka on riittavan yksinkertai-nen; muuten ratkeamaton.Esimerkiksi lauselogiikka on ratkeava, predikaattilogiikka ratkeamaton.

∗ Vaikka ongelma olisikin ratkeava, se tuskin on tehokkaasti ratkaistavissa;looginen paattely on yleensa tyolasta tietokoneellekin.Esimerkiksi lauselooginen paattely on NP-vaikeaa eli luultavasti tyolasta.

– Jos taas katsot todellisuuden olevan niin monimutkainen ja hienosyinen, etta onmahdotonta kuvailla loogisesti kaikkia tallaiseen moraaliseen paatoksentekoonvaikuttavia aspekteja, niin silloin ongelma ei ole laskennallinen:

Silloin meilla ei ole riittavan ilmaisuvoimaista kielta jolla voisimme kuvaillaolosuhteet riittavan kattavasti ja tarkasti syotekaavaksi φ.

– Siis algoritminen tietojenkasittely eli laskenta on oleellisesti syntaktista mani-pulointia.

Ongelman esitys

• Laskennallinen ongelma = kuvaus aarellisesti esitettavien tapausten joukosta aarel-lisesti esitettavien vastausten joukkoon

– Ongelmalla on potentiaalisesti aareton joukko tapauksia (”syotteita”).

7

Page 10: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

...(2,4)

(2,3)

(1,1)

(1,2)

(1,3)...

(2,2)

2

...

8

6

3

4

1

jne.

Syötteet Tulosteet

π

Kuva 2: Kertolaskuongelman syotteet ja tulosteet.

– Ongelman ratkaisu on algoritmi, joka liittaa kuhunkin tapaukseen sen oikeanvastauksen (“tulosteen”).

– Jokaisen yksittaisen tapauksen ja sen vastauksen on oltava aarellisesti esi-tettavia (muutenhan laskenta ei paattyisi).

Esimerkki 1. Kokonaislukujen kertolaskuongelmassa (kuva 2)

tapauksia ovat kaikki kokonaislukuparit (p, q) (merkkijonoiksi koodattuna)

vastaus annetulle tapaukselle on kyseisen lukuparin tulo p · q (merkkijonoksi koodattuna)

ratkaisu on mika tahansa yleinen kertolaskualgoritmi (esimerkiksi koulussa opittu ”alak-kain laskeminen”).

Aarellinen esitys

• Kaikki tietokoneen kasittelema tieto taytyy viime kadessa koodata bittijonoiksi.

• On luontevaa sallia koodaukseen kaytettavan myos muita merkkeja kuin bitit 0 ja 1(koska nama muut merkit voidaan tietenkin tarvittaessa edelleen esittaa bittijonoi-na).

• Maaritelma: ”aarellinen esitys” = aarellisen pituinen merkkijono (eli jono merkkeja)jossakin aarellisessa aakkostossa.

Peruskasitteita: Aakkosto

Aakkosto on aarellinen, epatyhja joukko alkeismerkkeja eli symboleita.

• Esimerkiksi binaariaakkosto B = 0, 1 ja latinalainen aakkosto A, B, C, . . . , Z.• Aakkosto voidaan maaritella ihan miten halutaan, esim:

HiiriVasenNappi, HiiriOikeaNappi, HiiriKeskiNappi,HiiriRullaYlos, HiiriRullaAlas.

8

Page 11: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Peruskasitteita: Merkkijonot

Merkkijono on aarellinen jarjestetty jono jonkin aakkoston merkkeja.

Esim. “01001” ja “000” ovat binaariaakkoston B merkkijonoja, ja “LAP” ja “XYZZY”ovat latinalaisen aakkoston merkkijonoja.

Merkinta Σ∗ tarkoittaa kaikkien niiden merkkijonojen joukkoa, jotka voidaan muo-dostaa annetun aakkoston Σ eli merkkien merkeista. Siis

B∗ = ε, 0, 1, 00, 01, 10, 11, 000, . . . .

Tyhja merkkijono ε ei sisalla yhtaan merkkia. (Huom! Eri asia kuin valilyonti ).

Merkkijonon x pituus |x| on siihen sisaltyvien merkkien maara.

Esim. |01001| = |XYZZY| = 5 ja |ε| = 0.

Merkkijonojen katenointi ja kaantaminen

Katenaatio on merkkijonojen kirjoittamista perakkain, esimerkiksi:

• jos x = 00 ja y = 11, niin xy = 0011 ja yx = 1100;

• kaikilla x on xε = εx = x;

• kaikilla x ja y on |xy| = |x|+ |y|.

Toisto eli merkkijonon katenaatio itsensa kanssa voidaan merkita potenssina:

a3 = aaa

(ab2)3 = (abb)3

= abbabbabb.

Itse asiassa merkinta (. . .)∗ voidaankin lukea ”toisto mielivaltaisen (mutta aarellisen)monta kertaa”.

Kaanteismerkkijono xR on merkkijono x kirjoitettuna takaperin.

Esim. (abbc)R = cbba.

3.2 Paatosongelmat ja formaalit kielet

• Yleisesti laskennallinen ongelma π on kuvaus eli funktio π : Σ∗ → Γ∗ jossa Σ ja Γovat aakkostoja:

syoteaakkosto Σ on se jolla kysymys, ja

tulosaakkosto Γ on se jolla vastaus kirjoitetaan.

• Paatosongelmat ovat laskennallisten ongelmien aliluokka, jossa kunkin ongelmantapauksen vastaus on “kylla” tai “ei”.

Formaalisti paatosongelma on muotoa π : Σ∗ → B.

• Intuitio: Yksinkertaistetaan mutkikasta yleiskasitetta ”tietokoneohjelma” sellaisek-si, joka. . .

1. lukee syotteena saamaansa tekstitiedostoa

9

Page 12: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

0

1

Σ∗

A

πA

Kuva 3: Kielen A ⊆ Σ∗ paatos- eli tunnistusongelma πA.

2. kasittelee sita (eraajona, siis ”omin pain” keskustelematta kayttajan kanssatms.)

3. tulostaa lopuksi vastauksenaan kylla tai ei.

• Esimerkiksi paatosongelma “onko annettu kymmenjarjestelman luku alkuluku?”voidaan esittaa syoteaakkoston Σ = 0, 1, 2, . . . , 9 kuvauksena π : Σ∗ → B

π(x) =

1 jos merkkijonon x esittama luku on alkuluku,

0 jos ei.

• Yleisesti, jokaista paatosongelmaa π : Σ∗ → B vastaa merkkijonojoukko

Aπ = x ∈ Σ∗ | π(x) = 1

eli niiden ongelman tapausten joukko, joihin vastaus on “kylla”.

• Kaantaen, jokaista merkkijonojoukkoa A ⊆ Σ∗ vastaa paatosongelma (kuva 3)

πA : Σ∗ → 0, 1, πA(x) =

1, jos x ∈ A;0, jos x /∈ A.

Tata πA kutsutaan joukon A karakteristiseksi funktioksi koska se kertoo kuuluukoannettu x ∈ Σ∗ joukkoon A vaiko ei.

• Aakkoston Σ (formaali) kieli on mika tahansa merkkijonojoukko A ⊆ Σ∗

• Olemme kiinnostuneita siita, kuuluuko annettu merkkijono annettuun merkkijono-joukkoon, eli kuuluuko annettu sana annettuun kieleen.

• Kielen A ∈ Σ∗ tunnistusongelma on merkkijonojoukkoon A liittyva paatosongelma πA:”Tassa on merkkijono x ∈ Σ∗. Pateeko x ∈ A?”

• Jatkossa kasittelemme vain paatosongelmia.

– Huomaa etta tama ei periaatteessa ole rajoitus, koska ”monimutkaisemmat”kysymykset voi aina pilkkoa joukoksi ”kylla-ei”-kysymyksia. . .

10

Page 13: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Esimerkiksi monimutkaisempi kysymys ”Mika on lukujen x ja y tulo?” voidaanpilkkoa kysymyksiin ”Onko lukujen x ja y tulo = z vaiko ei?”

Esimerkki 2. Olkoon A aakkoston +,−, 0, 1, 2, . . . , 9 kieli, joka koostuu yksinkertai-sista kokonaislukuvakioista (esim. Java-kielessa). Siis 0 ∈ A, +7326 ∈ A ja −32 ∈ A,mutta 2 + 3 6∈ A.

Tama kieli A on esimerkki saannollisesta kielesta.

Esimerkki 3. Olkoon B aakkoston +,−, ∗, (, ), 0, 1, 2, . . . , 9 kieli, joka koostuu lail-lisista kokonaislukulausekkeista. Esim. 1 + 1 ∈ B ja (1 + 2 + 3) ∗ 4− 5 ∈ B, mutta(1 + 2)) 6∈ B ja 3+ 6∈ B.

Tama kieli B on esimerkki kontekstittomasta kielesta.

Esimerkki 4. Muodostukoon ASCII-aakkoston kieli C niista Java-kielisista ohjelmista,jotka tyhjalla syotetiedostolla joutuvat ikuiseen silmukkaan. Kieli C on esimerkki ratkea-mattomasta kielesta. Sita siis ei voida tunnistaa millaan tietokoneohjelmalla.

Esimerkki 5. Kieliak | k ∈ N

on saannollinen; kieli

akbk | k ∈ N

on kontekstiton;

kieliakbkck | k ∈ N

on kontekstillinen (eli sen kuvaaminen vaatii kontekstitonta voi-

makkaamman kieliopin).

Ongelman vaikeuden arviointi paatosongelmalla

• Tarkastellaan mielivaltaista laskentaongelmaa π:

– Syotteella x, palauta y = π(x)

ja vastaavaa paatosongelmaa:

– Pateeko syotteella (x, y), etta y = π(x)?

– Tata vastaa kielenLπ = (x, y) | y = π(x)

tunnistamisen ongelma.

• Ongelma π voisi esim. olla neliojuuren laskenta (vaikka alaspain pyoristaen, eliπ(x) = b

√xc).

• Tiedammeko yleisesti jotain naiden valisesta suhteesta?

• Jos laskentaongelma π on ratkeava, on sita vastaava paatosongelma myos ratkeava:Syotteella (x, y) voidaan ensin laskea z = π(x), minka jalkeen riittaa tarkistaa onkoz = y.

• Kaantaen: Jos paatosongelma ei ole ratkeava, myoskaan vastaava laskentaongelmaei ole ratkeava.

Laskentaongelman palauttaminen paatosongelmaan

• Toisaalta laskentaongelman voi ratkaista soveltamalla vastaavan paatosongelmanratkaisua (M3, kuva 4).

• Jos paatosongelma (komponentti M3) on

ratkeava niin ongelmakin on ratkeava

helppo (jossakin mielessa) niin ongelmakin on helppo (samassa mielessa; ainakinjos testattavia ratkaisuehdokkaita y ei ole liikaa).

11

Page 14: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Onko Tulostaon

ei

Generoi

Aseta

input x

ratkaisu y

seuraava y

M4

y = 0 π(x) = y

M1 M3

M2

Kuva 4: Laskentaongelma paatosongelmana.

Kurssin ratkeavuustuloksia

• Erityisesti, jos kieli A kuuluu

saannollisiin kieliin, niin sen tunnistusongelma πA voidaan ratkaista helposti ra-kentamalla sen ratkaiseva aarellinen automaatti;

kontekstittomiin niin rakentamalla pinoautomaatti;

rekursiivisiin niin rakentamalla Turingin kone.

• Jos kieli A ei kuulu edes rekursiivisiin kieliin, niin sen πA ei ole ratkeava lainkaan.Silloin se voi olla joko

osittain ratkeava eli voidaan tehda Turingin kone joka osaa vastata ”kylla” mutta”ei”-vastauksen sijasta voi myos jaada ikuiseen silmukkaan, tai sitten

vielakin vaikeampi jolloin se ei enaa ole tietojenkasittelyn vaan esimerkiksi ma-temaattisen logiikan ongelma.

Paatosongelmien ratkaisemisesta kaytannossa

• Kaytannossa paatosongelman ratkaiseminen ei useinkaan poikkea paljon vastaavanlaskentaongelman ratkaisemisesta.

• Harvoin esim. voidaan tehda paatosta vaikkapa jonkin reitin olemassaolosta ilmanetta loydetaan sellainen (mikali on olemassa).

• Kurssilla kasiteltaviin tunnistusmenetelmiin liitetaan kaytannossa yleensa myos muu-ta laskentaa.

• Esimerkiksi tietokoneohjelman syntaksin tarkistaminen ≈ kontekstittoman kielentunnistusongelma. Ohjelman jasennyksen yhteydessa kuitenkin yleensa myos tuote-taan kaannoksen kohdekoodi (tai siihen tarvittavat tietorakenteet).

Kielten vaikeusluokat

• Chomskyn kielihierarkia (kuva 5) maarittelee seuraavat kielten vaikeusluokat:

– Tyyppi 3: saannolliset kielet (erikoistapauksenaan aarelliset kielet).

12

Page 15: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

tyyppi 3: säännölliset kielet;

tunnistus: äärellinen automaatti

tunnistus: pinoautomaatti

tyyppi 2: kontekstittomat kielet

RAM−kone, ohjelmointikielet

rekursiiviset kielet

tunnistus: universaali Turingin kone (pysähtyy "kyllä" tapauksessa)

tyyppi 0: rajoittamattomat kielet

ratkeamattomat ongelmat

tyyppi 1: kontekstiset kielet

tunnistus: Turingin kone + kohtuullisen (eli polynomisen) mittainen työnauha

tunnistus: Turingin kone + riittävän mittainen työnauha (pysähtyy aina),

rekursiivisesti lueteltavat kielet

vakiomäärä muistia

äärelliset kielet

Kuva 5: Chomskyn kielihierarkia.

– Tyyppi 2: kontekstittomat kielet (tai ”yhteysvapaat” tai ”yhteydettomat”).

– Tyyppi 1: kontekstilliset kielet (tai ”kontekstiset” tai ”yhteyksiset”).

– Tyyppi 0: rajoittamattomat kielet = rekursiiviset ∪ rekursiivisesti lueteltavat(tai ”rekursiivisesti numeroituvat”) kielet.

• Noam Chomsky on merkittava kielitieteilija. Niinpa hanen hierarkiassaan on vas-taava kieliopillinen nakokulma: esimerkiksi

kontekstittomilla kielilla on suora yhteys tietynlaisiin formaaleihin kielioppeihinja

kontekstillisilla kielilla sellaisiin kielioppeihin, joissa huomioidaan myos ”lauseyh-teys”.

Esimerkki 6. Joillekin “yksinkertaisille” ohjelmointikielille (kuten Pascal) patee

• Leksikaalisesti oikeiden (“muodostuu oikeista sanoista”) ohjelmien joukko voidaantuottaa saannollisilla kielilla (“oikealle lineaarinen kielioppi”).

• Syntaktisesti oikeiden (“sanat jarkevassa jarjestyksessa”) ohjelmien joukko voidaantuottaa kontekstittomilla kielilla.

• Kontekstilliset ja rekursiiviset kielet eivat kuulu kurssin alueeseen, mutta naillavoitaisiin kuvata ohjelman suorittama laskenta. . .

• Toisaalta kaikkien ohjelmien joukkoa jotka ratkaisevat jonkin ongelman ei voi kuvatakieliopilla.

• Rajoittamattomat kielet koostuvat

rekursiivisista kielista, joiden tunnistusongelma on ratkeava

13

Page 16: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Laskennalliset ongelmat

Päätösongelmat

Ratkeavatpäätösongelmat

Kaikki binäärijonotΣ=0,1∗

Lailliset konekieliohjelmat

Päätösongelmien

ratkaisuohjelmat

Kuva 6: Laskennalliset ongelmat vs. ohjelmat.

rekursiivisesti lueteltavista kielista, joiden tunnistusongelma on osittain ratkea-va. Sellaisella kielella on ohjelma, joka tulostaa sen merkkijonot aarettomanaluettelona x0, x1, x2, . . . .

3.3 Laskennallisten ongelmien ratkeavuus

• Laheskaan kaikkia laskennallisia(kaan) ongelmia ei voida ratkaista tietokoneella —yksinkertaisesti jo siksi, etta ongelmia on ylinumeroituvan monta (”yhta monta kuinreaalilukuja R”) mutta ratkaisuohjelmia vain numeroituvan monta (”yhta montakuin luonnollisia lukuja N”).

Perustelu...

1. Tietokoneohjelmat ovat merkkijonoja.

2. Minka tahansa aakkoston merkkijonojen joukko on numeroituvasti aareton (lause 1).

3. ⇒ Ongelman ratkaisevia tietokoneohjelmia on korkeintaan numeroituva maara.

4. Laskennallisia ongelmia on vahintaan yhta paljon kuin paatosongelmia.

5. Minka tahansa aakkoston paatosongelmien joukko on ylinumeroituva (lause 2).

6. ⇒ Laskennallisia ongelmia on ylinumeroituvan monta.

7. ⇒ Jokaiselle laskennalliselle ongelmalle ei millaan riita sen ratkaisevaa tietokoneoh-jelmaa.

Aakkoston merkkijonoja on numeroituva maara

Lause 1. Minka tahansa aakkoston Σ merkkijonojen joukko Σ∗ on numeroituvasti aareton.

Todistus: Olkoon Σ = a1, a2, . . . , an. Kiinnitetaan merkeille jokin “aakkosjarjestys”,esim. a1 < a2 < · · · < an.

Joukon Σ∗ merkkijonot voidaan jarjestaa seuraavasti (kanoniseen jarjestykseen):

14

Page 17: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1. Ensin luetellaan 0:n mittaiset merkkijonot (= ε), sitten 1:n (= a1, a2, . . . , an), sitten2:n (= a1a1, a1a2, a1a3, . . . , a1an, a2a1, a2a2, a2a3, . . . ) jne.

2. Kunkin pituusryhman sisalla merkkijonot luetellaan aakkosjarjestyksessa.

Jokaiseen luonnolliseen lukuun n voidaan siis liittaa Σ∗:n merkkijono ja painvastoin,joten Σ∗ on numeroituva. 2

• Vaadittu bijektio f : N→ Σ∗ lauseessa 1 on:

0 7→ ε

1 7→ a1

2 7→ a2

...

n 7→ an

n + 1 7→ a1a1

n + 2 7→ a1a2

...

2n 7→ a1an

2n + 1 7→ a2a1

...

3n 7→ a2an

...

n2 + n 7→ anan

n2 + n + 1 7→ a1a1a1

n2 + n + 2 7→ a1a1a2

...

Paatosongelmia on ylinumeroituva maara

Lause 2. Minka tahansa aakkoston Σ paatosongelmien joukko on ylinumeroituva.

Todistus: Merkitaan aakkoston Σ kaikkien paatosongelmien kokoelmaa

Π = π | π on kuvaus Σ∗ → B .

Tehdaan vastavaite: Oletetaan, etta Π onkin numeroituva, eli etta on olemassa numerointi

Π = π0, π1, π2, . . ..

Olkoot Σ∗:n merkkijonot kanonisessa jarjestyksessa lueteltuina x0, x1, x2, . . .Muodostetaan uusi paatosongelma π:

π : Σ∗ → B, π(xi) =

1, jos πi(xi) = 0;0, jos πi(xi) = 1.

Koska oletuksen mukaan π ∈ Π (koska Π on kaikkien paatosongelmien joukko), niinπ = πk jollakin k ∈ N.

Talloin

π(xk) =

1, jos πk(xk) = π(xk) = 0;0, jos πk(xk) = π(xk) = 1.

Tama on ristiriita. Siis vastaoletus, etta joukko Π on numeroituva, on vaara. 2

15

Page 18: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Todistus 2 kuvana: Ajatellaan (aaretonta) taulukkoa ongelmista π0, π1, π2, . . . jamerkkijonoista x0, x1, x2, . . .. Ongelma π poikkeaa kaikista muista ongelmista πi

taulukon diagonaalilla, vaikka i kasvaisi aarettomaan:

π π0 π1 π2 π3 · · ·

x0

16 0 0 0 1 · · ·

x1 006 1 0 0 · · ·

x2 1 106 1 1 · · ·

x3 0 0 016 0 · · ·

......

......

.... . .

• Suomeksi: π ei voi esiintya taulukon millaan sarakkeella, joten paatosongelmia (jayleisemmin laskennallisia ongelmia) on ylinumeroituva maara.

(Eli π eroaa jokaisesta sarakkeesta ainakin yhdessa kohtaa.)

• Tama todistustekniikka on ns. Cantorin diagonaaliargumentti jolla han todisti, ettareaalilukuja 0 ≤ x < 1 on aidosti enemman kuin luonnollisia lukuja.

• Kaytannossa tama merkitsee sita, etta kaikista laskentaongelmista voidaan esimer-kiksi Java-ohjelmilla ratkaista vain haviavan pieni osa: ylinumeroituvan joukon nu-meroituva osajoukko.

• Sama patee kaikilla ohjelmointikielilla, silla kaikki riittavan vahvat ohjelmointikieletmaarittavat tasmalleen saman ratkeavien ongelmien luokan (ns. Churchin–Turinginteesi ; Tama teesi patee jopa hypoteettisiin kvanttitietokoneisiin, vaikka ne vaikut-tavatkin ratkaisevan joitakin laskentatehtavia oleellisesti tehokkaammin kuin muutlaskentamallit.).

• Useimmat laskennalliset ongelmat ovat siis absoluuttisesti ratkeamattomia.

• Valitettavasti ratkeamattomat ongelmat kasittavat myos monia mielenkiintoisia /kaytannollisia ongelmia, erityisesti pysahtymisongelman: jos on annettu ohjelma Pja sen syote w, niin pysahtyyko ohjelman P laskenta syotteella w vai jaako se ikui-seen silmukkaan?

(Tama ongelma on kuitenkin osittain ratkeava. . . )

3.3.1 Churchin–Turingin teesi

• Churchin–Turingin teesi vaittaa seuraavaa:

Epaformaalin kasitteen ”funktio f on mekaanisesti laskettavissa” oikeaformaali vastine on ”f on laskettavissa Turingin koneella”.

Siis etta on olemassa Turingin kone Mf joka syotteella x tulostaa sita vastaavanarvon f(x) ja pysahtyy.

16

Page 19: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Tama on teesi eika tulos: sita ei voi todistaa, koska sehan vaittaa etta nyt olemmeloytaneet juuri sen oikean maaritelman talle ”arkikielen” kasitteelle.

• Teesin tueksi voi esittaa seuraavaa:

⇐: Turingin koneet ovat niin yksinkertaisia laitteita, etta jos f on laskettavissakoneella Mf , niin silloin f on selvasti mekaanisesti laskettavissa.

⇒: Muutkin esitetyt yleisesti hyvaksytyt vaihtoehtoiset maaritelmat voidaan to-teuttaa myos Turingin koneilla.

Helppo suunta on nayttaa, etta annettu Turingin kone M voidaan toteuttaajollakin taman vaihtoehtoisen maaritelman mukaisella ohjelmalla PM .

Vaikea suunta on nayttaa, etta annettu taman vaihtoehtoisen maaritelmanmukainen ohjelmaQ voidaan toteuttaa myos jollakin Turingin koneella MQ— eli kaantaja.

• Tallaisia muita vaihtoehtoisia malleja ovat esimerkiksi

– edella mainitut Godelin ja Churchin omat ehdotukset

– RAM-koneet, jotka ovat idealisoitu malli nykyaikaiselle digitaaliselle tietoko-neelle

– jopa kaksilaskurikoneet, joissa on vain kaksi muuttujaa x, y ∈ N seka operaatiot”kasvata/vahenna muuttujan arvoa yhdella” ja testi ”if muuttujan arvo on= 0 then. . . ”

– John Conwayn ”Life”-peli, jne. . .

3.3.2 Pysahtymisongelman ratkeamattomuus

• Naimme edella, etta valtaosa paatosongelmista on ratkeamattomia – laskemalla,etta niita on paljon enemman kuin ratkaisualgoritmeja.

• Osoitetaan nyt yksi konkreettinen paatosongelma ratkeamattomaksi – eli etta rat-keamattomuus on joidenkin oikeidenkin ongelmien piirre, eika pelkka matemaatti-nen ilmio.

• Kiinnitetaan laskentamalliksemme vaikkapa C-ohjelmointikieli.

Church–Turingin teesin nojalla sama patee myos muillakin yhta ilmaisuvoimaisillalaskentamalleilla.

• Pysahtymisongelman C-kielinen tulkinta on:

Ei ole olemassa totaalista (aina pysahtyvaa) C-ohjelmaa, joka ratkaisisi,pysahtyyko annettu C-ohjelma P annetulla syotteella w.

• Tehdaan vastaoletus, etta voitaisiinkin kirjoittaa totaalinen C-funktio

bool h(char p[],char w[])

jonka syoteparametrit ovat

p: merkkijono, joka sisaltaa tutkittavan C-kielisen ohjelman P lahdekoodin

17

Page 20: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

w: merkkijono, joka sisaltaa tutkittavan syotteen w

ja jonka tulos on

true jos ohjelman p suoritus syotteella w pysahtyisi

false jos se jaisi ikuiseen silmukkaan.

• Vastaoletusta kayttaen voitaisiin kirjoittaa toinen C-funktio

void g(char p[])if (h(p,p)) while (true);

joka siis pysahtyy tasmalleen silloin, kun C-lahdekoodi p ei pysahtyisi saadessaansyotteenaan oman itsensa.

• Olkoon q taman funktion g lahdekoodi merkkijonona.

• Mita tapahtuu kutsussa g(q)?

Saadaan haluttu ristiriita:

g(q) pysahtyy⇔ h(q,q) palauttaa false

⇔ g(q) ei pysahdykaan!

Niinpa tehty vastaoletus ei padekaan. 2

• Tassa todistuksessa istutetaan ns. valehtelijan paradoksi ”Tama lause on valhetta!”totuuden sijasta laskennan pysahtymiseen.

• Samaa ideaa kaytti jo Kurt Godel kuuluisissa epataydellisyyslauseissaan istuttamal-la se totuuden sijasta todistuvuuteen: ”Talla vaitteella ei ole todistusta!”

Formalismista

• (Tietojenkasittely)tieteessa on arvokasta, etta laskenta saadaan esitetyksi tasmalli-sessa matemaattisessa muodossa.

• Jatkossa haluamme esittaa vaitteita muotoa: “Kaikki aarelliset automaatit toteut-tavat ehdon p” ja konstruktioita “Mista tahansa ehdon r toteuttavasta automaatistavoidaan muodostaa automaatti, joka toteuttaa ehdon s”.

• Onnistuu kylla tiettyyn rajaan saakka piirtamalla kuvia ja heiluttamalla kasia (ku-ten talla kurssilla varmaan paljolti tullaan tekemaan. . . ), mutta uskottavuuden jaymmarrettavyyden rajat tulevat melko pian vastaan.

• Matemaattinen formalismi on tyokalu, jota on hyva opetella kayttamaan. . .

18

Page 21: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

4 Saannolliset kielet ja aarelliset automaatit

• Aarellinen automaatti (engl. Finite (State) Automaton, FSA (tai FA)) on hyvinyksinkertainen laskennan malli (eli abstrakti laskentalaite).

• Saannolliset kielet (engl. regular languages) on se luokka laskentaongelmia, jonkanain yksinkertaisella laitteella pystyy ratkaisemaan.

• Nailla on sovelluksia esim. tekstihaussa ja ohjelmien syotteiden tunnistamisessa.

• Tavoitteet: oppia

– mita ovat aarelliset automaatit ja saannolliset lausekkeet ja mika on niidenvalinen suhde

– muodostamaan yksinkertaisia aarellisia automaatteja ja saannollisia lausekkei-ta (engl. regular expressions)

– tekemaan muunnoksia determinististen ja epadeterminististen aarellisten au-tomaattien ja saannollisten lausekkeiden valilla.

– osoittamaan kieli joko saannolliseksi tai ei-saannolliseksi.

Esimerkki 7. Kahviautomaatti, joka ei anna vaihtorahaa, hyvaksyy vain 50 sentin jayhden euron kolikoita ja minimimaksu on 2 euroa. Millaisia syotejonoja kahviautomaattihyvaksyy?

• Kelvollisia syotejonoja ovat esim. seuraavat (yksikkona snt):

50 + 50 + 50 + 50

100 + 100

50 + 100 + 100

100 + 50 + 50 + 100

Ts. kahviautomaatti hyvaksyy syotejonot, jotka ovat muotoa

50 senttia + 50 senttia + 50 senttia + 50 senttia

+ [0 tai useampia 50 sentin tai 1 euron kolikoita]

1 euro + 1 euro

+ [0 tai useampia 50 sentin tai 1 euron kolikoita]

50 senttia + 1 euro + 1 euro

+ [1 tai useampia 50 sentin tai 1 euron kolikoita]

1 euro + 50 senttia + 50 senttia + 1 euro

+ [1 tai useampia 50 sentin tai 1 euron kolikoita]

jne. . .

• Kahviautomaatin toiminta voidaan kuvata aarellisena automaattina.

• Automaatin syotteita ovat 50 sentin ja 1 euron kolikot ja automaatti hyvaksyy”syotejonon”, jos siihen sisaltyvien rahojen summa on vahintaan 2 euroa

• Automaatti voidaan esittaa tilasiirtymakaaviona (kuva 7).

19

Page 22: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

50

100

5050

100

50, 100

50, 100

100

q1

q0q2

q3

q4

Kuva 7: Kahviautomaatti.

• TRA-kurssin terminologialla se olisi suunnattu verkko jonka kaaret on painotettusyoteaakkosilla.

• Automaatilla on

tiloja (5 kappaletta), jotka on esitetty ympyroina ja nimetty q0, . . . q4,

siirtymia jotka on esitetty tilojen valisina kaarina;

aakkosto jonka symboleilla siirtymat on merkitty;

alkutila (tila q0) joka on merkitty tyhjasta tulevalla kaarella; ja

lopputila (tila q4) joka on rengastettu.

• Tilojen nimet ovat vapaavalintaisia, automaatin toimintaan ne eivat vaikuta.

• Jokaiseen kuvan 7 kahviautomaatin tilaan liittyy se tilanne, johon syotetyt lantitovat koneen asettaneet:

q0: Asiakas ei ole syottanyt viela yhtaan rahaa — alkutila(nne) jossa laite on, kunasiakas tulee sen luo ja alkaa syottamaan siihen lanttejaan

q1: Asiakas on syottanyt tasan 50 senttia rahaa.

q2: Asiakas on syottanyt tasan 1 euroa rahaa.

q3: Asiakas on syottanyt tasan 1 euro 50 senttia rahaa.

q4: Asiakas on syottanyt vahintaan 2 euroa rahaa — joten laite voi hyvaksya saa-neensa tarpeeksi rahaa, ja ryhtya annostelemaan kahvia.

• Kuvan 7 kahviautomaatille voi ajatella hyvin konkreettisen sahkomekaanisen raken-teen:

– Laitteessa on yksi kolo 1 euron ja toinen kolo 50 sentin kolikolle.

– Kun asiakas tyontaa kolikon oikeaan koloon, se sulkee virtapiirin, joka lahettaasahkopulssin relelaitteistolle. . .

– . . . joka ”raksahtaa” uuteen asentoon, joka vastaa seuraavaa tilaa.

20

Page 23: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

q q′a Tilasiirtyma δ(q, a) = q′

Tila qq

Alkutilaq0

Lopputila eli hyvaksyva tila

Kuva 8: Tilasiirtymakaavion merkinnat.

– Lopulta paastaan asentoon, jossa relelaitteisto kaynnistaa kahvin valmistuksen.

• Kun annetaan tehtavaksi suunnitella automaatti hyvaksymaan jonkin formaalinkielen A ⊆ Σ∗ niin kannattaa miettia

1. ensiksi millaisia tilanteita automaatin pitaa muistaa, jotta se voisi tehda oikeanpaatoksen siita, kuuluuko sen nykyinen syote x ∈ Σ∗ kieleen A vaiko ei.

– Nain saadaan automaattiin tarvittavat tilat.

– Kuvan 7 kahviautomaatissa muistetaan tahan mennessa syotetty rahasum-ma.

2. toiseksi miten naiden tilanteiden valilla siirrytaan, kun syotetta x luetaanmerkki merkilta.

– Nain saadaan automaattiin tarvittavat siirtymat.

– Kuvan 7 kahviautomaatissa jokainen lantti on oma merkkinsa, ja se vienykyisesta rahasummasta seuraavaan.

4.1 Aarellisen automaatin esitystapoja

Tilasiirtymakaaviona eli kuvien 7 ja 8 mukaisena piirroksena.

Tilasiirtymataulukkona jossa

• jokaisella tilalla on oma rivinsa

• jokaisella syoteaakkosella on oma sarakkeensa

• tilan p sarake c ilmoittaa sen tilan (eli rivin) jonne siirrytaan tilasta p merkilla c.

Kuvan 7 kahviautomaatin tilasiirtymataulukko on yhtalona (1).

50 snt 1 euro→ q0 q1 q2

q1 q2 q3

q2 q3 q4

q3 q4 q4

← q4 q4 q4

(1)

21

Page 24: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkki 8. Etumerkillisen kokonaisluvun tunnistaminen.Tilasiirtymakaaviona (jossa d = 0, 1, . . . , 9 ovat 10-jarjestelman lukumerkit):

q0 q1 q2d

d

d

+,−

Tilasiirtymataulukkona:d +,−

→ q0 q2 q1

q1 q2

← q2 q2

Taulukon puuttuvat kohdat vastaavat virhetilaa ”Error”.

Tehtava 1. C-kielessa 0-alkuiset luvut tulkitaan oktaaliluvuiksi (jolloin merkkeja 8 ja 9 eisallita lainkaan), ja 1 . . . 9 alkuiset 10-kantaisiksi luvuiksi. Muuta esimerkin 8 automaattiasiten, etta nama tapaukset erotellaan, eli etta ne johtavat eri hyvaksyviin tiloihin.

Tehtava 2. (Jatkoa tehtavaan 1.) C-kielessa 0x-alkuiset luvut tulkitaan heksadesimaali-luvuiksi. Ota tamakin huomioon.

Ohjelmana tassa C-ohjelmointikielella:

int q=0; int c;

while ((c=fgetc(stdin)) != EOF)

switch (q)

case 0: if (c==’+’ || c== ’-’) q=1;

else if (isdigit(c)) q=2;

else q=3;

break;

case 1: if (isdigit(c)) q=2;

else q=3;

break;

case 2: if (isdigit(c)) q=2;

else q=3;

break;

case 3: break;

Esimerkki 9. C-kielen etumerkittoman liukulukuvakion tunnistava automaatti:

d . E, e +,−→ 1 3 2

2 43 3 4 5

← 4 4 55 7 66 7

← 7 7

22

Page 25: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1

2

3

4

5

d

.

d

d

d

e,E

.

e,E

d7

+,− d

d

6

4.2 Aarellisen automaatin formaali maarittely

• Aarellinen automaatti M koostuu seuraavista osista:

ohjausyksikosta jossa on aarellinen maara tiloja ja jonka toimintaa ohjaa auto-maatin siirtymafunktio δ

syotenauhasta joka on jaettu yhden syotemerkin kokoisiin paikkoihin.

nauhapaasta joka kullakin hetkella osoittaa yhta syotenauhan merkkipaikkaa.

ui n p t

δ

q0

q1

q2

Automaatin toiminta

• Automaatti kaynnistetaan erityisessa alkutilassa q0, siten etta tarkasteltava syoteon kirjoitettuna syotenauhalle ja nauhapaa osoittaa sen ensimmaista merkkia.

• Yhdessa toiminta-askelessa automaatti lukee nauhapaan kohdalla olevan syotemer-kin, paattaa ohjausyksikon tilan ja luetun merkin perusteella siirtymafunktion mu-kaisesti ohjausyksikon uudesta tilasta, ja siirtaa nauhapaata yhden merkin eteenpain.

23

Page 26: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Automaatti pysahtyy, kun viimeinen syotemerkki on kasitelty. Jos ohjausyksikontila talloin kuuluu erityiseen (hyvaksyvien) lopputilojen joukkoon, niin automaattihyvaksyy syotteen, muuten hylkaa sen.

• Automaatin tunnistama kieli on sen hyvaksymien merkkijonojen joukko.

Maaritelma 1. Aarellinen automaatti on viisikko M = (Q, Σ, δ, q0, F ), missa

• Q on automaatin tilojen aarellinen joukko;

• Σ on automaatin syoteaakkosto;

• δ : Q× Σ→ Q on automaatin siirtymafunktio;

• q0 ∈ Q on automaatin alkutila;

• F ⊆ Q on automaatin hyvaksyvien tilojen joukko.

• Siirtymafunktio δ on maaritelman 1 kiinnostavin osa.

– Intuitiivisesti: Jos automaatti on nyt tilassa q ja seuraavaksi tulee merkki cniin silloin siirrytaan tilaan δ(q, c), eli siihen jonka siirtymafunktio ilmoittaa.

– Toisin sanoen: Siirtymafunktion arvo

δ(q, c) = tilasiirtymataulukon sisalto sen rivilla q ja sarakkeella c.

Esimerkki 10. Kokonaislukuautomaatin (esimerkki 8) formaali esitys on

M = (q0, q1, q2, error, 0, 1, . . . , 9, +,−, δ, q0, q2),

jossa δ on kuten taulukossa; esim.

δ(q0, 0) = δ(q0, 1) = δ(q0, 2) = · · · = δ(q0, 9) = q2

δ(q0, +) = δ(q0,−) = q1

δ(q1, +) = δ(q1,−) = error

jne.

Automaatin laskennan matemaattinen esitys

• Automaatin tilanne on pari (q, w) ∈ Q× Σ∗ jossa

q = automaatin nykyinen tila

w = syotemerkkijonon viela kasittelematon loppuosa.

• Erityisesti automaatin alkutilanne syotteella x on pari (q0, x) jossa q0 on automaatinalkutila.

• Tilanne (q, cw), jossa c ∈ Σ on seuraava syotemerkki, johtaa suoraan tilanteeseen(δ(q, c), w).

Tata merkitaan lyhyesti (q, cw) (δ(q, c), w).

24

Page 27: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Tilanne (q, w) johtaa tilanteeseen (q′, w′) jos on olemassa valitilannejono

(q0, w0) (q1, w1) (q2, w2) (q3, w3) · · · (qn, wn)

missa (q0, w0) = (q, w) ja (qn, wn) = (q′, w′) (jollakin n ∈ N).

Tata merkitaan lyhyesti (q, w) ∗ (q′, w′).

• Jos halutaan merkita nakyviin minka automaatin M tilannejonoista on kyse, niinvoidaan kayttaa alaindeksia: siis M ja ∗M .

• Automaatti M hyvaksyy syotemerkkijonon x ∈ Σ∗, jos

(q0, x) ∗ (qf , ε) jollain qf ∈ F

ja muuten hylkaa sen.

• Toisin sanoen, automaatti M hyvaksyy syotteen x, jos sen vastaava alkutilanne(q0, x) johtaa johonkin hyvaksyvaan lopputilanteeseen, jossa koko syote on luettu.

• Vastaavaa valitilannejonoa (q0, x) ∗M (q, ε) kutsutaan automaatin M laskennaksisyotteella x.

Se on siis hyvaksyva laskenta jos lopputila q ∈ F ja hylkaava jos q 6∈ F .

• Vaihtoehtoisesti voidaan laajentaa siirtymafunktion δ yksittaisilta merkeilta a ∈ Σkokonaisille merkkijonoille w ∈ Σ∗ (ja niin teemmekin jatkossa):

δ∗(q, w) = q′ silloin kun (q, w) ∗ (q′, ε). (2)

Siis δ∗(q, w) on se tila, johon paastaan aloittamalla tilasta q ja lukemalla merkkijo-no w loppuun saakka.

• Erityisesti δ∗(q, ε) = q ja δ∗(q, a) = δ(q, a), kun a ∈ Σ.

• Automaatti siis hyvaksyy merkkijonon w, jos δ∗(q0, w) ∈ F .

• Tama on helppo maaritella myos rekursiivisesti:

δ∗(q, w) =

q jos w = ε

δ∗(δ(q, a), v) jos w = av jossa a ∈ Σ

Tasta saadaan suoraan rekursiivinen algoritmi, jonka rekursio on niin yksinkertaista(ns. hantarekursiota), etta se on helppo toteuttaa while-silmukkana.

4.3 Saannollinen kieli

• Automaatti M tunnistaa kielen

L(M) =

x ∈ Σ∗ | (q0, x) M

∗ (qf , ε) jollakin qf ∈ F

= x ∈ Σ∗ | δ∗(q0, x) ∈ F

eli niiden merkkijonojen x joukon, jotka M hyvaksyy.

• Sanomme, etta kieli A on saannollinen, jos jokin aarellinen automaatti tunnistaasen, ts. A = L(M) jollain M .

25

Page 28: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Huomaa, etta saannollisyys on kielen, eli merkkijonojoukon ominaisuus, ei yksittaisenmerkkijonon. Ei ole mielekasta kysya yksittaisesta merkkijonosta, onko se saannol-linen.

(Mista tahansa merkkijonosta w ∈ Σ∗ voidaan toki muodostaa yksialkioinen kieliw ⊆ Σ∗, joka on selvasti saannollinen.)

Esimerkki 11. Merkkijonon +1210 hyvaksyminen esimerkin 8 (s. 22) kokonaislukuau-tomaatilla:

(q0, +1210) (q1, 1210) (q2, 210) (q2, 10) (q2, 0) (q2, ε)

Nyt jaatiin hyvaksyvaan lopputilaan q2 eli +1210 ∈ L(M).Laittoman merkkijonon 12 + 10 laskenta onkin

(q0, 12 + 10) (q2, 2 + 10) (q2, + 10) (error, 10)

eli paadyttiin virhetilaan error eli 12 + 10 6∈ L(M).

• Aarelliseen automaattiin voidaan helposti lisata muutakin tulostusta ja toimintojakuin pelkka hyvaksyminen tai hylkaaminen.

• Nama ovat pelkkia ”sivuvaikutuksia” eivatka ne vaikuta automaatin toimintaan —siihen, miten se valitsee tilasiirtymansa. . .

• . . . tai jos ne vaikuttavat, niin silloin kyseessa ei enaa olekaan aarellinen automaatti,vaan jokin muu sita vahvempi laskennan malli.

• Tallaiset modifikaatiot eivat taman kurssin kannalta tuo mitaan kovin oleellistauutta asiaan. Muissa yhteyksissa ne voivat kuitenkin olla hyvinkin hyodyllisia.

Esimerkki 12. Lisataan esimerkin 8 etumerkillisen kokonaisluvun tunnistamiseen toi-minto, joka laskee luvun arvon muuttujaan value eli muuntaa syotemerkkijonon sita vas-taavaksi kokonaisluvuksi.

Huomaa: Jos automaatti hylkaakin syotteensa (eli jos lopuksi q 6= 2), niin silloinvaluen arvo ei tarkoita mitaan!

int q=0; int c; int sign=1; int value=0;

while ((c=fgetc(stdin)) != EOF)

switch (q)

case 0: if (c==’+’) q=1;

else if (c==’-’) q=1; sign=-1;

else if (isdigit(c)) q=2; value=c-’0’;

else q=3;

break;

case 1: if (isdigit(c)) q=2; value=sign*(c-’0’);

else q=3;

break;

case 2: if (isdigit(c)) q=2; value=10*value+sign*(c-’0’);

else q=3;

break;

case 3: break;

26

Page 29: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Sivuhuomautus: Aarellisen automaatin taman tapainen formaalimpi laajennus onnimeltaan aarellinen transduktori (finite state transducer). Tassa jokaiseen tilaanliittyy paitsi yhden syotemerkin lukeminen, niin myos yhden (tai useamman) tulos-temerkin kirjoittaminen erilliselle tulostenauhalle (tai syotteen paalle).

• Ohjelmointikielten kaantamisessa ensimmainen vaihe on leksikaalinen analyysi eliselaus. Tarkoituksena on poimia ja erotella ohjelman lahdekoodista erityyppiset al-kiot, kuten kokonaislukuvakiot (arvoineen), varatut sanat (if, else, while, jne.),muuttujien nimet, jne.

• Siis esimerkiksi nahtyaan merkit for tallainen selaaja lukee viela yhden merkin ceteenpain. Jos tama c on jokin muuttujan nimessa sallittu merkki, niin se tietaakokoavansa nyt muuttujan nimea muotoa forc . . . ; muuten se tietaakin loytaneensavaratun sanan for ja tama c kuuluukin seuraavaan alkioon.

• Selaaja voidaan toteuttaa (ja usein toteutetaan) yhtena aarellisena transduktorina,joka lukee lahdekooditiedostoa merkki merkilta ja nahtyaan jonkin kokonaisen alkiontulostaa vastaavan tiedon.

• Selaajaa ei kuitenkaan (yleensa) koodata kasin, vaan sen koodi voidaan tuottaaautomaattisesti ohjelmointikielen kuvauksesta jollain sopivalla tyokalulla (esim. lexja sen GNU-versio flex), joka myos voi automaattisesti liittaa hyvaksyviin tiloihinkayttajan maaritteleman toimintokoodin (tulostuksen yms.).

fredriks@cs ~$ cat ex.lex

%

#include <stdio.h>

%

%option noyywrap

%%

[0-9]+ printf("Kokonaisluku: %s\n",yytext);

lap printf("LAP!\n"); /* Tunnistetaan "lap" */

. /* Sivuutetaan muu */

%%

int main(void) yylex(); return 0;

fredriks@cs ~$ flex ex.lex

fredriks@cs ~$ gcc lex.yy.c -o foo

fredriks@cs ~$ ./foo

abc123def456lapxxxxx

Kokonaisluku: 123

Kokonaisluku: 456

LAP!

Tehtava 3. Tee paranneltu versio esimerkin 7 kahviautomaatista: automaatti hyvaksyyvain tasarahan, mutta lisaksi siihen on lisatty sellainen peruutusnappi, joka palauttaakaikki syotetyt kolikot (antamatta kahvia).

Tehtava 4. Laadi aakkoston Σ = a, b aarellinen automaatti joka tunnistaa kielen w |w sisaltaa tasmalleen kaksi a:ta.

Tehtava 5. Edellisen komplementti: laadi aarellinen automaatti joka tunnistaa kielenw | w ei sisalla tasmalleen kahta a:ta.

27

Page 30: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Tehtava 6. Laadi automaatti kielelle: w | w ei muodostu pelkasta a:sta tai b:sta

Tehtava 7. Laadi automaatti kielelle: w | w ei sisalla jonoa aab

Tehtava 8. Osoita etta kieli (aba)n | n > 0 on saannollinen.

Tehtava 9. Tarkastellaan kielta, joka koostuu niista merkkijonoista, joissa jokainen pari-ton (eli ensimmainen, kolmas, viides,. . . ) merkki on ’a’. Osoita, etta se on saannollinen.

Tehtava 10. Laadi aarellinen automaatti, joka tunnistaa kielen

L = 0n1m | n, m ∈ N ∪ 1n0m | n, m ∈ N.

4.4 Aarellisen automaatin laskentavoimasta

• KieliL1 = 0n1m | n, m ∈ N

on helppo tunnistaa aarellisella automaatilla, eli se on saannollinen.

• Aarellinen automaatti on hyvin rajoittunut laskennan malli. Vaikkapa niinkin yk-sinkertainen kieli kuin

L2 = 0n1n | n ∈ N(eli merkkijonot joissa on ensin jono nollia ja sitten saman verran ykkosia) ei olekaansaannollinen!

(Tahan palataan.)

Mika on se perustava ero naiden kielten valilla, joka tekee toisesta helpon jatoisesta mahdottoman tunnistaa aarellisella automaatilla?

• Intuitiivisesti, kielen L1 = 0n1m | n, m ∈ N tunnistaminen vaatii vain vakiomaaranmuistia.

– Kieli L1 = ”merkkijonot jossa on ensin pelkkia nollia ja sitten pelkkia ykkosia”.

– Siis niiden lukumaaralla ei ole valia, ja riittaa ”muistaa” mika oli edellinenmerkki (tila).

• Toisaalta, kielen L2 = 0n1n | n ∈ N tunnistamiseen ei riitakaan vakiomaara muis-tia.

– L2 = ”merkkijonot jossa on ensin jokin maara n nollia ja sitten yhta montaykkosta”.

– Tassa tama yhteinen n voi olla kuinka suuri tahansa — sehan riippuu syotteenpituudesta.

– Aarellinen automaatti -parka ehtii ”unohtaa” montako nollaa se on nahnytennen kuin ykkoset alkavat, kun n on riittavan suuri.

• Formalisoimme taman myohemmin niin sanottuna ”pumppauslemmana”.

• Toisaalta, ominaisuutta ”vakiomaara muistia” kayttavat kaikki automaattimme,esim. kahviautomaattimme esimerkissa 7 muistaa syotetyn kokonaisrahasumman,jos se on < 200 senttia. Muuten se muistaa vain etta syotetty summa on ≥ 200senttia.

Eli se muistaa vain aarellisen monta eri vaihtoehtoa.

28

Page 31: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkki 13. Aarellinen automaatti joka tunnistaa kielen ”toiseksi viimeinen merkkion nolla”:

??

?0 ?100

01

10

11

0

0

1

11

00

1 0

1

0

1

0

1

Automaatti ”muistaa” kaksi viimeista lukemaansa bittia. Tilat on nimetty naiden bittienmukaan, eli tilassa 01 viimeisin luettu bitti oli 1 ja sita edellinen oli 0. Tilan nimessa ‘?’taas tarkoittaa ”sellaista bittia ei viela ole luettu”.

Aakkostot

• Aakkosto Σ voidaan maaritella melkein miten vain. Sovellus ratkaisee luontevimmantavan. Esim.

Γ = omena,paaryna,appelsiini

tai

Σ =[

000

],[

001

],[

010

],[

011

], . . . ,

[111

].

Toisin sanoen, Σ sisaltaa kaikki kolmen alkion pituiset binaarivektorit, |Σ| = 23 = 8.

• Aakkoston Σ syotteita voidaan kutsua kolmiuraisiksi.

Esimerkiksi 4-merkkisessa syotteessa[000

] [100

] [001

] [010

]voidaan ajatella olevan kolme rinnakkaista uraa:

ylin ura jolla on 0100, keskimmainen ura jolla on 0001, ja alin ura jolla on 0010.

• Automaatti lukee naita uria samaan tahtiin rinnakkain, sillahan on vain yksi lu-kupaa.

Tehtava 11. Jono aakkoston Σ symboleja maarittelee kolme rivia ykkosia ja nollia. Tul-kitaan nama binaarilukuina, joissa eniten merkitseva bitti on oikealla. Olkoon

L = w ∈ Σ∗ | alin rivi on kahden ylemman rivin summa

29

Page 32: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkiksi [110

] [100

] [001

]∈ L mutta

[101

] [001

]6∈ L

eli

3 + 1 = 4 mutta 1 + 0 6= 3.

Osoita etta tama kieli L on saannollinen.

Ratkaisu:

• Kieli on saannollinen, jos on olemassa aarellinen automaatti joka tunnistaa sen. Siisyksi tapa todistaa kieli saannolliseksi on esittaa sen tunnistava aarellinen automaat-ti.

• Sellainen on olemassa talle kielelle, esimerkiksi:

A

C

B

D

0 1

A =[

000

],[

101

],[

011

]B =

[110

]D =

[100

],[

010

],[

111

]C =

[001

].

Tilan nimi = muistibitin (carry bit) arvo. Siirtyma laskee muistibitin + ylimmanuran bitin + keskiuran bitin summan, jonka

vahemman merkitseva bitti antaa alimman uran bitin, ja

enemman merkitseva bitti seuraavan muistibitin eli tilan. 2

Tehtava 12. OlkoonΣ =

[00

],[

01

],[

10

],[

11

].

Jono aakkoston Σ symboleja maarittelee kaksi uraa ykkosia ja nollia. Tulkitaan namabinaarilukuina, joissa eniten merkitseva bitti on oikealla. Olkoon

L = w ∈ Σ∗ | alin rivi on kolme kertaa ylin rivi

Esimerkiksi[11

] [01

] [11

] [10

] [00

] [01

]∈ L ja

[11

] [01

]∈ L

eli

13× 3 = 39 ja 1× 3 = 3.

Osoita etta tama kieli L on saannollinen.

30

Page 33: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Ratkaisu:

11

00

00

11

01

10

0 1 10

• Samaan tapaan kuin edellinen tehtava. Erona on se, etta nyt muistibitteja voi ollakaksi.

• 0 × 3 = 0, 1 × 3 = 3 = (11)2, eli tulokseen tulee 1 ja muistiin laitetaan 1. Josmuistissa on 1, ja lasketaan 0×3, tulokseksi tulee 1 (muistista), jos taas 1×3, tuloson 4 = (100)2, joten tulosbitti on 0 ja muistiin jaa 10, jne. . . 2

• Taman (ja edellisen) tehtavan ratkaisu tunnistaa kuuluuko syote kieleen.

• Jos haluaisi oikeasti tehda yhteenlaskukoneen (tai syotteen vakiolla kertovan ko-neen), niin ratkaisu voidaan helposti muuttaa transduktoriksi, jonka

syotteena luettaisiin vain ylinta (ja keskimmaista) uraa, ja

tulosteena kirjoitettaisiin alinta uraa.

(Kahden syoteluvun kertolaskua ei kuitenkaan voine toteuttaa aarellisena automaat-tina.)

• Jos ei kaytettaisikaan ura-aakkostoa, vaan aakkostona olisikin Σ = 0, 1, +, =, niinkieli

L = x + y = z | x, y ja z ovat binaarilukuja

ja luku z on lukujen x ja y summa

ei olekaan saannollinen: jos x ja y ovat tarpeeksi suuria lukuja, niin aarellinen au-tomaatti ehtii unohtaa ne lukiessaan syotetta.

4.5 Sovelluksista

• Aarelliset automaatit sellaisenaan ovat hyodyllisia merkkijonojen kasittelyssa, mistamyohemmin lisaa. . .

• Lisaamalla tilasiirtymiin satunnaisuutta saadaan Markovin ketjut eli satunnaispro-sessit, joilla on aarellinen muisti. Perusversiossa Markovin ketjuihin ei tosin liitymitaan syotetta. Markovin piilomallit (hidden Markov models) ovat lahempanatassa esitettyja aarellisia automaatteja.

• Tilasiirtymajarjestelmia kaytetaan (etenkin hajautettujen jarjestelmien) spesifioin-nissa ja verifioinnissa.

31

Page 34: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Sovellus: viestinvalitysprotokollat

• Erilaisia protokollia voidaan kuvata ”aarellisina automaatteina” tai tilakoneina.

• Tarkastellaan yksikertaista vuorottelevan bitin protokollaa, jossa lahettajaprosessi Sja vastaanottajaprosessi R kommunikoivat.

• S lahettaa paketteja d0, d1, d2, . . ..

Paketti voi hukkua matkalla (kuten kuvassa d1).

• R kuittaa saadun paketin (viestillaan a) ja S lahettaa seuraavan paketin lahetetaanvasta kun on saanut edellisesta kuittauksen.

Jos kuittausta ei kuulu sovitussa ajassa, niin paketti lahetaan uudestaan:

R

S

a a

d2d1d0

a

d1

timeout

Ongelma: Jos kuittaus a hukkuu, niin R voi saada duplikaattiviestin:

R

S

a a

d2d1d0

a

d1

timeout

a

Ratkaisu: Numeroidaan viestit ja kuittaukset:

R

S

timeout

d0, 0 d1, 1 d1, 1 d2, 2

a, 0 a, 1 a, 1 a, 2

Mutta silloinhan pitaisi lahettaa yha suurempia ja suurempia numeroita 0, 1, 2 . . .

Parannus: Riittaa kayttaa kahta numeroa (0 ja 1 eli ”parillinen/pariton viestin nume-ro”):

R

S

timeout

d0, 0 d1, 1 d1, 1

a, 0 a, 1 a, 1

d2, 0

a, 0

32

Page 35: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

S ja R voidaan mallintaa tilasiirtymajarjestelmina:

lahettaja S

a, 1

a, 0

d, 0 d, 1

timeout

timeout

vastaanottaja R

d, 0 d, 1

a, 1

a, 0

d, 0

d, 1

d, 0

d, 1

Jos S ei saakaan ajoissa symbolia a, niin se lukeekin sen sijaan ”timeout-symbolin”.

4.6 Automaatin minimointi

1. Mika on alla olevan automaatin M1 tunnistama kieli?

0 1 2 3

4 5 6 7

a

a b

b

b b

b ba a a

a

a

b

a, b

Yritetaan helpottaa vastaamista yksinkertaistamalla automaattia.

2. Mika on alla olevan automaatin M2 tunnistama kieli?

0 1 2

3 4 5

a

a

b

b b

ba a

a

b

a, b

3. Mika on alla olevan automaatin M3 tunnistama kieli?

33

Page 36: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

0 1

2 3

ab

b

a

a, b

a

b

4. Virhetiloja kuten 3 ei ole valttamatonta piirtaa. Saadaan minimoitu automaatti M4:

0 1

2

ab

a

b

Lopputulosta vastaava saannollinen lauseke on

(ab ∪ ba)∗.

Niihin palataan myohemmin.

0

3

1 2

4

a, b

a, b

a, b a, b

b

a

0 1

a,b

a,b

Ekvivalenssi: Jos kaksi automaattia M ja M ′ tunnistavat saman kielen (kuten ylla;minka?) niin ne ovat keskenaan ekvivalentteja eli yhtapitavia — voimme kayttaakumpaa tahansa.

Minimaalisuus: Automaatti M on minimaalinen jos siina on mahdollisimman vahantiloja — jos jokaisella sen kanssa ekvivalentilla automaatilla M ′ on ainakin yhtamonta tilaa.

Redundanssi: Automaatti on redundantti ellei se ole minimaalinen — silloin siina onredundantteja eli ylimaaraisia kopioita samoista tiloista (ylla parittomat/parilliset).

34

Page 37: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Miksi minimoida?

• Automaatteja muodostavat algoritmit eivat aina tuota minimaalista automaattia.

• On helpompi nahda mika on minimaalisen automaatin tunnistama kieli.

• Minimaalisen automaatin kasittely on tehokkaampaa.

• Minimaalinen automaatti on sen tunnistaman kielen kanoninen esitys.

Miten minimoida? (Vrt. yrityksen saneeraus)

• Poistetaan turhat yksikot (saavuttamattomat tilat).

• Yhdistetaan toiminnaltaan identtiset (samat sanat hyvaksyvat tilat).

Apukasitteita

• Muistetaan siirtymafunktion δ laajennus yksittaisilta merkeilta a ∈ Σ kokonaisillemerkkijonoille w ∈ Σ∗ yhtalosta (2).

• Automaatin M tilat q ja q′ ovat keskenaan ekvivalentit, merkitaan q ≡ q′, jos kaikillamerkkijonoilla x ∈ Σ∗ on

δ∗(q, x) ∈ F jos ja vain jos δ∗(q′, x) ∈ F (3)

eli jos aloittamalla tilasta q hyvaksytaan tasmalleen samat merkkijonot kuin aloit-tamalla tilasta q′.

Huomaa: Tama ei ole sama asia kuin q = q′ eika edes sama kuin δ∗(q, x) = δ∗(q′, x),koska syotteella x savutettavien hyvaksyvien tilojen ei tarvitse olla samat.

• Tilat q ja q′ ovat keskenaan k-ekvivalentit jollakin k ∈ N, jos niiden ekvivalenssieh-to (3) patee kaikilla merkkijonoilla x ∈ Σ∗ joilla |x| ≤ k.

Eli jos syotteen pituus on korkeintaan k merkkia niin tiloja q ja q′ ei voi viela erottaa

toisistaan. Jos tilat q ja q′ ovat k-ekvivalentit, merkitaan qk≡ q′.

• Selvasti

– lopputilat ovat keskenaan 0-ekvivalentteja, ja hylkaavat tilat keskenaan 0-ekvivalentteja: vain ensinna mainituista paasee tyhjalla syotteella hyvaksyvaanlopputilaan (itseensa).

– q ≡ q′ jos ja vain jos qk≡ q′ kaikilla k ∈ N.

• Minimoinnin idea:

1. Aloitetaan automaatin tilojen karkeimmasta luokittelusta eli 0-ekvivalenssista:lopputilat vs. muut.

2. Tarkennetaan tilojen luokittelua jakamalla k-ekvivalenssiluokkia (k+1)-ekvivalenssi-

luokkiin. Tilat q ja q′ voivat olla k+1-ekvivalentteja vain jos qk≡ q′. Kaantaen:

Jos q 6 k≡ q′ niin q 6k+1≡ q′. Siis k:n kasvaessa jako voi ainoastaan tarkentua.

3. Lopetetaan kun mikaan ekvivalenssiluokka ei enaa tarkennu.

35

Page 38: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Aarellisen automaatin minimointialgoritmi Syote: automaatti M = (Q, Σ, δ, q0, F ).

1. (Turhien tilojen poisto) Poista syotteesta M kaikki tilat, joita ei voida saavuttaasen alkutilasta q0 millaan syotemerkkijonolla.

2. (0-ekvivalenssi) Jaa jaljelle jaaneet tilat kahteen luokkaan: hyvaksyviin vs. muihintiloihin.

3. (k-ekvivalenssista (k + 1)-ekvivalenssiin):

1 k ← 02 while jossakin luokassa on eri tavoin kayttaytyvia tiloja3 do Jaa tallaiset luokat pienemmiksi siten, etta kunkin uuden

luokan kaikki tilat kayttaytyvat samoin4 k ← k + 1

Huomaa: Yhden luokan jakaminen voi johtaa siihen, etta jokin toinenkin luokkapitaa jakaa, vaikkei silta ensin vaikuttanutkaan. Siksi while.

4. Tuloksena on automaatti M jonka

tilat ovat viela jaljella olevat luokat Qsiirtymafunktio niiden valilla saadaan seuraavasti:

• Tuloksessa on siirtyma Q a−→ Q′ tasmalleen silloin kun syotteessa oli siir-tyma q

a−→ q′ jossa q ∈ Q ja q′ ∈ Q′

• Q sisaltaa eri tavoin kayttaytyvia tiloja jos talla saannolla tulisi keskenaanristiriitaiset siirtymat Q a−→ Q′ ja Q a−→ Q′′ joilla Q′ 6= Q′′ (joista toinenvoi olla myos nakymaton virhetila).Huomaa: Sen tekeminen nakyvaksi helpottaa eri tavoin kayttaytyvientilojen huomaamista!

• Tallaista Q kutsutaan epadeterministiseksi koska siina ei ole determinoitueli maaratty kumpaan tiloista Q′ tai Q′′ pitaisi siirtya syotemerkilla a.Epadeterminismiin palataan tarkemmin myohemmin luvussa 4.7.

alkutila on se luokka joka sisaltaa syotteen alkutilan q0

lopputilat ovat ne luokat joihin kuuluu jokin automaatin M lopputila.

• Algoritmi pysahtyy koska syotteessa oli aarellinen maara tiloja, ja while-silmukan jokaisella kierroksella jakautuu ainakin yksi luokka.

(Siis kierroksia kertyy korkeintaan saman verran kuin syotteessa oli tiloja.)

• Tulos on syotteen kanssa ekvivalentti automaatti, jossa on minimimaara tiloja.

• Tulos on oleellisesti (eli tilojen nimentaa lukuunottamatta) yksikasitteinen.(Todistus sivuutetaan.)

Esimerkki 14. Olkoon M = (Q, Σ, δ, q0, F ) jossa

• tilojen joukko Q = 1, 2, 3, 4, 5, 6,

• syoteaakkosto Σ = a, b,

• alkutila q0 = 1,

36

Page 39: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• lopputilojen joukko F = 4, 5 ja

• siirtymafunktio δ:

a b→ 1 2 3

2 4 23 2 3

← 4 3 5← 5 1 4

6 4 5

1

2

6

3

4

5

b

b

a

a

a

b

b

b

a

a a

b

Askel 1: Turhien tilojen poisto.

ennen

1

2

6

3

4

5

b

b

a

a

a

b

b

b

a

a a

b

jalkeen

1

2

3

4

5

b

b

a

a

a

b

b

b

a

a

Askel 2: Jaottele syotteen M (jaljelle jaaneet) tilat 0-ekvivalenssiluokkiin, eli hyvaksyviinja hylkaaviin tiloihin.

Merkitaan ekvivalenssiluokkia roomalaisin numeroin.

37

Page 40: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

a bI:→1 2, I 3, I

2 4, II 2, I3 2, I 3, I

II:←4 3, I 5, II←5 1, I 4, II

1

2

3

4

5

b

b

a

a

a

b

b

b

a

a

Automaatti M alkaa kehittya tasta lahtotilanteesta:

a

b

a

a

a

a

b

b

b

b

2

45

3

1

I

II

a bI:→1 2, I 3, I

2 4, II 2, I3 2, I 3, I

II:←4 3, I 5, II←5 1, I 4, II

III

a

a

a, b b

Tila I on epadeterministinen, koska merkilla a voidaan siirtya tilaan I tai II.

Askel 3: k-ekvivalenssista (k + 1)-ekvivalenssiin.

• Jos M ei sisalla enaa yhtaan epadeterministista tilaa, niin algoritmi paattyy jatulostaa sen vastauksenaan.

• Nyt kuitenkin sen luokka I pitaa jakaa, koska syotteen M

– tilat 1 ja 3 kayttaytyvat keskenaan samoin: kummallakin syotemerkillapysytaan luokassa I, mutta

– tila 2 kayttaytyy toisin kuin ne: syotemerkilla a siirrytaankin tilaan II.

Siis tilat 1 ja 3 pysyvat luokassa I, kun taas tila 2 muodostaa uuden luokan III.

a bI: → 1 2, III 3, I

3 2, III 3, IIII: 2 4, II 2, IIIII: ← 4 3, I 5, II

← 5 1, I 4, II

b b b

a a

a

I III II

38

Page 41: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

A

B

C

a

b

b

a

D

E

a

b

b

a

a

b

Kuva 9: Tehtavan 13 automaatti.

Askel 4: Nyt jokainen luokka I, II ja III on deterministinen, joten tulos M on valmis.

Tehtava 13. Muodosta kuvan 9 automaattia vastaava minimiautomaatti.

Tehtava 14. Muodosta kuvan 10 automaattia vastaava minimiautomaatti.

4.7 Epadeterministiset aarelliset automaatit

”Epadeterminismi tarkoittaa, ettei koskaan tarvitse myontaa olevansa vaarassa.”— Anon.

• Epadeterministisella automaatilla siirtymafunktio δ liittaa nykyisen tilan ja syotemerkinpariin (q, x) aarellisen joukon vaihtoehtoisia seuraavia tiloja.

• Epadeterministinen automaatti hyvaksyy merkkijonon x jos sille on olemassa jokinhyvaksyva laskenta.

• Siis se hylkaa merkkijonon x vain jos kaikki sen laskennat ovat hylkaavia.

Ihan loogisesti: koska

x hyvaksytaan⇔ sille on jokin hyvaksyva laskenta

niin kaantaen

x hylataan⇔ ei niin, etta sille olisi jokin hyvaksyva laskenta

⇔ sen kaikki laskennat hylkaavat.

• Esimerkiksi epadeterministinen automaatti

39

Page 42: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1

2 3

4 5

ab

b

a a ab

b

a

b

Kuva 10: Tehtavan 14 automaatti.

q2 q3a b a

a a

b b

q0 q1

hyvaksyy syotemerkkijonon abbaba, koska silla on hyvaksyva laskenta

(q0, abbaba) (q0, bbaba) (q0, baba) (q0, aba) (q1, ba) (q2, a) (q3, ε).

• Silla on myos hylkaavia laskentoja kuten

(q0, abbaba) (q0, bbaba) (q0, baba) (q0, aba) (q0, ba) (q0, a) (q0, ε)

mutta niita ei siis oteta huomioon.

Determinismi vs. epadeterminismi

• Deterministisessa automaatissa siirtyma tarkoittaa, etta nykyisesta tilasta mennaanaina kohdetilaan sen δ(q, a).

• Epadeterministisessa automaatissa siirtyma r ∈ δ(q, a) tarkoittaakin, etta tilasta qsyotemerkilla a on mahdollista menna tilaan r.

Mutta voi olla muitakin mahdollisuuksia s ∈ δ(q, a).

40

Page 43: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Deterministinen automaatti hyvaksyy, jos se ainoa mahdollinen lopputilanne onhyvaksyva.

• Epadeterministinen automaatti hyvaksyy, jos on mahdollista paatya hyvaksyvaanlopputilanteeseen.

Eli jos on jokin tapa valita aina sopivasti nykyiselle tilalle qi seuraava tila qi+1 ∈δ(qi, ai) siten, etta syotteen a0a1a2 . . . an loputtua ollaan jossakin hyvaksyvassa ti-lassa qn.

• Mutta epadeterminismi nayttaa epailyttavan epamekaaniselta: miten nykyisessa ti-lassa qi voitaisiin osata tehda juuri oikea valinta nakematta syotteen loppuosaaai+1ai+2ai+3 . . . an? Silla onkin erilaisia tulkintoja, kuten:

Spesifikaationa. Epadeterminismi kuvailee minkalaiset merkkijonot pitaisi hyvaksyamutta ei kerro tarkasti miten niiden hyvaksynta etenisi askel askeleelta.

Etsintana. Epadeterminismi on operaatio ”etsi reitti tasta tilanteesta johonkin hyvak-syvaan lopputilanteeseen”. Se taas voitaisiin mekanisoida vaikkapa TRA-kurssinkeinoin syvyyssuuntaisena etsintana kaikkien tilanteiden verkosta:

DFS(q, x) :1 if merkkijono x = ε2 then return onko tila q hyvaksyva vaiko hylkaava3 else olkoon x = ay jossa a ∈ Σ ja y ∈ Σ∗

4 for each r ∈ δ(q, a)5 do if DFS(r, y)6 then return true7 return false

Epadeterministinen automaatti M = (. . . , q0, F ) hyvaksyy syotteen w jos kutsuDFS(q0, w) palauttaa arvon true.

Rinnakkaisuutena. Epadeterministisen automaatin voidaan ajatella seuraavan mahdol-lisia laskentojaan rinnakkain:

Deterministinenlaskenta

Epädeterministinenlaskenta

hyväksy tai hylkää

hyväksy

.

.

.

.

. ...

...

.

hylkää

41

Page 44: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

a

b

b

a a

b

0 1 2 3

ε

Kuva 11: Epadeterministinen automaatti jossa on siirtyma tyhjalla merkkijonolla.

Eli deterministinen laskenta on yksi polku, mutta epadeterministiset laskennat muo-dostavat kokonaisen laskentapuun, jonka haarat vastaavat eri valintakohtia.

Ilmaisena neuvona. Epadeterministisen automaatin voidaan ajatella saavan jokaisessavalintatilanteessaan ”Mihinkohan seuraavista mahdollisista tiloistani ∈ δ(q, a) mi-nun kannattaisi siirtya?” jostakin ulkopuolelta vastauksen ”Siirry tilaan r, luotaminuun!”

• Silloin automaatin itsensa tehtavaksi jaa vain varmentaa etta sen saamat neu-vot olivat oikein.

• Tai jos ajatellaan etsintaa, niin automaatti ei itse joudu tekemaan raskastatyota, vaan tyon tekee neuvonantaja ja automaatti saa tyon tulokset ”ilmai-seksi”.

• Taman tulkinta tulee erityisen kiinnostavaksi silloin kun tarkastellaan auto-maatteja vahvempia laskentamalleja mutta rajoitetaan niille annettavien re-

surssien maaraa — esimerkiksi P?= NP-ongelma saa silloin tulkinnan ”jos

jokin vastaus voidaan varmentaa nopeasti, niin olisiko se voitu laskeakin ilmanneuvoja nopeasti?”.

Tarkea tulos

Deterministiset (Deterministic Finite Automata, DFA) jaepadeterministiset (Nondeterministic Finite Automata, NFA) au-tomaatit tunnistavat tasmalleen samat kielet (eli saannolliset kielet).

• DFA ja NFA ovat ilmaisuvoimaltaan yhta vahvoja laskennan malleja — niilla voi-daan hyvaksya samat kielet.

• Epadeterminismia kayttamalla kielen esitysta voidaan kuitenkin usein selkeyttaa jayksinkertaistaa.

• Epadeterministisessa automaatissa sallitaan myos ε-siirtymia kuten kuvassa 11.

Tallaisen ε-siirtyman kuten 1ε−→ 2 tulkinta on, etta sita pitkin paasee tilasta 1

tilaan 2 lukematta yhtaan syotemerkkia.

42

Page 45: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Esimerkkina kuvan 11 automaattija syote abbab.

• Vaakanuolet kuvaavat ε-siirtymia,joissa ei siis lueta syotetta.

• Viimeisella rivilla esiintyy (kah-teenkin kertaan) hyvaksyva ti-la 3, joten automaatti hyvaksyysyotteen.

a

b

a

b

b

0

0

0

1 2

0 1 2 3

0 2 2

0 1 2 3 3

• Seuraava NFA hyvaksyy aakkoston a, b, c merkkijonot, joissa on osajonona ensinabb ja sen jalkeen ca tai ac.

Huomaa konstruktion modulaarisuus : ε-siirtymien avulla automaatti voidaan muo-dostaa helposti osaratkatkaisuista

a,b,c a,b,c

a,b,c

a b b

ac

ca

"abb−moduuli"

"ca−moduuli"

"ac−moduuli"

"mitä tahansa−moduuli"

ε

ε

ε

ε

ε

ε

Maaritelma 2. Epadeterministinen aarellinen automaatti on viisikko M = (Q, Σ, δ, q0, F )jossa

• Q on aarellinen tilojen joukko,

• Σ on aarellinen syoteaakkosto,

• δ | Q× Σ→ P(Q) on joukkoarvoinen siirtymafunktio — siis sen arvot δ(q, a) ⊆ Qovat tilajoukon Q osajoukkoja

• q0 ∈ Q on alkutila ja

• F ⊆ Q hyvaksyvien lopputilojen joukko.

43

Page 46: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Muista: Matematiikassa merkinta P(S) (joskus myos 2S) tarkoittaa joukon S po-tenssijoukkoa X | X ⊆ S eli kaikkien niiden joukkojen X joukkoa, jotka voidaanmuodostaa joukon S alkioista. Esimerkiksi

P(♠,♥,♣) = ∅, ♠ , ♥ , ♣ , ♠,♥ , ♥,♣ , ♠,♣ , ♠,♥,♣ .

Esimerkki 15.

q2 q3a b a

a a

b b

q0 q1

a b→ q0 q0, q1 q0

q1 ∅ q2q2 q3 ∅

← q3 q3 q3

• Nyt virhetilanne on helposti ilmaistavissa tyhjan seuraajatilajoukon ∅ avulla.

• Siirtymataulukossa voidaan jattaa joukkosulut poiskin: siis joukkoa q0, q1 voidaanmerkita myos suoraan sen alkioiden listana q0, q1.

• Tilanne (q, w) voi johtaa suoraan tilanteeseen (q′, w′), jota merkitaan samoin kuinennen eli (q, w)

M

(q′, w′), jos w = aw′ ja q′∈δ(q, a). Silloin (q′, w′) on tilanteen (q, w)

mahdollinen valiton seuraaja.

• Muutoin maaritelmat epadeterministisille automaateille ovat samat kuin aiemmin.

Tarkean tuloksemme DFA⇔ NFA perustelua

⇒: Selvastikin deterministiset automaatit ovat epadeterminististen erikoistapaus jossaaina |δ(q, a)| ≤ 1.

Siten kaikki edellisilla tunnistettavat kielet ovat tunnistettavissa myos jalkimmaisilla.

⇐: Mutta myos kaantaen (ja tama on se yllattavampi ja vaikeampi suunta): Jokaiselleepadeterministiselle automaatille M on olemassa saman kielen tunnistava determi-nistinen automaatti M .

Tama osoitetaan myohemmin kehittamalla menetelma, jolla syotteena saadulle au-tomaatille M voidaan laskea jokin sita vastaava M – eli menetelma determinisoi-da M .

Tehtava 15. Laadi sellainen aakkoston Σ = a, b epadeterministinen automaatti, jokahyvaksyy tasmalleen ne merkkijonot, joissa esiintyy seka merkkijono abba etta merkkijonobaba.

Huomaa, etta nama esiintymat saavat olla paallekkainkin: siis esimerkiksi merkkijonoaaaabbababbb hyvaksytaan, koska siina on alle- ja ylleviivauksella merkityt esiintymat.

Tehtava 16. Laadi deterministinen automaatti edellisen tehtavan 15 kielelle.

Epadeterministisen automaatin simulointi

44

Page 47: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Palataan aiempaan esimerkkiin ku-vassa 11.

• Kirjoitetaan algoritmi, joka kay lapilaskentapuuta leveyssuuntaisesti.

• Algoritmi pitaa muuttujassaNykyisetTilat listaa niista tilois-ta, joissa se talla hetkella voisi olla(laskentapuun tasoa).

• Kullakin askeleella sita paivitetaanlaskemalla

1. saatua syotemerkkia vastaavatseuraajatilat ja

2. ne tilat, joihin niista paastaan ε-siirtymilla.

a

b

b

a a

b

0 1 2 3

ε

a

b

a

b

b

0

0

0

1 2

0 1 2 3

0 2 2

0 1 2 3 3

• Tilajoukon R ⊆ Q ε-sulkeuma E(R) koostuu niista tiloista, joihin tilajoukosta Rpaasee ε-kaaria pitkin. Siis

– R ⊆ E(R) koska jokaisesta tilasta paasee suoraan itseensa ilman yhtaan (edesε-)siirtymaa, ja

– jos tilasta s ∈ E(R) on ε-siirtyma sε−→ t niin myos sen kohdetila t ∈ E(R).

Muuta sitten ei kuulukaan joukkoon E(R).

SimulateNFA(M, syote):1 NykyisetTilat ← E(alkutila q0)2 while syotetta on yha jaljella3 do a← lue seuraava syotemerkki4 SeuraajaTilat ← ∅5 for q ∈ NykyisetTilat6 do SeuraajaTilat ← SeuraajaTilat ∪δM(q, a)7 SeuraajaTilat ← E(SeuraajaTilat)8 NykyisetTilat ← SeuraajaTilat9 return lopputilat F ∩ NykyisetTilat 6= ∅

• Algoritmi SimulateNFA ”tulkkaa” epadeterministisen laskennan deterministisek-si.

Yksittainen syotemerkki kasitellaan (pahimmassa tapauksessa) ajassa O(|Q|).

45

Page 48: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Tasta tulkkauksesta paastaan eroon ”kaantamalla” laskenta deterministiseksi,

eli muodostamalla NFA:sta M DFA M joka tunnistaa saman kielen,

eli laskemalla etukateen NFA:n M siirtymataulukosta DFA:n M siirtymataulukko.

• Havaitaan: muuttujan NykyisetTilat arvot kuuluvat potenssijoukkoon P(Q).

Siten muuttujalla NykyisetTilat on korkeintaan |P(Q)| = 2|Q| mahdollista arvoa

joten voimme muodostaa aarellisena pysyvan deterministisen automaatin laitta-malla kukin sen mahdollinen arvo omaksi tilakseen ja siirtymat kuten Simu-lateDFA ne laskisi.

• Siis muodostamme NFA:sta M DFA:n M seuraavasti:

Aakkosto on molemmilla sama Σ.

Tilajoukko QcM = P(QM).

Siirtymafunktio koostuu siirtymista

NykyisetTilata−→ SeuraajaTilat

jossa nama muuttujat NykyisetTilat , a ja SeuraajaTilat ovat kuten tulkkialgo-ritmin SimulateNFA riveilla 4–7.

Eli kun annetaan tila NykyisetTilat ∈ QcM (⊆ P(QM)), niin kaydaan lapijokainen a ∈ Σ, ja lasketaan sille vastaava SeuraajaTilat ⊆ P(QM) (∈ QcM).

Alkutila on kuten sen rivilla 1.

Eli E(DFA:n M alkutila q0).

Hyvaksyvat tilat ovat kuten sen rivilla 9.

Eli ne tilat, joihin sisaltyy ainakin yksi DFA:n M lopputila.

1 Alusta tulos M sisaltamaan alkutila nimelta E(DFA:n M alkutila q0)ilman yhtaan kaarta, ja merkitse se uudeksi

2 while tuloksessa M on uusia tiloja3 do NykyisetTilat ← ota jokin niista ja merkitse se vanhaksi4 if joukkoon NykyisetTilat kuuluu ainakin yksi

epadeterministisen automaatin M hyvaksyva tila5 then merkitse NykyisetTilat hyvaksyvaksi tilaksi6 else merkitse NykyisetTilat hylkaavaksi tilaksi7 for each a ∈ Σ8 do laske SeuraajaTilat kuten algoritmin SimulateNFA

riveilla 4–79 if tila nimelta SeuraajaTilat puuttuu tuloksesta M

10 then luo sellainen ja merkitse se uudeksi

11 Lisaa tulokseen M siirtymaNykyisetTilat

a−→ SeuraajaTilat

Esimerkki 16. Determinisoidaan epadeterministinen automaatti M

q2 q3a b a

a a

b b

q0 q1

46

Page 49: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Esimerkiksi tilan s2 = q0, q2 seuraaja syotemerkilla a on tila s3 = q0, q1, q3, sillas3 sisaltaa tasmalleen kaikki joukkoon s2 kuuluvien alkioiden seuraajat merkilla a:

q3

q1

q0

q0

q2

a

a

s2

s3

a

1. Aloitetaan lisaamalla alkutila q0 ja laskemalla siita lahtevat siirtymat.

a b→ q0 = s0 q0, q1 q0

2. Saatiin uusi tila q0, q1 ja jatketaan silla.

a b→ q0 = s0 q0, q1 q0

q0, q1 = s1 q0, q1 q0, q2

3. Saatiin uusi tila q0, q2 ja jatketaan silla.

a b→ q0 = s0 q0, q1 q0

q0, q1 = s1 q0, q1 q0, q2q0, q2 = s2 q0, q1, q3 q0

4. Saatiin uusi tila q0, q1, q3 ja jatketaan silla. . .

5. . . . ja aikanaan saadaan lopputulos:

a b→ q0 = s0 q0, q1 q0

q0, q1 = s1 q0, q1 q0, q2q0, q2 = s2 q0, q1, q3 q0

← q0, q1, q3 = s3 q0, q1, q3 q0, q2, q3← q0, q2, q3 = s4 q0, q1, q3 q0, q3← q0, q3 = s5 q0, q1, q3 q0, q3

q0, q1, q3 q0, q2, q3

a

q0, q3

b

a b

a

b

a

a a

b

b

b

q0, q1 q0, q2q0

47

Page 50: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkki 17. Determinisoidaan aakkoston Σ = M, I, U seuraava epadeterministinenautomaatti:

M,I,U M,I,U

M I U0 1 2 3

Ratkaisu:

• Kun generoidaan koko potenssijoukko eli kaytetaan suoraa matemaattista maaritelmaaeika while-algoritmia niin saadaan tulokseksi:

M I U∅ ∅ ∅ ∅

→ A 0 0, 1=E 0=A 0=AB 1 ∅ 2=C ∅C 2 ∅ ∅ 3=D

← D 3 3=D 3=D 3=DE 0, 1 0, 1=E 0, 2=F 0=AF 0, 2 0, 1=E 0=A 0, 3=G

← G 0, 3 0, 1, 3=L 0, 3=G 0, 3=GH 1, 2 ∅ 2=C 3=D

← I 1, 3 3=D 2, 3=J 3=D← J 2, 3 3=D 3=D 3=D

K 0, 1, 2 0, 1=E 0, 2=F 0, 3=G← L 0, 1, 3 0, 1, 3=L 0, 2, 3=M 0, 3=G← M 0, 2, 3 0, 1, 3=L 0, 3=G 0, 3=G← N 1, 2, 3 3=D 2, 3=J 3=D← O 0, 1, 2, 3 0, 1, 3=L 0, 2, 3=M 0, 3=G

jossa

– S ⊂ P(Q) ovat saavutettavat tilat — ne jotka myos while-algoritmi tuottaisi

– P(Q) \ S ovat saavuttamattomat tilat — ne jotka while-algoritmi jattaisituottamatta.

• Tulos tilasiirtymakaaviona johon on piirretty vain saavutettavat tilat:

48

Page 51: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

A E F

L M

G

I,U

I

M

U

M I

M

U

I,U

M

M

U

I

I,U

M

• Se minimoituna:

A E F

I,U

I

M

U

M I

M

UG’

M,I,U

2

Tehtava 17. Determinisoi seuraava automaatti:

1

a

b

a, b

2

Esimerkki 18. Determinisoidaan seuraava automaatti:

0 0

10

ε

ε1

ca

b d

49

Page 52: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Siina on seka ε-siirtymia etta ”tavallinen” epadeterministinen siirtyma (tilasta a mer-killa 0).

1. Alkutilaksi saadaan

E(a) = a, . . .= a, c, . . .= a, c, d .

2. Tasta alkutilasta paastaan tiloihin

δ(a, c, d , 0) = E(δ(a, 0) ∪ δ(c, 0) ∪ δ(d, 0))

= E(a, b ∪ c ∪ ∅)= E(a, b, c)= a, b, c, d — ensimmainen uusi tila

δ(a, c, d , 1) = d — toinen uusi tila.

3. Kasitellaan nama uudet tilat vaikkapa niiden luontijarjestyksessa. Siten:

δ(a, b, c, d , 0) = a, b, c, d — sama vanha tila

δ(a, b, c, d , 1) = c, d — kolmas uusi tila.

4. Sitten:δ(d , 0) = δ(d , 1) = ∅ — neljas uusi tila.

5. Sitten:

δ(c, d , 0) = c, d — sama vanha tila

δ(c, d , 1) = d — toinen vanha tila.

6. Kaikki syntyneet tilat on nyt kasitelty, ja saadaan lopputulos:

tila 0 1→a, c, d a, b, c, d d←a, b, c, d a, b, c, d c, d←c, d c, d d←d ∅ ∅

0

0

0 1

1

1

10

0

1

a, b, c, d

a, c, d

d

c, d ∅

50

Page 53: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

2

Tehtava 18. Determinisoi seuraava automaatti:

a, ba

ba

ε

1

2 3

Tehtava 19. Determinisoi seuraava automaatti:

1 2

3

a

a, ba

b

ε

Hahmonsovituksesta

• Epadeterministisella automaatilla voi helposti kuvata hahmonsovitusongelmia: esiin-tyyko annettu merkkijono y syotteessa x?

– Mika tahansa yksittainen merkkijono (eli yksialkioinen kieli) y = y1y2y3 . . . ym ∈Σ∗ voidaan tunnistaa yksinkertaisella epadeterministisella automaatilla:

y2y1 y3 ym

Σ Σ

. . .

Kun tallainen automaatti determinisoidaan, tilojen lukumaara m+1 ei muutu.

– Tallaisen epadeterministisen automaatin kaikkia laskentapolkuja voi myos si-muloida tehokkaasti, jos

m = O(tietokoneen ”bittisyys’ eli nykyaan 32 tai 64)

ns. shift-or/shift-and algoritmilla.

• Mutta yleisessa tapauksessa (eli kun kyseessa on mielivaltainen saannollinen kieli)voi tilojen maara kasvaa pahimmillaan eksponentiaaliseksi, onhan |P(Q)| = 2|Q|.

• Toisaalta yksinkertaiselle hahmonsovitusongelmalle deterministinen automaatti osa-taan muodostaa suoraankin ajassa O(m), ns. Knuth-Morris-Pratt–algoritmi.

51

Page 54: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Ensimmainen ekskursio: NFA:n simulointi

• Olkoon pitka teksti t ja lyhyt merkkijono p ASCII-aakkoston merkkijonoja, ja n =|t|, m = |p|, ja m ≤ w, missa w on bittien lukumaara int-muuttujassa (esim. 32 tai64).

Seuraava C-kielinen funktio kertoo kaikki kohdat missa p esiintyy t:ssa.

Algoritmi perustuu NFA:n simuloimiseen, ja se toimii ajassa O(n) (nyt kun m ≤w). Yleisesti ottaen mielivaltaisen NFA:n tehokas simuloiminen on kuitenkin avoinongelma.

• Miten algoritmi toimii??? Tama ei kuulu kurssiin.

• Ongelma on mahdollista ratkaista myos keskimaaraisessa ajassaO(n log|Σ|(m)/m). . .

Toinen ekskursio: Knuth–Morris–Pratt

• Olkoot edelleen t ja p ASCII aakkoston merkkijonoja, ja n = |t|, m = |p|. SeuraavaC-kielinen funktio kertoo kaikki kohdat missa p esiintyy t:ssa.

• Algoritmi perustuu ”deterministiseen” automaattiin. Tassa on kuitenkin ε-siirtymia,mutta naita ei seurata jos on toinenkin vaihtoehto, joten haarautumista ei tapah-du. . .

• Algoritmi toimii ajassa O(n+m). Miten se tasmallisesti ottaen toimii??? Tamakaanei kuulu kurssiin.

Epadeterminismin sovelluksia

• Naemme pian, etta epadeterminismi yksinkertaistaa huomattavasti monia auto-maattikonstruktioita. Silla on kayttoa tietojenkasittelytieteessa laajemminkin, esim.

Rinnakkaisjarjestelmat: Asynkronisessa laskennassa eri prosessien suoritusjarjestysei ole tiukasti kontrolloitavissa. Ajattelemme siis, etta suoritusjarjestys maaraytyy”epadeterministisesti” ja vaadimme esim. etta jarjestelma ei saa lukkiutuamillaan suoritusjarjestyksella.

Laskennan vaativuus: Monille tarkeille etsinta- ja optimointiongelmille on help-po esittaa epadeterministinen ratkaisu, mutta sen tehokas simuloiminen de-terministisella (eli oikealla) tietokoneella on avoin ongelma. Vrt. edella: NFA:nmuuntaminen DFA:ksi saattaa aiheuttaa tilojen lukumaaran eksponentiaalisenkasvun. (Mutta ei aina, kuten nahtiin.)

4.8 Saannolliset lausekkeet ja kielet

• Saannollisella lausekkeella (regular expression) voi kuvailla, minka muotoisia merk-kijonoja hyvaksytaan.

• XML-dokumenttien kaavioformalismeissa kaytetyt elementtien sisaltomallit ovatoleellisesti saannollisia lausekkeita.

• Esim. XHTML-kielen taulukkoelementtien rakennekuvaus:

52

Page 55: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

<!ELEMENT table

(caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>

XHTML-taulukko voi sisaltaa alla olevassa jarjestyksessa

– valinnaisen otsikon

– mielivaltaisen jonon sarake- tai sarakeryhma-elementteja

– valinnaisen yla- ja alatunnisteen

– epatyhjan jonon body- tai rivielementteja.

Tekstinhaku saannollisilla lausekkeilla

• Unix-komennolla grep (=global regular expression parser) voidaan etsia tiedostostasaannollisella lausekkeella kuvailtuja riveja. Esim.

– Etsi tekstitiedostosta lap.txt rivit, joilla esiintyy sana ”automaatti”:

egrep automaatti lap.txt

– Etsi tekstitiedostosta lap.txt rivit, joilla esiintyy sana ”automaatti” tai sana”kieli”:

egrep ’\(automaatti\|kieli\)’ lap.txt

– Etsi tekstitiedostosta lap.txt rivit, joilla esiintyy ”aarellinen automaatti” tai”kahviautomaatti”:

egrep ’\(aarellinen \|kahvi\)automaatti’ lap.txt

– Etsi tekstitiedostosta tiedosto.txt osoitteita, jotka ovat muotoa . . . katu tai. . . tie jota seuraa asunnon numero:

egrep ’[A-ZAAO][a-zaao]*\(katu\|tie\) [0-9][0-9]*’ tiedosto.txt

• Monien editoreiden ”search” ja ”search & replace” -komennot sallivat myos saan-nolliset lausekkeet; samoin jotkut ohjelmointikielet sisaltavat ”regexp” kirjastoja.

• Eras mahdollisuus grep-toiminnon toteuttamiseksi olisi seuraava:

1. Muodostetaan aarellinen automaatti, joka hyvaksyy tasan sellaiset merkkijo-not, joissa esiintyy annettu hahmo.

2. Selataan syote rivi kerrallaan kayttamalla tata automaattia, ja tulostetaanhyvaksytyt rivit.

• Kysymys : Kuinka monimutkaisia hahmoja talla periaatteella voidaan kasitella?

Esim. edella muodostettiin hahmoista ”automaatti” ja ”kieli” uusi hahmo tai-operaattorilla ”|”. Samoin sallittiin hahmon iterointi eli katenointi itsensa kanssa([0-9]*).

Kuinka voimakkaat operaattorit voidaan siis sallia?

53

Page 56: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Kielten yhdiste, tulo ja sulkeuma

• Olkoot A ja B aakkoston Σ kielia, eli A, B ⊆ Σ∗.

• Kielten A ja B yhdiste on kieli

A ∪B = x ∈ Σ∗ | x ∈ A tai x ∈ B

suoraan joukko-opista.

Jos yhdistetta ajattelee eraanlaisena ”yhteenlaskuna” niin sen ”nolla” on ∅ koskasen lisaamisella ei ole vaikutusta:

X ∪ ∅ = ∅ ∪X = X.

• Kielten A ja B katenaatio eli tulo on kieli

AB = xy ∈ Σ∗ | x ∈ A, y ∈ B

eli ne merkkijonot xy jotka alkavat jollakin kielen A merkkijonolla x ja jatkuvatjollakin kielen B merkkijonolla y.

Jos tuloa ajattelee eraanlaisena ”kertolaskuna” niin sen ”ykkonen” on ε koska

εX = X ε = X.

Vastaavasti ”nollalla kertominen nollaa”:

∅X = X∅ = ∅.

• Tyhja kieli ∅ ja tyhja merkkijono ε ovat eri asioita, niillahan on eri tyyppikin.

• Kielessa ε on yksi alkio, nimittain ε, joten se ei ole tyhja.

• Kielen A potenssit Ak, jossa k ∈ N, maaritellaan iteratiivisesti:

A0 = εAk = AAk−1

= AAA . . . A︸ ︷︷ ︸k kertaa

= x1x2x3 . . . xk | xi ∈ A kaikilla i = 1, 2, 3, . . . , k (k ≥ 1)

• Kielen A sulkeuma on kieli

A∗ =⋃k∈N

Ak

= ε ∪ A ∪ AA ∪ AAA ∪ . . .

= x1 . . . xk | k ≥ 0, xi ∈ A kaikilla i = 1, 2, 3, . . . , k

Tassa vihdoin on monissa paikoissa kayttamamme merkinnan ”potenssiin ∗” tarkoi-tettu sisalto: (. . .)∗ koostuu niista merkkijonoista, jota saadaan liimailemalla yhteenaarellisen monta taman kuvauksen (. . .) mukaista merkkijonoa.

54

Page 57: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Erikoistapauksena

∅∗ = ε ∪ ∅ ∪ ∅∅ ∪ ∅∅∅ ∪ . . .

= ε

koska ”nolla(kin) potenssiin nolla on yksi”.

Esimerkki 19. Tarkastellaan aakkoston a, . . . z, 0, . . . , 9 kielia A = aa, bb ja B =01, 02. Nyt

A ∪B = aa, bb, 01, 02AB = aa01, aa02, bb01, bb02A∗ = ε, aa, bb, aaaa, aabb, bbaa, bbbb, aaaaaa,

aaaabb, aabbaa, aabbbb, bbaaaa, . . .

Saannollinen lauseke

Maaritelma 3. Aakkoston Σ saannolliset lausekkeet (regular expressions) maaritellaaninduktiivisesti saannoilla:

• Vakiot ∅ ja ε ovat jokaisen aakkoston saannollisia lausekkeita;

• aakkoston jokainen merkki a ∈ Σ on sen saannollinen lauseke;

• jos r ja s ovat aakkoston Σ saannollisia lausekkeita, niin myos (r∪s), (rs) ja r∗ovat sen saannollisia lausekkeita;

ja muita aakkoston Σ saannollisia lausekkeita ei ole.Aakkoston Σ saannollinen lauseke r kuvaa kielen L(r) ⊆ Σ∗:

• L(∅) = ∅

• L(ε) = ε

• L(a) = a kaikilla a ∈ Σ

• L((r ∪ s)) = L(r) ∪ L(s)

• L((rs)) = L(r)L(s)

• L(r∗) = (L(r))∗

Esimerkki 20. Aakkoston a, b saannollisia lausekkeita ovat esimerkiksi

r1 = ((ab)b), r2 = (ab)∗, r3 = (ab∗), r4 = (a(b ∪ (bb)))∗.

naiden lausekkeiden kuvaamat kielet ovat

L(r1) = (ab)b = abb = abb;L(r2) = ab∗ = ε, ab, abab, ababab, . . .

= (ab)i | i ≥ 0;L(r3) = a(b)∗ = a, ab, abb, abbb, . . .

= abi | i ≥ 0;L(r4) = (ab, bb)∗ = ab, abb∗

= ε, ab, abb, abab, ababb, . . .= x ∈ a, b∗ | kutakin a-kirjainta x:ssa

seuraa 1 tai 2 b-kirjainta

55

Page 58: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Lyhennysmerkintasopimuksia

• Sulkumerkkeja voidaan vahentaa seuraavilla saannoilla:

– Operaattoreista ’∗’ sitoo vahvimmin, sitten tulo, ja heikoimmin ’∪’.

– Yhdiste- ja tulo-operaatioiden assosiatiivisuus:

L(((r ∪ s) ∪ t)) = L((r ∪ (s ∪ t)))

L(((rs)t)) = L((r(st))).

• Kaytetaan tavallisia kirjasimia mikali sekaannuksen vaaraa merkkijonoihin ei ole.

Esim. edellisen esimerkin 20 lausekkeet

r1 = ((ab)b), r2 = (ab)∗, r3 = (ab∗), r4 = (a(b ∪ (bb)))∗

yksinkertaisemmin:

r1 = abb, r2 = (ab)∗, r3 = ab∗, r4 = (a(b ∪ bb))∗

• Lyhennysmerkinta r+ tarkoittaa ”toista r ainakin kerran”. Siten r+ = rr∗ = r∗r.

Esim. jos d = (0 ∪ . . . ∪ 9), niin d+ (tai dd∗) tarkoittaa, etta merkkijono koostuuyhdesta tai useammasta numeromerkista.

Saannollinen kieli (uudelta kannalta)

• Voimme maaritella saannollisen kielen A myos sellaisena, joka voidaan kuvata jol-lakin saannollisella lausekkeella r, eli A = L(r).

• Osoitamme pian, etta tama on yhtenevaa aiemman maaritelmamme (”aarellisenautomaatin hyvaksyma kieli”) kanssa.

Esimerkki 21. Olkoon aakkosto Σ = a, b, c, .... Saannollisen lausekkeen

Σ∗automaattiΣ∗

kuvaama kieli on niiden merkkijonojen joukko jotka sisaltavat osamerkkijonon ”automaat-ti”. Siis tama kieli on saannollinen.

Esimerkki 22. Olkoon Σ = A, B, C, . . . , O, a, b, c, . . . , o, 0, 1, 2, . . . , 9, . Osoite on muo-toa

(Ll∗)(katu ∪ tie) dd∗(l ∪ ε)(dd∗ ∪ ε) ddddd Ll∗

jossa

d on lyhenne lausekkeelle (0 ∪ 1 ∪ 2 ∪ . . . ∪ 9)

l on lyhenne lausekkeelle (a ∪ b ∪ c ∪ . . . ∪ o) eli pienille kirjamille (”letters”), ja

L on lyhenne lausekkeelle (A ∪ B ∪ C ∪ . . . ∪ O) eli suurille kirjaimille (”LETTERS”).

• Huomaa: Monet ”regexp”-kirjastot ja -tyokalut lisaavat ominaisuuksia jotka eivatole saannollisia (kuten esimerkiksi rajoittamattomat viitteet taaksepain, NP-taydel-linen ongelma. . . ).

Talla kurssilla esitetellaan nama aidot saannolliset lausekkeet ilman sellaisia lisayksia.

56

Page 59: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkki 23. Ohjelmointikielen C etumerkittomat liukuluvut (jotka ovat tyyppia float,double tai long double) maaritellaan seuraavasti:

• (kokonaisosa).(desimaaliosa) (e tai E) [+ tai −] (eksponentti) [suffiksi]

• merkinta [. . . ] tarkoittaa etta kyseinen osa voi myos puuttua

• kokonaisosa ja desimaaliosa koostuvat numeroista

• joko kokonaisosa tai desimaaliosa voi puuttua (mutta eivat molemmat)

• joko (i) desimaalipiste tai (ii) (e tai E) ja eksponentti voivat puuttua (mutta eivatmolemmat)

• suffiksi: F tai f: float, L tai l: long double, muuten double

Saannollinen lauseke (ilman suffikseja):

(d+.d∗ ∪ .d+)(ε ∪ ((e ∪ E)(+ ∪ − ∪ ε)d+)) ∪ d+(e ∪ E)(+ ∪ − ∪ ε)d+

Kieleen kuuluvat esim. seuraavat merkkijonot: 12., .12, 1.2, 1.2E3, 1.2e3, 1.2E-3,1E2, 1e23.

Tehtava 20. Tarkastellaan seuraavia aakkoston Σ = a, b kielia. Anna kustakin kielestakaksi merkkijonoa, jotka kuuluvat kieleen, ja kaksi, jotka eivat kuulu kieleen!

1. a∗b∗

2. a(ba)∗b

3. a∗ ∪ b∗

4. (aaa)∗

5. (ε ∪ a)b

6. Σ∗aΣ∗aΣ∗aΣ∗

Tehtava 21. Etsi lyhyin merkkijono, joka kuuluu seuraavan lausekkeen kuvaamaan kie-leen!

1. a∗(b ∪ abb)b∗b

2. a∗b∗b(a ∪ (ab)∗)∗b∗

3. (a ∪ ab)(a∗ ∪ ab)∗b

Tehtava 22. Muodosta seuraavia kielia vastaavat saannolliset lausekkeet:

1. w ∈ a, b∗ | w:n kolmanneksi viimeinen merkki on a

2. w ∈ a, b∗ | w sisaltaa joko merkkijonon ab tai ba

3. w ∈ a, b∗ | w sisaltaa parillisen maaran merkkia a

4. w ∈ a, b∗ | w:n pituus on pariton

5. w ∈ a, b∗ | w:ssa on 3:lla jaollinen maara merkkia b

57

Page 60: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Tehtava 23. Esita yksinkertaisemmassa muodossa seuraavat lausekkeet (eli anna lauseke,joka yha kuvaa saman kielen, mutta jossa on vahemman operaattoreita):

1. (0 ∪ 1 ∪ 01 ∪ 11)∗

2. (0∗ ∪ 10∗)∗

3. 1∗(011∗)∗ ∪ 1∗(011∗)∗0

Saannollisten lausekkeiden sieventaminen

• Saannollisilla kielilla on yleensa useita vaihtoehtoisia kuvauksia, esim.:

Σ∗ = L((a ∪ b)∗)

= L((a∗b∗)∗)

= L(a∗b∗ ∪ (a ∪ b)∗ba(a ∪ b)∗)

= . . .

• Merkitaan r ⊆ s, kun L(r) ⊆ L(s), eli kun saannollisen lausekkeen r kuvaama kielion osa saannollisen lausekkeen s kuvaamaa kielta.

• Saannolliset lausekkeet r ja s ovat ekvivalentit, merkitaan r = s, silloin kun r ⊆ sja s ⊆ r, eli kun L(r) = L(s).

• Lausekkeen sievennys = ”yksinkertaisimman” ekvivalentin lausekkeen maaritys.

Tassa luonteva ”yksinkertaisuuden” mitta on sen sisaltamien operaattoreiden lu-kumaara ≈ sen pituus kirjoitettuna.

Sievennyssaantoja

Muistisaanto:’∪’ on hieman kuin yhteenlasku, ja’∅’ on hieman kuin 0.

Tulo on hieman kuin kertolasku, ja’ε’ on hieman kuin 1.

r ∪ r = r (mutta rr 6= r kun r 6= ∅, ε)r ∪ (s ∪ t) = (r ∪ s) ∪ t

r(st) = (rs)t

r ∪ s = s ∪ r

r(s ∪ t) = rs ∪ rt

(r ∪ s)t = rt ∪ st

∅r = ∅∅ ∪ r = r

εr = r (mutta ε ∪ r = r vain jos ε 6∈ L(r))

∅∗ = ε

r∗ = r∗r ∪ ε = r+ ∪ ε

r∗ = (r ∪ ε)∗

(r∗)∗ = r∗

58

Page 61: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Jos ε 6∈ L(s) niin kielten valisen yhtalon

x = xs ∪ t

pienin ratkaisu (osajoukkorelaation ’⊆’ suhteen) on kieli

x = ts∗.

Itse asiassa taman yhtalon pienin ratkaisu arvolla t = ε onkin operaation s∗ al-gebrallinen maaritelma.

Tavalliset joukko-operaatiot vs. saannollisten kielten operaatiot

• Olkoot A = a, b ja B = c, d.

Joukot KieletA ∪B = a, b, c, d A ∪B = a, b, c, dkarteesinen tulo A×B = tulo AB =(a, c), (a, d), (b, c), (b, d) ac, ad, bc, bdpotenssijoukko P(A) = sulkeuma A∗ =∅, a, b, a, b ε, a, b, aa, ab, ba, bb, aaa, aab,

aba, abb, baa, bab, bba, bbb,aaaa, aaab, aaba, aabb, . . .

|P(X)| = 2n, kun |X| = n |X∗| =∞, kun |X| = n

Miten osoittaa, etta L(r) = L(s)?

• Matemaattinen ratkaisutapa on osoittaa, etta

1. L(r) ⊆ L(s) eli r ⊆ s, ja

2. L(s) ⊆ L(r) eli s ⊆ r.

• Tai helpommin (mutta ehka tyolaammiin) vastaavilla automaateilla:

1. Muodosta minimaaliset aareelliset deterministiset automaatit lausekkeille sja r.

2. Jos automaatit ovat (tilojen nimia lukuunottamatta) samat, niin kieletkin ovatsamat — onhan minimaalinen deterministinen automaatti yksikasitteinen.

• Miten lausekkeesta voidaan muodostaa automaatti?

4.9 Saannolliset lausekkeet ja aarelliset automaatit

• Osoitetaan seuraava tarkea tulos:

• 1. Jokaisen saannollisen lausekkeen r kuvaama kieli voidaan tunnistaa aarellisellaautomaatilla Mr:

– Muodostetaan lauseketta r vastaava (epadeterministinen) ε-automaatti.

– Haluttaessa tama epadeterministinen automaatti voidaan viela determini-soida (ja minimoida).

2. Jokaisen aarellisen automaatin M tunnistama kieli L(M) voidaan kuvata saannollisellalausekkeella rM :

– Redusoidaan automaatti 2-tilaiseksi ns. lausekeautomaatiksi, josta voidaanlukea vastaava saannollinen lauseke.

59

Page 62: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

r = ∅:

r = ε:

r = a, a ∈ Σ

r = s∗:

r = s ∪ t:

Ms

Mt

ε

ε

ε

ε

ε

ε

εεMs

ε

a

r = st:

Ms Mt

Kuva 12: Saannollisesta lausekkeesta aarelliseksi automaatiksi.

4.9.1 Saannollisesta lausekkeesta automaatti

• Saannollinen lauseke on kaytannollinen tapa maaritella esim. tekstinhaku- tai tyy-pintarkistustehtavia.

• Miten nain maaritelty tehtava saadaan suoritettua?

Lause 3. Jokainen saannollinen kieli voidaan tunnistaa aarellisella automaatilla.

Todistus: Annetaan kuvana 12 eras menetelma, jolla voidaan muodostaa mielivaltaistasaannollista lauseketta r vastaava ε-automaatti Mr, jolla L(Mr) = L(r).

(Tama on ns. ”Thompson-konstruktio”. Muitakin menetelmia on.) 2

Esimerkki 24. Muodostetaan saannollista lauseketta ((ab∗)∪ (b∗a))∗ vastaava aarellinenautomaatti. (Vertaa tulosta tehtavaan 13.)

60

Page 63: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

a

a

a

b

b

a, b

ε

ε ε

ε

ε εε ε

ε ε

a

a

ε

ε

b

b

ε ε

Mab∗

Mb∗a

ε ε

ε

ε

ε εM(ab∗)∪(b∗a)

b

Tehtava 24. Muodosta saannollista lauseketta

(0 ∪ 1)∗0 ∪ (0 ∪ 1)∗01 = (0 ∪ 1)∗(0 ∪ 01) = (0∗1∗)∗(0 ∪ 01)

vastaava aarellinen automaatti.

Tehtava 25. Muodosta C-kielen liukuluvut tunnistava automaatti saannollisesta lausek-keesta

(d+.d∗ ∪ .d+)(ε ∪ ((e ∪ E)(+ ∪ − ∪ ε)d+)) ∪ d+(e ∪ E)(+ ∪ − ∪ ε)d+

jossa d = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ovat 10-jarjestelman numeromerkit.

• Toisaalta ekvivalentti saannollinen lauseke voidaan esittaa monella tapaa, ja osa-automaatit josta lopullinen ratkaisu saadaan voivat olla erilaisia.

Eli ratkaisuja on erilaisia (siihen saakka kunnes on determinisoitu ja minimoitu).

4.9.2 Automaatista saannollinen lauseke

Lause 4. Jokainen aarellisella automaatilla tunnistettava kieli voidaan kuvata saannollisellalausekkeella.

Todistus:

• Esitetaan menetelma, jolla automaatista M voidaan kirjoittaa ekvivalentti saannollinenlauseke rM , eli jolla L(rM) = L(M).

• Menetelma toimii poistamalla valitiloja, jotka esiintyvat automaatin alkutilasta lop-putilaan johtavilla poluilla.

61

Page 64: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

ε

ε

εf

Kuva 13: Lopputilojen korvaaminen yhdella uudella.

• Menetelman edetessa polku tilasta i tilaan j korvataan oikotiella eli yhdella suorallasiirtymalla.

• Tallaisen oikotien pitaa yha kuvata kaikki samat merkkijonot jotka kerataan kul-jettaessa tilasta i tilaan j alkuperaisia siirtymia pitkin.

• Niinpa oikotie ir−→ j nimetaan saannollisella lausekkeella r, joka kuvaa nama

merkkijonot.

• Menetelmassa kaytetaan siis ns. lausekeautomaatteja, joissa

– siirtymilla on yksittaisen syotemerkin sijasta kokonainen saannollinen lauseke

– intuitio on, etta siirtymassa ir−→ j

1. luetaan jaljella olevan syotteen alusta jokin lausekkeen r mukainen merk-kijono, ja

2. jatketaan jaljelle jaaneen syotteen loppuosan kasittelya tilasta j.

– Tavalliset automaatit ja ε-automaatit ovat lausekeautomaattien erikoistapauk-sia, koska yksittaiset merkit ja ε ovat myos saannollisia lausekkeita.

– Ohitamme formaalin maaritelman (vaikkei se olekaan hankala).

• Olkoon automaatin alkutila s.

• Yksinkertaistetaan kasittelya olettamalla, etta automaatilla on tasmalleen yksi lop-putila, josta lisaksi ei lahde siirtymia eika se myoskaan ole alkutila s. (Jos nain eiole, korvataan vanhat lopputilat yhdella uudella, johon lisataan ε-siirtymat vanhois-ta lopputiloista. Ks. kuva 13.)

• Oikoteiden muodostaminen:

1. Poistetaan ensin kaikki rinnakkaiset siirtymat: Jos on kaksi samojen tilojenvalista siirtymaa i

p−→ j ja iq−→ j, korvaa ne yhdella yhteisella siirtymalla

ip∪q−−→ j kuten kuvassa 14.

Selvasti tama sailyttaa samoina ne merkkijonot, jotka kerattaisiin kulkemallanaita siirtymia pitkin solmusta i solmuun j.

2. Sitten poistetaan automaatista valitilat:

62

Page 65: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

jijip ∪ q

p

q

=⇒

Kuva 14: Kaksi rinnakkaista siirtymaa yhdeksi.

– Sanotaan, etta tila k 6= s on valitila, tila i sen edeltaja ja tila j sen seuraaja,

jos automaatissa on siirtymat ipi−→ k ja k

rj−→ j, ja k 6= i, j. (Edeltaja ja

seuraaja voivat kuitenkin keskenaan olla sama tila.)

– Millaisia merkkijonoja pitaa valitilan k ohittavan oikopolun iRi,j−−→ j hyvaksya?

– V: Niita, joiden alkuosa hyvaksytaan kaarella (i, k) ja loppuosa kaarella(k, j).

– Lahtokohtaisesti saadaan siis suora siirtyma ipi.rj−−→ j.

– Jos valitilasta k on lisaksi silmukkasiirtyma kq−→ k takaisin itseensa,

tallaista voidaan kulkea mielivaltaisen monta kertaa. Talloin oikopoluksitulee

ipi.q

∗.rj−−−−→ j (4)

kuten kuvassa 15.

– Jos valitilan edeltavan i ja seuraajan j valilla oli jo suora siirtyma iri,j−−→ j,

niin oikopolun lauseke lisataan siihen uutena vaihtoehtona:

iri,j∪pirj−−−−−→ j (5)

tai (jos valitilalla oli silmukkasiirtyma)

iri,j∪piq

∗rj−−−−−−→ j (6)

– Jos valitilan edeltaja ja seuraaja ovat sama tila, niin oikopolku on silmuk-kasiirtyma.

Kun valitilalle on muodostettu oikopolku sen jokaisesta edeltajasta sen jokai-seen seuraajaan, niin tama valitila k ja kaikki siihen liittyvat siirtymat voidaanpoistaa.

• Kun rinnakkaiset siirtymat ja valitilat on poistettu, niin:

– Automaatissa on jaljella sen alkutila s ja lopputila f .

– Jos alkutilasta ei ole siirtymaa lopputilaan, automaattia vastaava lauseke on∅: Alkuperaisessa automaatissa ei ole millaan syotteella lopputilaan johtavaapolkua.

Muussa tapauksessa redusoidussa lausekeautomaatissa on siirtyma sr−→ f .

63

Page 66: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

ki

q

j

rjpi

piq∗rj

......

Kuva 15: Oikotie valisolmun k ohi.

– Jos tilasta s on lisaksi silmukka sq−→ s takaisin itseensa, tunnistettua kielta

kuvaava lauseke alkaa iteraatiolla q∗. Talloin tulos on

q∗r (7)

Jos tallaista alkutilan silmukkaa ei ole, niin sita vastaava osa q∗ jaa pois lop-putuloksesta (7).

• Esitetaan tama menetelma viela algoritmina:

64

Page 67: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

fs r

q

q∗r

Kuva 16: Lauseke kutistuneesta automaatista.

1 Lisaa kuvan 13 mukainen uusi hyvaksyva tila f ellei sellaista jo ole

2 while on rinnakkaiset siirtymat ip−→ j ja i

q−→ j

3 do korvaa ne yhdella siirtymalla ip∪q−−→ j

4 while on valitiloja 6= s, f5 do k ← jokin (mika tahansa) valitila

6 for each siirtyma ipi−→ k jossa i 6= k

7 do for each siirtyma krj−→ j jossa j 6= k

8 do if on siirtyma kq−→ k

9 then t← piq∗rj

10 else t← pirj

11 if on siirtyma iu−→ j

12 then paivita se muotoon iu∪t−−→ j

13 else lisaa siirtyma it−→ j

14 poista tila k ja kaikki nama siihen liittyvat siirtymat

15 if on siirtyma sr−→ f

16 then if on siirtyma sq−→ s

17 then return q∗r18 else return r19 else return ∅

• Otetaan esimerkki tasta menetelmasta:

65

Page 68: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

(i) alkuperainen automaatti:

0

0 0

1

1

1 1

s

(ii) lisataan uusi lopputila:

0

0 0

1

1

1 1εε

s

f

(iii) yhdistetaan rinnakkaiset:

1

εε

s

f0 ∪ 1

0 ∪ 10 ∪ 1

(iv) poistetaan tila:

1s

f0 ∪ 1

0 ∪ 1

ε ∪ (0 ∪ 1)ε

(v) poistetaan tila:

1s

f0 ∪ 1

(0 ∪ 1)(ε ∪ (0 ∪ 1)ε)

(vi) poistetaan tila:

s

f0 ∪ 1

1(0 ∪ 1)(ε ∪ (0 ∪ 1)ε)

Nyt voidaan lukea lopputulos

(0 ∪ 1)∗1(0 ∪ 1)(ε ∪ (0 ∪ 1)ε)

jota voidaan viela hieman sieventaa muotoon

(0 ∪ 1)∗1(0 ∪ 1)(ε ∪ 0 ∪ 1)

josta voidaan lukea vastaus: alkuperainen automaatti hyvaksyy ne binaariaakkostonmerkkijonot, joiden toiseksi tai kolmanneksi viimeinen merkki on ’1’.

• Lausekkeita voi ja kannattaakin sievennella jo menetelman aikana.

Tehtava 26. Muodosta seuraavan automaatin tunnistamaa kielta kuvaava saannollinenlauseke:

a

a, b a

b

b

1 2

3

66

Page 69: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

4.10 Saannollisten kielten sulkeumaominaisuudet

• Matematiikassa sanotaan etta joukko X on suljettu jonkin operaation suhteen, jossoveltamalla operaatiota joukon X alkioihin saadaan tulokseksi aina joukon X al-kioita — eli jos operaatio ei vie pois joukosta X.

• Esimerkiksi luonnollisten lukujen joukko N on suljettu yhteenlaskun suhteen, koskam + n ∈ N jokaisella m, n ∈ N.

Se ei kuitenkaan ole suljettu vahennyslaskun suhteen, koska esimerkiksi 5− 8 6∈ N,vaikka 5, 8 ∈ N.

• Taskastellaan saannollisten kielten joukkoa (s.o. merkkijonojoukkojen joukkoa). Minkalaistenoperaatioiden suhteen se on suljettu?

Lause 5. Olkoot L1 ja L2 aakkoston Σ saannollisia kielia. Talloin myos seuraavat ovatsaannollisia kielia:

yhdiste L1 ∪ L2

leikkaus L1 ∩ L2

katenaatio eli tulo L1L2

komplementti L1 = Σ∗ \ L1

erotus L1 \ L2

(Kleenen) sulkeuma (L1)∗

kaanteiskieli (L1)R = wR | w ∈ L1 eli kielen L1 merkkijonot takaperin kirjoitettuina.

Toisin sanoen saannollisten kielten joukko on suljettu kaikkien naiden operaatioiden suh-teen.

Todistus: Perustellaan alla. 2

• Huomaa etta lause 5 on yksisuuntainen:

Esimerkiksi yhdiste L1∪L2 voi olla saannollinen, vaikka sen osat L1 ja L2 eivat ole.

Esimerkiksi saannollinen kieli

L(a∗b∗) = L1 ∪ L2

voidaan muodostaa osista

L1 = aibj | i ≤ j

ja

L2 = aibj | i > j

joista kumpikaan ei ole saannollinen (mika voidaan osoittaa ”pumppauslemmalla”).

67

Page 70: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Sulkeuma saannollisten operaattoreiden suhteen

• Sannolliset kielet nahdaan helposti suljetuiksi saannollisten lausekkeiden operaatto-reiden suhteen:

• Olkoot A ja B saannollisia kielia, eli A = L(p) ja B = L(q) joillain saannollisillalausekkeilla p ja q.

• Talloin

– A ∪B = L((p ∪ q))

– AB = L((pq)) ja

– A∗ = L(p∗)

• Kukin on ilmaistavissa saannollisella lausekkeella, eli kukin on saannollinen kieli.

Sulkeuma komplementoinnin suhteen

Esimerkki 25. Laaditaan automaatti, joka tunnistaa kielen

L(M) = w ∈ a, b∗ | w ei sisalla merkkijonoa bab.

Laaditaan ensin sen komplementtikielen tunnistava deterministinen automaatti, joka siistunnistaa kielen

L(M) = w ∈ a, b∗ | w sisaltaa merkkijonon bab.

Haluttu automaatti saadaan vaihtamalla hyvaksyvat tilat hylkaaviksi ja painvastoin.

0 1 2 3

a

b a

a

a,bb

b0 1 2 3

a

b a

a

a,bb

b

• Konstruktio edellyttaa, etta mahdolliset virhetilat on esitetty eksplisiittisesti, koskakomplementtiautomaatissa niista tulee hyvaksyvia tiloja.

• Sama voidaan tehda jokaiselle deterministiselle automaattille ja siten jokaiselle saannollisellekielelle.

Muistutus: De Morganin saannot

• Tuttuja koulumatematiikasta tai diskreeteista rakenteista tai matemaattisesta logii-kasta.

• Ilmaisevat joukko-opissa, etta komplementointi kaantaa yhdisteet leikkauksiksi japainvastoin:

A ∪B = A ∩B

A ∩B = A ∪B.

• Osoitetaan naiden nojalla, etta saannollisten kielten A ja B leikkaus on saannollinen:

1. A ∩B = A ∩B

68

Page 71: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

2. De Morgan: A ∩B = A ∪B

3. Saannollisten kielten komplementteina A ja B ovat saannollisia.

4. Siten myos niiden yhdiste A∪B on saannollinen, ja samoin sen komplementti.

• Saannolliset kielet nahdaan edellisen nojalla suljetuiksi myos joukkoerotuksen suh-teen, kun lahdetaan liikkeelle tiedosta A \B = A ∩B.

Saannollisten kielten leikkaus/yhdiste/erotus automaatilla

• Vaihtoehtoisesti saannollisten kielten A ja B joukko-opillinen yhdistelma L′ (yhdis-te, leikkaus tai erotus) voidaan tunnistaa ns. tuloautomaatilla.

• Olkoot M1 = (Q1, Σ, δ1, q1, F1) ja M2 = (Q2, Σ, δ2, q2, F2) deterministiset automaa-tit, joilla A = L(M1) ja B = L(M2).

• Muodostetaan uusi automaatti M ′, jonka

• tiloja ovat alkuperaisten automaattien tilojen parit (p, q) ∈ Q1 ×Q2

• siirtymafunktio δ′ muodostuu komponenttitilojen siirtymista:

δ′((p, q), a) = (δ1(p, a), δ2(q, a))

• lopputilat F ′ valitaan sen mukaan mita joukko-operaatiota toteutetaan:

– Jos L′ = A ∪B, niin F ′ = (p, q) | p ∈ F1 tai q ∈ F2– Jos L′ = A ∩B, niin F ′ = (p, q) | p ∈ F1 ja q ∈ F2– Jos L′ = A \B, niin F ′ = (p, q) | p ∈ F1 ja q 6∈ F2.

Saannollisen kielen kaanteiskieli

• Miksi saannollisen kielen L kaanteiskieli (L)R olisi saannollinen?

• Olkoon M = (Q, Σ, δ, q0, F ) kielen L tunnistava DFA.

• Kuten aiemmin, voidaan olettaa (sallimalla ε-siirtymia), etta automaatilla on yk-sikasitteinen lopputila f .

• Muodostetaan kaanteiskielen hyvaksyva NFA M ′ asettamalla sen alkutilaksi f jalopputilaksi q0 ja ”kaantamalla” automaatin M siirtymat painvastaisiksi.

• Formaalisti automaatin M ′ siirtymafunktio δ′ : Q × (Σ ∪ ε) → P (Q) maaraytyysaannolla δ′(q, a) := p ∈ Q | δ(p, a) = q.

4.11 Saannollisten kielten rajoituksista

Kysymys: Kuinka voidaan havaita, ettei ongelma ratkeakaan aarellisislla automaateilla?Eli ettei vastaava formaalikieli olekaan saannollinen?

Esimerkki 26. Onko sisakkaisten sulkulausekkeiden muodostama kieli L( ) = (k)k | k ≥0 saannollinen?

Yritetaan tehda sille automaatti:

69

Page 72: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

q1 qn

(

)

( ( (

) ) )

)

q0

q2n qn+2 qn+1

qn−1

q2n−1

(

) )

( ( (

) )

q1 qnq0 qn−1

Mutta entapa jos sisakkaisia sulkupareja onkin n + 1 kpl?

Automaattien rajallinen muisti

• Aaarellinen automaatti ”muistaa” merkkijonon alkuosan vain tilojensa avulla.

• Se ei siis voi pitaa kirjaa kaikista nakemistaan merkeista.

• Aareton kieli voi olla saannollinen vain jos siina on jokin toistuva rakenne.

Automaatissa silmukka, saannollisessa lausekkeessa sulkeuma (. . .)∗.

• Saannollisten kielten pumppauslemma formalisoi taman havainnon.

• Kielen osoittaminen saannolliseksi ei ole laskennallisesti ratkeava ongelma, vaan sii-hen tarvitaan ihmisen matemaattista intuitiota — on keksittava sille automaatti tailauseke tai todistettava se sulkeumaominaisuuksien avulla saannollisiksi tiedetyistakielista tai. . .

• Saattaa nayttaa ilmeiselta, etta ”aarellisen muistin” ajatuksen soveltaminen olisijotenkin intuitiivisesti selvaa, eli etta muistivaatimukset nakisi jotenkin ”suoraan”.

Kieli

A = w ∈ 0, 1∗ | w sisaltaa yhta monta nollaa ja ykkosta

ei ole saannollinen (todistetaan pian. . . ). Mutta kieli

B = w ∈ 0, 1∗ | w:ssa esiintyy 01 ja 10 yhta monta kertaa

onkin saannollinen.

Tehtava 27. Todista etta tama kieli B on saannollinen.Vihje: Mieti milla merkilla jono w ∈ B voi alkaa ja milla loppua.

Lause 6. Kielta C = 0n1n | n ∈ N ei voi tunnistaa aarellisella automaatilla.

Todistus: Osoitetaan, etta vastaoletuksesta ”C = L(M) jollain aarellisella automaatil-la M” seuraa ristiriita:

• Olkoon M vastaoletuksen mukainen automaatti ja siina k = |Q| tilaa, ja m = dk/2e.Koska L(M) = C, niin silloin myos syote s = 0m1m ∈ L(M).

70

Page 73: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Taman syotteen s pituus |s| = 2m ≥ k. Merkitaan sen merkkeja s = s1s2 . . . s2m.Syotteella s automaatti kay yhteensa 2m + 1 tilassa, mukaan lukien alkutila (joistaosa (tai kaikki) voivat olla samoja).

• Toisin sanoen, automaatti kay tiloissa:

r10→ r2

0→ · · · 0→ rm+11→ rm+2

1→ · · · 1→ r2m+1.

Eli alkutila q0 = r1 ja δ(ri, si) = ri+1, missa ri ∈ Q.

• Havainto: |Q| = k < 2m + 1 joten jonossa r1 . . . r2m+1 ainakin yksi tila esiintyyuseammin kuin kerran, eli ri = rj jollain i < j.

• Siis merkkijonolla si . . . sj−1 automaatti tekee silmukan tilasta ri takaisin tilaan ri =rj:

r1

ri = rj

r2m+1

y = si . . . sj−1

z = sj . . . s2m

x = s1 . . . si−1

• Automaatti siis hyvaksyy alkuperaisen jonon s = xyz = xy1z kiertamalla silmukanyhden kerran. Merkitaan vastaavaa hyvaksyvaa laskentaa lyhyesti:

r1x→ri

y→riz→r2m+1.

• Silmukan sisaltavasta hyvaksyvasta laskennasta saadaan uusi hyvaksyva laskentaohittamalla silmukka:

r1x→ri

z→r2m+1

Siis automaatti hyvaksyy myos merkkijonon xy0z = xz.

• Silmukkaa voidaan myos toistaa mielivaltaisen monta kertaa:

r1x→ri

y→riy→ri

z→r2m+1.

r1x→ri

y→riy→ri

y→riz→r2m+1.

Siis automaatti hyvaksyy myos merkkijonot xy2z = xyyz, xy3z = xyyyz, xy4z =xyyyyz,. . .

• Kysymys: Kuuluuko merkkijono xy`z kieleen C = 0n1n | n ∈ N jokaisellamahdollisella toistokertojen lukumaaralla ` ∈ N?

71

Page 74: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Tarkastellaan silmukan erilaisia mahdollisia sijainteja merkkijonon s keskikohdansuhteen:

1. i < j ≤ m + 1: nyt y = 0j−i.

2. i < m + 1 < j: nyt y = 0m+1−i1j−m−1.

3. m + 1 ≤ i < j: nyt y = 1j−i.

• Missaan naista tapauksista esimerkiksi xy2z ei kuulu kieleen C:

– tapauksessa 1 siina on liikaa nollia

– tapauksessa 2 se on muotoa 0 . . . 01 . . . 10 . . . 01 . . . 1

– tapauksessa 3 siina on liikaa ykkosia.

• Koska automaatti kuitenkin hyvaksyy merkkijonon xy2z, tama on ristiriita oletuk-sen C = L(M) kanssa.

• Siis kielta C ei voi tunnistaa k-tilaisella aarellisella automaatilla millaan k, eli kieli Cei ole saannollinen. 2

• Edellisen todistuksen perusidea oli osoittaa, etta jos M on k-tilainen automaatti,niin kielella L(M) on pumppauspituus k:

Maaritelma 4. Kielella A on aarellinen pumppausominaisuus, jos on olemassa sellai-nen p, etta mika tahansa s ∈ A, jolla |s| ≥ p, voidaan esittaa muodossa s = xyz, missa

1. xyiz ∈ A kun i = 0, 1, 2, . . .,

2. |y| > 0 ja

3. |xy| ≤ p.

Talloin p on (eras) kielen A pumppauspituus.

• Siis x = ε ja z = ε ovat sallittuja, mutta y 6= ε (ehto 2, koska muuten pumpattavuusolisi triviaalia).

• Kun kielella on aarellinen pumppausominaisuus, milla tahansa riittavan pitkallamerkkijonolla s on epatyhja ”keskiosa” y, jota ”pumppaamalla” saadaan uusia kie-leen kuuluvia merkkijonoja xy2z, xy3z, . . .

Lause 7 (Saannollisten kielten pumppauslemma). Jokaisella saannollisella kielella onaarellinen pumppausominaisuus.

Todistus: Sivuutetaan, idea on kuten edellisen lauseen todistuksessa yleistettyna milletahansa saannolliselle kielelle. 2

• Intuitiivisesti, sama suomeksi: Aarettoman saannollisen kielen tunnistavassa auto-maatissa on silmukka siten, etta

1. xyiz ∈ A: silmukka voidaan kiertaa mielivaltaisen monta (i) kertaa, ja siltivoidaan paasta jonolla z hyvaksyvaan tilaan.

2. |y| > 0: silmukka ei ole tyhja, vaan siihen kuuluu vahintaan yksi ei-tyhja siir-tyma.

72

Page 75: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

3. |xy| ≤ p: laskennan taytyy joutua silmukkaan ennen kuin automaatista loppu-vat tilat.

• Siis pumppautuvuusehto 2 tarkoittaa, etta kieli sisaltaa merkkijonot xz, xyz, xyyz,xyyyz,. . .

• Ehdosta 2 seuraa, etta nama jonot ovat toinen toistaan pidempia. Siis merkkijonoa y”pumppaamalla” saadaan rajattomasti uusia kieleen kuuluvia merkkijonoja.

• Jos merkkijono s on pumppautuva, se kuuluu kieleen, koska s = xy1z. Lisaksise sisaltaa osajonon y, jonka poistaminen tai monistaminen tuottaa uusia kielenmerkkijonoja.

• Ehdon 3 nojalla tama osajono y loytyy jonon s alkuosasta, jonka pituus on p.

• Kielen pumppautuvuus tarkoittaa, etta jokainen tarpeeksi pitka kieleen kuuluvamerkkijono on pumppautuva.

Pumppauslemman soveltaminen

• Kiinnostavaa vain aarettomille kielille (aarelliset kielet ovat aina saannollisia).

• Pumppauslemman mukaan milla tahansa saannollisella kielella A on pumppauso-minaisuus, toisin sanoen jollakin p ∈ N

mille tahansa sellaiselle s ∈ A joka on riittavan pitka eli |s| ≥ p

on olemassa jako s = xyz jolla pumppausehdot 1–3 toteutuvat.

• Pumppauslemmalla ei voi osoittaa kielen saannollisyytta, vain ei -saannollisyyden.

(Eika aina sitakaan, koska on olemassa ei-saannollisia kielia, joilla on aarellinenpumppauspituus. . . )

• Ideana todistus kontrapositiolla, eli lemmaa kaytetaan ”kaanteisesti”;

”A on saannollinen ⇒ A on pumpattavissa” ≡”A ei ole pumpattavissa ⇒ A ei ole saannollinen”

• Toisin sanoen, on osoitettava, etta mille tahansa p ∈ N

on olemassa sellainen s ∈ A, etta |s| ≥ p ja

mille tahansa sen jaolle s = xyz jokin pumppausehdoista 1–3 jaa toteutumatta.

• Siis aluksi voimme itse valita s sopivasti helpottamaan todistusta, mutta sittenmeidan pitaa kayda lapi kaikki mahdolliset tavat jakaa valitsemamme s osiin x, yja z ja osoittaa, etta mikaan ei toteuta pumppausehtoja.

• Toisin sanoen, kun halutaan todistaa kieli ei-saannolliseksi, tehdaan vastaoletus, elioletetaan se saannolliseksi, ja osoitetaan etta tasta seuraa ristiriita. . .

• . . . jonka voi osoittaa kayttamalla pumppauslemmaa. . .

• . . . mutta jonka voi osoittaa muutenkin:

Esimerkiksi sulkeumaominaisuuksien avulla (”palautetaan” ongelma tunnettuun kie-leen).

73

Page 76: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkki 27. Kieli C = 0n1n | n ∈ N ei ole saannollinen.

Todistus:

• Tehdaan vastaoletus etta C olisikin saannollinen.

• Silloin silla olisi aarellinen pumppausominaisuus, eli jokin vakio p siten, etta jokainenainakin niin pitka merkkijono s ∈ C (eli |s| ≥ p) jakautuu jotenkin osiin s = xyzjotka tayttavat ominaisuuden 3 ehtoa.

Me emme tieda vakion p arvoa, mutta me saamme valita sellaisen merkkijonon skuin haluamme (kunhan valitsemme tarpeeksi pitkan).

• Kun olemme valinneet merkkijonomme s, niin me emme tieda sen jaosta s = xyzmuuta kuin nama 3 ominaisuutta.

• Koska tavoittelemme ristiriitaa, niin useimmiten kannattaa valita s siten, ettaehdot 2 ja 3 ovat voimassa, ja osoittaa etta silloin ehtoa 1 ei enaa saadakaan voimaan.

• Tassa todistuksessa kannattaa valita s = 0p1p (tai jokin viela pidempi) koska silloinehdot 2 ja 3 kertovat meille paljon osien xy rakenteesta:

x = 0j y = 0k z = 0p−(j+k)1p

jossa k > 0 mutta j + k ≤ p.

• Koska tama jarkeilymme ei oleta naista arvoista j ja k yhtaan mitaan muuta, niinolemme todellakin tulleet kayneeksi lapi samalla kertaa kaikki mahdolliset jaot.

• Nyt ehdon 3 mukaan (vaikkapa) i = 0 kertaa pumpattu merkkijono

0j0p−(j+k)1p = 0p−k1p ∈ C.

Mutta toisaalta kielen C maaritelman mukaan pitaisi olla

samalla merkkijonolla 0p−k1p 6∈ C

koska k > 0.

• Tassa on etsimamme ristiriita joka todistaa, etta vastavaite olikin vaarin, elietta alkuperainen vaite olikin oikein. 2

• Pumppauslemman ohella kaytossamme ovat myos saannollisten kielten sulkeumao-minaisuudet (lause 5) ja muut saannollisiksi ja ei-saannollisiksi tunnetut kielet.

Esimerkki 28. Osoita, etta

D = w ∈ 0, 1∗ | w sisaltaa yhta monta nollaa ja ykkosta

ei ole saannollinen.

Todistus: Tehdaan taas vastaoletus: D on saannollinen.

• Kieli 0∗1∗ on selvasti saannollinen (joko kuvaavan lausekkeensa tai tunnistavan au-tomaattinsa kautta).

• Siten kieli (0∗1∗) ∩D on saannollinen (tunnettu sulkeumaominaisuus).

74

Page 77: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Tama on ristiriita, koska (0∗1∗) ∩D on sama kuin C = 0n1n | n ∈ N, joka onaiemmin todistettu ei-saannolliseksi esimerkissa 27. 2

Esimerkki 29. Osoita, etta kieli

D = w ∈ 0, 1∗ | w sisaltaa yhta monta nollaa ja ykkosta

ei ole saannollinen.

Todistus: Tehdaan jalleen se vastaoletus etta D on saannollinen. Edetaan pump-pauslemmalla:

• Valitaan s = 0p1p . Olkoon s = xyz ∈ D.

• Siis y 6= ε ja |xy| ≤ p, joten y koostuu yhdesta tai useammasta nollasta. Koska xyz ∈D, niin xyyz sisaltaa nollia enemman kuin ykkosia, joten xyyz 6∈ D. Ristiriita.2

• Miten valitaan sopiva s?

Jos olisi valittu s = (01)p, ei olisi saatu ristiriitaa, koska tata voidaan pumpata(esim. x = ε, y = 01, z = (01)p−1).

Pitaisi siis keksia (sille tuntemattomalle) ”automaatille hankalia tapauksia”.

Heuristisia ohjeita ei-saannollisyystodistuksiin

• Mika ominaisuus tekee kielen ei-saannolliseksi?.

Usein ominaisuus koskee kahta sanan osaa, joiden valilla vallitsee jokin ehto. Tamaominaisuus voi koskea esim.

– tiettyjen merkkien lukumaarien keskinaista suhdetta, esim.

L1 = akbmcm | k,m = 0, 1, 2, . . .L2 = amb2m | m = 0, 1, 2, . . .

– sanan eri osia, esim. sanan alku- ja loppuosa riippuvat jotenkin toisistaan:

L3 = wwR | w ∈ Σ∗L4 = ww | w ∈ Σ∗.

• Mika on yksinkertaisin, mielivaltaisen pituinen merkkijono, jossa tama ominaisuusesiintyy?

– Joskus kielessa on todistuksen kannalta taysin turhia (saannollisia) osia, esim.kielessa L1 merkin a lukumaaralla ei ole mitaan valia — voidaan valita merk-kijono bmcm.

– Mutta jos ehdon osapuolten valissa on tuollainen saannollinen osa, se saattaaolla tarpeen osapuolien erottamiseen toisistaan, esim. kielessa

L5 = ambkam | m, k = 0, 1, 2, . . .

tarvitaan ainakin yksi b erottamaan alkuosan ja loppuosa merkit a. Valitaanesim. ambam.

75

Page 78: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Jos kielen alku- ja loppuosa riippuvat jotenkin toisistaan, mutta muuten nesaavat olla mita tahansa, riittaa erottaa alku- ja loppuosa toisistaan.

Esim. kielen L4 kohdalla voidaan valita ambamb tai bambam.

• Valitse s siten, etta eheysehdon toinen osapuoli kuuluu ensimmaiseen p merkkiin jasita paastaan pumppaamaan.

Toinen tavoite on, etta merkkijonon mahdollisia erilaisia jakoja osiin xyz olisi mah-dollisimman vahan.

Tata kaytimme esimerkin 27 todistuksessamme, ettei kieli C = 0n1n | n ∈ N olesaannollinen: valitsimme merkkijonon s niin pitkaksi, etta alkuosa x ja pumppau-tuva osa y olivat molemmat 0-jonoja.

• Testaa kaikki pumppauslemman mukaiset jaot w = xyz, |xy| ≤ p ja y 6= ε.

Jokaisella jaolla kokeile pumppausta ”kierroslaskurin” i arvoilla 0, 2, 3, . . . kunnesloytyy sellainen arvo i, etta xyiz ei kuulu kieleen — yleensa i = 0 tai i = 2 riittaa.

• Saannollisten kielten luokka on suljettu (erityisesti) leikkauksen ja komplementinsuhteen.

– On annettu kieli A, joka pitaisi osoittaa ei-saannolliseksi.

– Valitaan jokin saannollinen kieli B, Jos nyt A ∩ B ei ole saannollinen, niinmyoskaan A ei ole saannollinen.

(On kuitenkin oltava tarkkana, esim. kahden ei-saannollisen kielen leikkaus voiolla saannollinen.)

– Jos A (komplementti) on ei-saannollinen, niin myos A on ei-saannollinen.

– Voitaisiin siis soveltaa pumppauslemmaa kieliin C = A ∩ B tai D = A, muttajoskus C tai D voi olla jokin tunnetusti ei-saannollinen kieli, jolloin erillistapumppauslemma-todistusta ei tarvita.

Pikakertaus: tahan mennessa. . .

• Deterministinen aarellinen automaatti (DFA): yksinkertainen laskentalaite, muistiavain vakiomaara, syotteen pituudesta riippumatta.

• Saannolliset kielet: niiden kielten luokka, joka voidaan tunnistaa DFA:lla.

• Epadeterministinen aarellinen automaatti (NFA): kieli voidaan tunnistaa DFA:llajos ja vain jos se voidaan tunnistaa NFA:lla. NFA on hyodyllinen kuvausformalismi.DFA voi vaatia eksponentiaalisesti enemman tiloja kuin NFA.

• Kieli voidaan tunnistaa DFA:lla jos ja vain jos se voidaan esittaa saannollisellalausekkeella.

• Kaikki kielet eivat ole saannollisia. Pumppauslemmaa voidaan kayttaa kielen epa-saannollisyyden osoittamiseen. Eras esimerkki ei-saannollisesta kielesta on w | w =wR, w ∈ a, b∗

• Tahan mennessa: saannolliset kielet, tunnistus aarellisella automaatilla

• Seuraavaksi: kontekstittomat kielet, tunnistus pinoautomaatilla

• Kaikki muut kielet: vain osittain ratkeavia (”kylla”-tapauksessa) tai taysin ratkea-mattomia.

76

Page 79: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Koetehtavia?

• Yleisesti, samantyylisia kuin luentojen esimerkit ja kotitehtavat.

Perustehtavaprototyyppi:

Tehtava 28. Laadi DFA / NFA joka tunnistaa kielen X.Minimoi / determinisoi automaatti kayttaen luennoilla annettua menetelmaa.Mika on automaattia / kielta vastaava saannollinen lauseke?Muunna saannollinen lauseke automaatiksi tai automaatti lausekkeeksi kayttaen luen-

noilla annettua menetelmaa.Jne. . .

Soveltavampaa:

Tehtava 29. Saannollinen kieli A voidaan tunnistaa deterministisella aarellisella au-tomaatilla MA. Kielen A komplementtikieli A voidaan tunnistaa automaatilla MA, jokasaadaan automaatista MA vaihtamalla hyvaksyvat tilat ei-hyvaksyviksi, ja ei-hyvaksyvathyvaksyviksi. Toisin sanoen saannollisten kielten luokka on suljettu komplementin suhteen.

Edelleen, olkoon M ′A epadeterministinen automaatti, joka tunnistaa kielen A. Voi-

daanko automaatista M ′A vaihtaa hyvaksyvien ja ei-hyvaksyvien tilojen roolit edella kuva-

tulla tavalla, ja saada tulokseksi epadeterministinen aarellinen automaatti joka tunnistaakielen A?

Onko epadeterminististen automaattien tunnistamien kielten luokka suljettu komple-mentoinnin suhteen?

Tehtava 30. Miten mielivaltaisesta NFA:sta saadaan NFA jossa on vain yksi hyvaksyvatila?

Tehtava 31. Voiko saannollista kielta 0∗ ∪ 1∗ tunnistaa deterministisella aarellisella au-tomaatilla, jossa on vain yksi hyvaksyva tila? Perustele.

Tehtava 32. Osoita, etta saannollisten kielten luokka on suljettu leikkauksen suhteen.

Tehtava 33. Olkoon A saannollinen kieli. Osoita, etta myos AR = wR | w ∈ A onsaannollinen.

Tehtava 34. Olkoot kielet A ja B saannollisia. Onko kieli C = A∆B = (A∩B)∪(B∩A)saannollinen? (Siis w ∈ C, jos w kuuluu joko kieleen A tai B, mutta ei molempiin.)Perustele.

Tehtava 35. Mitka seuraavat aakkoston Σ = a, b kielista ovat saannollisia?

1. E = anan | n ∈ N

2. F = wuwR | w, u ∈ Σ+

3. G = ww | w ∈ Σ∗

4. H = aibj | i 6= j

77

Page 80: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

5 Kontekstittomat kielet ja pinoautomaatit

• Kontekstittomat kielet (context-free languages, ”yhteydettomat” kielet) voidaan

– kuvata kontekstittomilla kieliopeilla (context-free grammar) ja

– tunnistaa epadeterministisilla pinoautomaateilla (pushdown automaton).

• Verrattuna edelliseen lukuun, korvaamme saannolliset lausekkeet nailla kieliopeilla,ja epadeterministiset aarelliset automaatit nailla pinoautomaateilla.

• Pinoautomaatti on kuten aarellinen automaatti, johon on lisatty rajoittamattomansuuri muisti.

– Tama muisti on TRA-kurssilta tuttu pino (stack).

– Tama ”rajoittamattoman suuri muisti” tarkoittaa, etta pino-operaatiot eivatkoskaan jumiudu virheilmoitukseen ’’Out Of Memory Error’’.

• Tavoitteet:

– Opitaan mita ovat kontekstittomat kielet ja pinoautomaatit, ja mika on niidenvalinen suhde.

– Opitaan muodostamaan kielioppi yksinkertaisille kontekstittomille kielille.

– Opitaan jasentamisen perusideat.

• Johdatteleva esimerkki: Miten kuvaisit seuraavat kielet?

– Sisakkaisten sulkulausekkeiden kieli:

L( ) =(k)k | k ≥ 0

– if–else-parien muodostama kieli:

Lif-else =ifk elsel | l ≤ k

Ne eivat ole saannollisia, joten saannollisilla lausekkeilla se ei onnistu.

• Ratkaisuyritys: Annetaan kielelle L( ) rekursiivinen kuvaus:

– Merkitaan S = ”mielivaltainen sisakkainen sulkulauseke”.

– Talloin S on sisakkainen sulkulauseke, jos

1. S = ε tai

2. S on muotoa (S ′), missa myos S ′ on sisakkainen sulkumerkkijono.

– Toinen kuvaustapa (ensimmainen kontekstiton kielioppimme):

1. S → ε

2. S → (S)

– Esimerkiksi merkkijonon ((())) tuottaminen:

S ⇒ (S)⇒ ((S))⇒ (((S)))⇒ (((ε))) = ((()))

• Vastaava jasennyspuu (tahan palataan viela):

78

Page 81: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

( (( ) ) )

S

S

S

ε

Kontekstittoman kieliopin idea

• Joukko muuttujasymboleita ja muunnossaantoja ”taman muuttujan esiintyman saakorvata tuolla merkkijonolla” joka voi vuorostaan sisaltaa uusia muuttujasymbolienesiintymia.

• Yksi naista muuttujasymboleista on erityinen aloitussymboli.

• Muunnetaan merkkijonoa nailla saannoilla, kunnes siina ei enaa esiinny muuttuja-symboleita. Nain on tuotettu lopullinen merkkijono.

Esimerkki 30. Yksinkertainen kielioppi aritmeettisille lausekkeille:

E → T | E + TT → F | T ∗ FF → a | (E).

Esimerkiksi ensimmainen rivi luetaan ”muuttujasymboli E voidaan korvata merkkijonol-la ’T ’ tai merkkijonolla ’E + T ’ jossa T on toinen muuttujasymboli ja ’+’ merkki”.

Se tuottaa vaikkapa aritmeettisen lausekkeen (a + a) ∗ a seuraavasti:

E ⇒ T ⇒ T ∗ F ⇒ F ∗ F⇒ (E) ∗ F ⇒ (E + T ) ∗ F ⇒ (T + T ) ∗ F⇒ (F + T ) ∗ F ⇒ (a + T ) ∗ F ⇒ (a + F ) ∗ F⇒ (a + a) ∗ F ⇒ (a + a) ∗ a

Kussakin vaiheessa on korvattu alleviivattu muuttujasymbolin esiintyma.

Kontekstittoman kieliopin formaali maaritelma

Maaritelma 5. Kontekstiton kielioppi on nelikko

G = (V, Σ, P, S)

jossa

79

Page 82: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• aarellinen joukko V on kieliopin aakkosto;

• Σ ⊆ V on kieliopin paatemerkkien joukko;

• sen komplementti N = V \ Σ on kieliopin valikemerkkien eli -symbolien joukko(joita edella kutsuimme muuttujasymboleiksi);

• aarellinen joukko P ⊆ N × V ∗ on kieliopin saantojen eli produktioiden joukko; ja

• S ∈ N on kieliopin lahtosymboli.

Saantoa (A, ω) ∈ P merkitaan A→ ω. Sen voi lukea ”valike A voi tuottaa/johtaa merk-kijonon ω”.

• Intuitiivisesti kontekstiton kielioppi G = (V, Σ, P, S) tuottaa merkkijonoja ∈ Σ∗

seuraavalla epadeterministisella algoritmilla:

1 r ← S2 while r sisaltaa valikesymboleja3 do valitse jokin A ∈ N (siis vaikka ensimmainen tai

viimeinen) jonosta r = αAβ, missaα ∈ V ∗ on sita ennen tuleva osa, jaβ ∈ V ∗ on sen jalkeen tuleva osa

4 valitse jokin valikkeen A saanto A→ ω ∈ P5 r ← αωβ6 tulosta nain saatu r

• Silloin kieliopin G tuottama formaali kieli L(G) muodostuu merkkijonoista r, jotkatama algoritmi voi tulostaa valitsemalla saannot sopivasti rivillaan 4.

Kontekstittoman kielen formaali maaritelma

• Merkkijono αAβ ∈ V ∗, jossa A ∈ N , voi tuottaa tai johtaa suoraan merkkijononαωβ ∈ V ∗, jos kieliopissa G on saanto A→ ω ∈ P .

Tata merkitaan

αAβ⇒G

αωβ

Esimerkiksi seka

T ∗ F ⇒G

F ∗ F

etta

T ∗ F ⇒G

T ∗ a

esimerkin 30 kieliopissa G aritmeettisille lausekkeille.

80

Page 83: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Merkkijono γ0 ∈ V ∗, voi tuottaa tai johtaa merkkijonon γn ∈ V ∗, jos on olemassajono merkkijonoja ∈ V ∗ siten, etta

γ0⇒G

γ1⇒G

γ2⇒G· · · ⇒

Gγn

eli jos ”merkkijono γ0 voi tuottaa suoraan merkkijonon γ1 joka voi tuottaa suoraanmerkkijonon γ2 joka voi tuottaa suoraan merkkijonon. . . joka voi tuottaa suoraanmerkkijonon γn”.

Tata merkitaan

γ0⇒G

∗γn

Esimerkiksi aritmeettisten lausekkeiden kieliopilla G patee

T ∗ F⇒G

∗(E) ∗ a

koska siina voidaan johtaa

T ∗ F ⇒G

F ∗ F

⇒G

(E) ∗ F

⇒G

(E) ∗ a .

• Erikoistapauksena jokainen merkkijono γ ∈ V ∗ voi tuottaa itsensa eli

γ⇒G

∗γ

tyhjalla jonolla (jossa n = 0). Esimerkiksi

T ∗ F⇒G

∗T ∗ F .

• Merkkijono γ ∈ V ∗ on kieliopin G lausejohdos, jos γ voidaan johtaa sen lahto-symbolista S:

S⇒G

∗γ.

Esimerkiksi (E) ∗ a ja (a + a) ∗ a ovat lausejohdoksia esimerkin 30 kieliopissa arit-meettisille lausekkeille.

• Kieliopin G lause on sen pelkista paatemerkeista koostuva lausejohdos:

S⇒G

∗γ ja γ ∈ Σ∗.

Esimerkiksi (a + a) ∗ a on lause esimerkin 30 kieliopissa aritmeettisille lausekkeille.

• Kieliopin G tuottama tai kuvaama kieli koostuu sen lauseista:

L(G) =

γ ∈ Σ∗ | S⇒G

∗γ

.

L(G) on siis kaikkien niiden lauseiden (merkkijonojen) joukko, jotka voidaan tuottaakieliopilla G aloittamalla sen lahtosymbolista S.

Maaritelma 6. Formaali kieli L ⊆ Σ∗ on kontekstiton, jos se voidaan tuottaa jollakinkontekstittomalla kieliopilla.

81

Page 84: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Kontekstista

• Sana ”konteksti” (englanniksi ”context”) on suomeksi ”lauseyhteys”.

• Siten sanan ”kontekstiton” tilalla kaytetaankin joskus sanoja ”yhteydeton” tai ”yh-teysvapaa”.

• ”Kontekstiton” viittaa siihen, etta kieliopin saannot ovat muotoa A → ω, mikavoidaan tulkita siten, etta

muuttuja A voi tuottaa merkkijonon ω, olipa sen ymparilla mita tahansa.

• Kontekstittoman kieliopin yleistys on konteksti(lli)nen kielioppi (context-sensitivegrammar). Tallaisen kieliopin saannot ovat muotoa

αAβ → αωβ

jossa α, β ∈ V ∗ ja ω ∈ V +. Tallainen saanto tulkitaan siten, etta

muuttuja A voidaan korvata (epatyhjalla) merkkijonolla ω jos sen edessaon α ja perassa β — eli jos A on lauseyhteydessa jotakinαAβmuuta niinsilloin siita voidaan johtaa jotakinαωβmuuta.

Lisaksi voidaan sallia produktio S → ε, jotta kielioppi voi hyvaksya myos tyhjanmerkkijonon.

• Esimerkiksi kielianbncn | n ∈ N

ei ole kontekstiton, mutta se voidaan esittaa kayttamalla kontekstisia saantoja.

• Kontekstisia kielioppeja ei kasitella talla kurssilla. Nekin ovat silti kiintoisia. . .

automaattien teoriassa: Kuten jo vihjattiin, kontekstittomat kielet voidaan tun-nistaa automaateilla joilla on tavallinen pino.

Kontekstiset taas automaateilla joilla on avopino.

laskennan vaativuusteoriassa: Kontekstiset kielet ovat ne, jotka voidaan tun-nistaa kayttamalla ”realistinen” eli polynominen maara muistia.

• Jos sallitaan rajoittamattomat produktiot α→ β, missa α ∈ V + ja β ∈ V ∗, niin saa-daan rajoittamattomat kieliopit ja kielet, joilla voidaan kuvata kaikki algoritmisestigeneroitavissa olevat kielet.

Vakiintuneita merkintatapoja

• Valikesymboleita merkitaan isoilla kirjaimilla: A, B, C, . . . , S, T

• Paatemerkkeina kaytetaan

– pienia kirjaimia a, b, c, . . . , s, t;

– numeromerkkeja 0, 1, . . . , 9;

– erikoismerkkeja;

– varattuja sanoja kuten if,for,end,. . . lihavoituina tai alleviivattuina.

82

Page 85: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Mielivaltaisina merkkeina (kun valikkeita ja paatemerkkeja ei erotella) kaytetaanX, Y, Z.

• Paatemerkkijonoina kaytetaan u, v, w, x, y, z.

• Sekamerkkijonoina kaytetaan α, β, γ, . . . , ω.

• Kielioppi esitetaan usein pelkkana saantojoukkona:

A1 → ω11 | . . . | ω1k1

A2 → ω21 | . . . | ω2k2

...Am → ωm1 | . . . | ωmkm

Talloin

valikesymbolit paatellaan joko edellisten merkintasopimusten mukaan tai siita,etta ne esiintyvat saantojen vasempina puolina

lahtosymboli on ensimmaisen saannon vasempana puolena esiintyva valike; tassasiis A1.

Esimerkki 31. Sisakkaisten sulkujonojen muodostaman kielen L( ) = (k)k | k ≥ 0tuottaa kielioppi

G( ) = (S, (, ), (, ), S → ε, S → (S), S)

Esimerkki 32. Tasapainoisten sulkujonojen muodostaman kielen tuottaa kielioppi

G( ) = (S, (, ), (, ), S → ε, S → (S), S → SS, S)

Esimerkiksi ()(()) on tasapainoinen muttei sisakkainen sulkujono. Taman mahdollistaauuden saannon lisaamisen edellisen esimerkin 31 kielioppiin.

Esimerkki 33. Kielen aibkck | i, k = 0, 1, . . . voi tuottaa kieliopilla G = (V, Σ, P, S),jossa

V = S, A,B, a, b, cΣ = a, b, cP = S → AB, A→ aA, A→ ε, B → bBc, B → ε.

Esimerkki 34. Yksinkertaisten aritmeettisten lausekkeiden muodostaman kielen Lexpr

tuottaa kielioppiGexpr = (V, Σ, P, E) (8)

jossa

V = E, T, F, a, +, ∗, (, ),Σ = a, +, ∗, (, ),P = E → T, E → E + T, T → F, T → T ∗ F,

F → a, F → (E).

83

Page 86: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Kieliopilla (8) voidaan johtaa esim. seuraavat lausejohdokset:

E⇒G

E + T

⇒G

T + T

⇒G

T ∗ F + T

⇒G

F ∗ F + T

⇒G

a ∗ F + T

⇒G

a ∗ (E) + T

⇒G

a ∗ (T ) + T

⇒G

a ∗ (F ) + T

⇒G

a ∗ (a) + T

⇒G

a ∗ (a) + F

⇒G

a ∗ (a) + a.

• Toinen kielioppi kielen Lexpr tuottamiseen on

G′expr = (V, Σ, P, E) , (9)

jossa

V = E, a, +, ∗, (, ),Σ = a, +, ∗, (, ),P = E → E + E, E → E ∗ E, E → a, E → (E)

Esimerkki 35. XML-dokumenttien kaavioformalismit kuten DTD (Document Ty-pe Definition) muistuttavat kontekstittomia kielioppeja.

Dokumenttikaavio kuvaa dokumentin elementtirakennetta, joka nakyy sen XML-koodauksessakaytettavista elementtitunnisteista (eli ”tageista”) kuten <lasku> ja </lasku> alla:

<lasku><asiakas><etunimi>Kalle</etunimi>

<sukunimi>Kononen</sukunimi>

</asiakas>

<tuote><nimi>suksi</nimi><hinta>99</hinta><lkm>2</lkm></tuote>

<tuote><nimi>pitoteippi</nimi><hinta>5</hinta><lkm>1</lkm></tuote>

</lasku>

Dokumenttikaavioiden valikkesymboleina kaytetaan elementtien nimia kuten alla:

<!ELEMENT lasku (asiakas, tuote+)>

<!ELEMENT asiakas (etunimi, sukunimi, osoite?)>

<!ELEMENT tuote (nimi, hinta, lkm)>

Validi elementti on talloin sita vastaavan valikesymbolin tuottama lause. Elementtisisallolletyypillinen valinnaisuus ja toisto kuvataan saannollisilla lausekkeilla. Sikali dokumentti-kaaviot muistuttavat ns. laajennettuja kontekstittomia kielioppeja (ECFG), joiden pro-duktiot voivat samoin sisaltaa saannollisia lausekkeita.

84

Page 87: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Oleellisin ero kontekstittomiin kielioppeihin: Kontekstittomat kieliopit kuvaavat merk-kijonoja. Dokumenttikaaviot sita vastoin kuvaavat konkreettisen tekstiesityksen sijasta hie-rarkkista elementtirakennetta. Siten dokumenttikaaviot vastaavat pikemmin ns. saannollisiapuukielioppeja, joita vastaavat laskentamallit ovat ns. puuautomaatteja.

Esimerkki 36. Tarkastellaan suomen kielen virketta, joka koostuu yksinkertaisesta paa-lauseesta seka nollasta tai useammasta sisakkaisesta relatiivilauseesta:

Lrel = subj (joka pred attr obj)∗ pred attr obj

Tallaisia virkkeita voidaan tuottaa esim. seuraavilla kontekstittoman kieliopin Grel saannoilla:VIRKE → SUBJ SL PRED ATTR OBJSL → joka PRED ATTR OBJ SL | εSUBJ → poika | tytto | janis | susi | peikkoPRED → pelkasi | metsastiATTR → suurta | pienta | vihaista | hirmuista | arkaaOBJ → poikaa | tyttoa | janista | sutta | peikkoa

• Mita virkkeita voit johtaa lahtosymbolista VIRKE?

• Kontekstittomat kieliopit ovat luontaisia positionaalisille kielille, jossa ”kuka tekimita kenelle” ilmaistaan niiden paikoilla lauseessa.

– Esimerkiksi englannin kielessa on sanajarjestys on valtaosin subjekti-verbi-objekti (SVO) kuten ylla.

– Mutta suomen kielessa sanajarjestys onkin vapaa ja ”kuka teki mita kenelle”ilmaistaankin sijamuodoilla.

Esimerkki 37. Ohjelmointikielten syntaksin kuvaus. Pascalin osajoukko:

lause → ehtolause | koottu-lause | sijoitus | kutsuehtolause → if ehto then lause else lause

ehto → x=0koottu-lause → begin lausejono end

lausejono → lause | lause ; lausejonosijoitus → x:=0

kutsu → a | b | c

Tasta on hyotya ohjelmoijalle (syntaksi pitaa osata, jos aikoo ohjelmoida), mutta myoskaantaja (tai yksi sen osa, jasennin (englanniksi ”parser”)) voidaan laatia ”suoraviivai-sesti” perustuen kielioppiin.

Jasennysta edeltaa yleensa selausvaihe, jossa ohjelman lahdekoodi pilkotaan ylla ku-vattuihin osiin (varatut sanat, muuttujat, aliohjelmien nimet, vakiot, jne) kayttaenaarelliseen automaattiin perustuvaa transduktoria. (Ks. sivu 114.)

Tehtava 36. Laadi kontekstiton kielioppi, joka tuottaa rajattoman monista sisakkaisistafor-silmukoista, alkeisoperaatioista a ja kokonaislukuvakioista N koostuvat ohjelmointi-kielen lauseet, kuten

for (i=N; i<N; i++) for (j=N; j<N; j++)

a

85

Page 88: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Induktiivisista notaation maaritelmista

• Usein maaritellaan jokin notaatio induktiivisesti eli itseensa viittaavasti kuvailemal-la se luonnollisella kielella.

Itse asiassa silloin maaritellaankin usein notaatiolle kontekstiton kielioppi, sita vainei lausuta aaneen.

• Esimerkiksi edella maariteltiin aakkoston Σ saannolliset lausekkeet:

– ”Vakiot ∅ ja ε ovat jokaisen aakkoston saannollisia lausekkeita” — siis kielio-pissa on saannot S → ∅ ja S → ε.

– ”aakkoston jokainen merkki a ∈ Σ on sen saannollinen lauseke” — siis kielio-pissa on oma saantonsa S → a jokaiselle a ∈ Σ

– ”jos r ja s ovat aakkoston Σ saannollisia lausekkeita, niin myos (r∪s), (rs) jar∗ ovat sen saannollisia lausekkeita” — siis kieliopissa on saannot

S → (S∪S) S → (SS) S → S∗

joissa on kaytetty sita mahdollisuutta viitata tahan parhaillaan maariteltavanaolevaan notaatioon myos sita maarittelevien saantojen oikeilla puolilla.

• Sitten usein jatketaan maarittelemalla saannot, joilla sulkuja voi jattaa pois.

Sen vastine kieliopissa on hierarkkinen rakenne.

• Esimerkiksi saannollisille lausekkeille maariteltiin etta ”Operaattoreista ’∗’ sitoovahvimmin, sitten tulo, ja heikoimmin ’∪’”.

– Vastaava hierarkkinen rakenne esitetaan uusilla valikkeilla ja saannoilla jotkakorvaavat entiset:

S → T∪S S → T

T → UT T → U

U → U∗ U → V U → (S)

V → ∅ V → ε V → a jokaisella merkilla a ∈ Σ

jossa U sitoo vahvimmin, sitten T ja heikoimmin S.

– Sulkuja tarvitaan vain silloin, kun hypataan vahvemmasta takaisin heikom-paan.

– Ideana on, etta notaatiolla kirjoitettujen ilmausten rakenne eli ns. jasennyspuusailyy yksiselitteisena vaikka sukuja ei olekaan. Tahan palataan myohemmin.

• Myos induktiivisesti maaritellyn notaation merkitys maaritellaan induktiivisesti, elisuhteessa tahan aaneen lausumattomaan kielioppiin.

• Esimerkiksi saannollista lauseketta r vastaava kieli L(r) ⊆ Σ∗ maariteltiin tahantapaan:

L(∅) = ∅ L(ε) = εL(a) = a jokaisella a ∈ Σ L((r ∪ s)) = L(r) ∪ L(s)

L((rs)) = L(r)L(s) L(r∗) = (L(r))∗

Kieliopillisesti tallainen maaritelma tarkoittaa esimerkiksi etta ”Kun kaytetaan saantoaS → (S∪S) niin silloin

86

Page 89: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1. ensin luodaan nailla samoilla periaatteilla se kieli L1 jonka maarittelee saannonoikean puolen ensimmainen S — jota edella merkittiin r

2. sitten se L2 jonka maarittelee jalkimmainen S — jota merkittiin s

3. lopuksi sovitaan, etta saannon oikealla puolella oleva S maarittelee niista ra-kennetun kielen L1 ∪ L2.

• Nain kielioppisaantoihin voidaan liittaa ominaisuuksia eli attribuutteja seka niille”laskusaantoja”, ja saadaan maariteltya notaatiolle yhta aikaa

syntaksi eli miten notaation ilmaukset pitaa kirjoittaa

semantiikka eli miten nama oikein kirjoitetut ilmaukset pitaa ymmartaa.

• Tallaiset attribuuttikieliopit ovat keskeinen tyovaline silloin kun tietokone ohjelmoi-daan kasittelemaan notaatiota

syntaktisesti eli tarkistamaan etta ilmaus on oikein kirjoitettu — tata jasennysongelmaakasitellaan talla kurssilla

semanttisesti eli laskemaan oikein kirjoitetun ilmauksen merkitys sen jasennyspuustanailla laskusaannoilla — tatakin sivutaan.

(Tama on kuitenkin ”syntaktista semantiikkaa” — eihan tietokone todellisuu-dessa mitaan ”ymmarra”. . . )

• Kehitimmekin laskusaannot ”taman saannollisen lausekkeen maarittelemaa kieltavastaava aarellinen automaatti” lauseen 3 todistuksena!

5.1 Kontekstittomien kielten sulkeumaominaisuuksista

• Kontekstittomia kielioppeja on helppo tuottaa soveltamalla monia vastaavia ope-raatioita kuin saannollisissa lausekkeissa.

• Huomaa: Kontekstittomien kielten luokka ei kuitenkaan ole suljettu kaikkien sa-mojen operaatioiden suhteen kuin saannollisten kielten luokka!

Lause 8. Jos A ja B ovat kontekstittomia kielia, niin myos niiden yhdiste A∪B, tulo ABja sulkeuma A∗ ovat kontekstittomia kielita.

Todistus: Tarkastellaan esimerkkina yhdistetta A ∪ B; muut kohdat menevat samaantapaan.

Olkoot siis A ja B aakkoston Σ kontekstittomia kielia. Siis A = L(GA) ja B = L(GB)joillain kontekstittomilla kieliopeilla GA = (VA, Σ, PA, SA) ja GB = (VB, Σ, PB, SB).

Olkoon S /∈ NA ∪NB. Maaritellaan G = (VA ∪ VB ∪ S, Σ, P, S), missa

P = PA ∪ PB ∪ S → SA ∪ S → SB.Selvasti L(G) = A ∪B. 2

• Toisaalta, toisin kuin saannollisten kielten luokka, kontekstittomien kielten luokkaei ole suljettu leikkauksen ja komplementin suhteen.

• Toisaalta taas jos kieli A on saannollinen, ja kieli B kontekstiton, niin niiden leik-kaus A ∩B on kontekstiton.

• Joitakin ei-saannollisia kielia, kuten 0n1n | n ∈ N tai w ∈ 0, 1∗ | w = wR onhelppo tuottaa kontekstittomalla kieliopilla.

• Toisaalta esimerkiksi kopiokieli ww | w ∈ 0, 1∗ ei ole kontekstiton (vaan kon-tekstinen).

87

Page 90: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Miten keksia annetulle kielelle kielioppi?

• On annettu kontekstiton kieli L, ja laadittava sen tuottava kontekstiton kielioppi G.

• Lahtokohta: Millaisen kielen L maarittely kuvaa?

• Yrita esittaa L useamman yksinkertaisemman kielen yhdisteena (kuten L = L1 ∪L2 ∪ L3), tulona (kuten L = L1L2) tai sulkeumana (kuten L = (L1 ∪ L2)

∗).

• Laadi naille osakielille L1, L2, . . . kieliopit. Olkoot niiden alkusymbolit S1, S2 ja S3.

• Laadi sitten koko kielen L kielioppi seuraavasti:

Kieli SaannotL = L1 ∪ L2 ∪ L3 S → S1 | S2 | S3

L = L1L2 S → S1S2

L = (L1)∗ S → S1S | ε

L = (L1 ∪ L2)∗ S → SA | ε, A→ S1 | S2

• Muita usein toistuvia rakenteita:

Kieli Saannota, b A→ a | bL(a∗) = ε, a, aa, aaa, . . . A→ aA | εbncn | n = 0, 1, 2, . . . B → bBc | εb2ncn | n = 0, 1, . . . B → bbBc | ε

Tehtava 37. Laadi kielioppi seuraaville kielille:

1. 01∗ ∪ 10∗

2. 0∗1(0 ∪ 1)∗

3. 0n1n | n ∈ N ∪ 1n0n | n ∈ N

4. wwR | w ∈ 0, 1∗

5. w ∈ 0, 1∗ | w = wR

5.2 Saannolliset ja kontekstittomat kielet

• Saannolliset kielet sisaltyvat aidosti kontekstittomiin kieliin, jotka vuorostaan sisal-tyvat aidosti kontekstisiin kieliin.

• Siis jokainen saannollinen kieli voidaan kuvata kontekstittomalla kieliopilla — joparakenteeltaan yksinkertaisella lineaarisella kieliopilla.

tyyppi 3: säännölliset kielet

tunnistus: äärellinen automaatti

rajallinen muisti

tunnistus: pinoautomaatti

tyyppi 2: kontekstittomat kielet

äärelliset kielet; tunnistus: ns. "trie"

88

Page 91: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Lineaariset kieliopit

Maaritelma 7. Kontekstiton kielioppi on

oikealle lineaarinen jos sen kaikki produktiot ovat muotoa A→ ε tai A→ aB, ja

vasemmalle lineaarinen jos sen kaikki produktiot ovat muotoa A→ ε tai A→ Ba.

• Intuitiivisesti kielioppi on oikealle lineaarinen jos valikesymboli saa esiintya vainsaannon oikeassa laidassa eika missaan muualla.

• Oikealle lineaariset kieliopit ja epadeterministiset aarelliset automaatit vastaavattoisiaan.

• Jokaista oikealle lineaarista kielioppia vastaa ekvivalentti vasemmalle lineaarinenkielioppi, ja kaantaen.

5.2.1 Aarellista automaattia vastaava lineaarinen kielioppi

Lause 9. Jokainen saannollinen kieli voidaan tuottaa oikealle lineaarisella kieliopilla.

Todistus: Olkoon kieli L ∈ Σ∗ saannollinen, ja M = (Q, Σ, δ, q0, F ) sen tunnistavaaarellinen automaatti. Ideana on muodostaa kielioppi GM joka tuottaa samat merkkijonotjotka M tunnistaa. Silloin L(GM) = L(M) = L kuten halutaan.

• Siten kieliopin GM paateaakkostoksi on valittava automaatin M syoteaakkosto eli Σ.

• Luodaan kielioppiin GM oma valike Aq jokaiselle automaatin M tilalle q ∈ Q. Muitavalikkeita ei kielioppiin GM tule.

• Kieliopin LG lahtosymboliksi tulee Aq0 eli automaatin M alkutilaa q0 vastaavavalike.

• Kieliopin GM saannot suunnitellaan oikealle lineaarisiksi ja siten, etta siina on lause-johdos uAp tasmalleen silloin kun automaatissa M paastaan alkutilasta q0 tilaan plukemalla syotemerkkijono u ∈ Σ∗.

Tai toisin merkiten, kieliopin GM lausejohdokset ovat muotoa uAδ∗(p0,u).

• Tama saavutetaan siten, etta jokainen automaatin M siirtyma pc−→ q tuottaa kie-

lioppiin GM saannon Ap → cAq.

Silloinhan uAp ⇒GM

ucAq kuten halusimmekin.

• Automaatin M pysahtyminen esitetaan siten, etta lausejohdoksen oikeassa laidassaoleva ainoa valike katoaa; silloinhan merkkijono u on sellainen jonka M hyvaksyy,joten sen pidentaminen lisamerkeilla c voidaan lopettaa.

Siis siten, etta kielioppiin GM lisataan saanto Aq → ε jokaiselle automaatin Mlopputilalle q ∈ F . Kielioppi GM on nyt valmis. 2

Esimerkki 38. Kuvassa on yksinkertainen aarellinen automaatti, joka hyvaksyy kielen

L = w ∈ a, b∗ | w sisaltaa vahintaan yhden merkin b .

89

Page 92: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1 2b

a, ba

Automaattia vastaava kielioppi on:

A1 → aA1 | bA2

A2 → ε | aA2 | bA2

5.2.2 Lineaarista kielioppia vastaava aarellinen automaatti

Lause 10. Jokainen oikealle lineaarisella kieliopilla tuotettava kieli on saannollinen.

Todistus: Tehdaan edellisen lauseen 9 todistuksen konstruktio toiseen suuntaan. Olkoonsiis G = (V, Σ, P, S) oikealle lineaarinen kielioppi. Muodostetaan kielen L(G) tunnistavaepadeterministinen aarellinen automaatti MG = (Q, Σ, δ, qS, F ) seuraavasti:

• Tilat vastaavat kieliopin valikkeita:

Q = qA | A ∈ V \ Σ

• Alkutila on lahtosymbolia S vastaava tila qS.

• Syoteaakkosto on paateaakkosto Σ.

• Siirtymafunktio δ jaljittelee produktioita siten, etta produktiosta A → aB tuleesiirtyma qA

a−→ qB (eli qB ∈ δ(qA, a)).

• Lopputiloja ovat ne tilat, joita vastaaviin valikkeisiin liittyy ε-produktio:

F = qA ∈ Q | A→ ε ∈ P

2

• Yhteenvetona lineaaristen kielioppien ja aarellisten automaattien vastaavuuksista:

Aarellinen automaatti Lineaarinen kielioppitila q valikesymboli Aq

lahtotila q0 lahtosymboli Aq0

siirtyma qa→ q′ saanto Aq → aAq′

hyvaksyva tila q ∈ F saanto Aq → ε

Esimerkki 39. Olkoon d lyhenne lukumerkille 0, 1, . . . , 9. Tarkastellaan seuraavaa oi-kealle lineaarista kielioppia:

S → +A | − A | dB A→ dB B → dB | ε

90

Page 93: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

qS qA qBd

d+,−

d

Kuva 17: Kokonaislukuautomaatti niiden kieliopista.

Automaattiin tulee kolme tilaa: qS, qA ja qB. Lahtosymbolia S vastaa alkutila qS ja saan-nosta B → ε tiedamme, etta qB on (ainoa) lopputila. Muita saantoja vastaavat tilasiir-tymat

qS+→ qA qS

−→ qA qSd→ qB

qAd→ qB qB

d→ qB

Saadaan kuvan 17 tuttu automaatti, joka tunnistaa etumerkilliset kokonaisluvut.Huomaa: Kielioppia voi usein olla luontevampi lukea kuin aarellista automaattia tai

saannollista lauseketta. Tassakin valike B voidaan lukea ”0 tai useampia numeromerk-keja” jne.

Tehtava 38. Piirra seuraavia kielioppeja vastaavat aarelliset automaatit:

1. Lauseke: a∗, kielioppi: S → aS | ε.

2. Lauseke: a+ = aa∗, kielioppi: S → aS | a.

3. Lauseke: (ab∗a)∗bb∗, kielioppi:

S → aA | bBA→ aS | bAB → bB | ε

4. Lauseke: (aa)∗, kielioppi: S → aSa | ε.

5. Lauseke: (b∗ab∗ab∗)∗, kielioppi:

S → BaBaBS | εB → bB | ε

6. Lauseke: (0 ∪ 1 ∪ . . . ∪ 9)(0 ∪ 1 ∪ . . . ∪ 9)∗, kielioppi:

S → DN

N → DN | εD → 0 | 1 | . . . | 9

91

Page 94: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Muita sovelluksia ovat esimerkiksi pseudotiedetta suoltava puppugeneraattori http://pdos.csail.mit.edu/scigen/. . .

• . . . seka ”kasvikieliopit” (nimeltaan L- eli Lindenmayer-systeemit):

Niiden ideana on mallintaa sita biologista kontrollimekanismia, joka maaraa, etta”tahan kohtaan kasvaa uusi oksa, tuohon kohtaan taas uusi lehti”.

• Vastaavantapaisia, ”hyodyllisempia”, sovelluksia on muitakin, kuten neuroverkko-jen rakenteen generointi kieliopilla (joka on voitu generoida vaikkapa geneettisillaalgoritmeilla), yms.

5.3 Pinoautomaatti

• Pinoautomaatti (push-down automaton, PDA) on aarellinen automaatti, johon onlisatty rajoittamaton maara muistia pinon muodossa kuvan 18 tapaan.

• Kuten ennenkin, syote hyvaksytaan jos sen loputtua ollaan hyvaksyvassa tilassa.

• Muistutus kurssilta TRA: Pino on tietorakenne, jolla on seuraavat operaatiot:

– Luo tyhja pino.

– Testaa onko pino tyhja vai onko siina tietoalkioita.

– Vie pinoon jokin tietoalkio x — eli operaatio push(x).

– Poista epatyhjasta pinosta sinne viimeiseksi viety tietoalkio — eli operaatiopop.

• Pinon avulla voidaan pitaa kirjaa luetuista merkeista — ja tehda monia muitakinasioita. . .

92

Page 95: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

q2

q0

q1

q3

syötenauha

nauhapää

ohjausyksikkö

a a a a b .....

tutkittava syöte

δ

b bb

A

A

A

A_

pino

Kuva 18: Kaavakuva pinoautomaatista.

• Kielen voi tunnistaa pinoautomaatilla tasmalleen silloin kun se on kontekstiton.

Esimerkki 40. Ei-saannollisen kielen 0n1n | n ∈ N voi hyvaksya pinon avulla seuraa-vaan tapaan:

1 alussa pino on tyhja2 while seuraava luettu syotemerkki on ’0’3 do push(0)4 while seuraava luettu syotemerkki on ’1’ and pino ei ole tyhja5 do pop6 return onko koko syote luettu and pino jalleen tyhja

Pinoautomaatin formaali maaritelma

Maaritelma 8. Pinoautomaatti on kuusikko

M = (Q, Σ, Γ, δ, q0, F ) ,

jossa

• Q on tilojen aarellinen joukko;

• Σ on aarellinen syoteaakkosto;

• Γ on aarellinen pinoaakkosto;

93

Page 96: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• funktioδ : Q× (Σ ∪ ε)× (Γ ∪ ε)→ P(Q× (Γ ∪ ε))

on (joukkoarvoinen) siirtymafunktio;

• q0 ∈ Q on alkutila; ja

• F ⊆ Q on hyvaksyvien lopputilojen joukko.

Siirtymafunktion tyyppi

• Siirtymafunktiolla δ(q, σ, γ) on nyt 3 argumenttia:

1. q ∈ Q on nykyinen tila, kuten aikaisemminkin;

2. σ ∈ Σ on seuraava syotemerkki, kuten aikaisemminkin; ja

3. γ ∈ Γ on pinon paallimmainen merkki.

Jokaisella askeleellaan pinoautomaatti siis voi kayttaa naita kaikkia kolmea tietoavalitessaan mita tehda seuraavasti. . .

• . . . mutta sen ei ole pakko kayttaa seuraavaa syotemerkkia σ ja/tai pinon paallim-maista merkkia γ:

– Jos merkkia ei kayteta, niin sen tilalla on argumenttina ε.

– Jos merkki kaytetaan, niin se myos kulutetaan: siis seuraava syotemerkki σohitetaan ja/tai pinon paallimmainen merkki γ poistetaan pinosta.

• Siirtymafunktion arvo δ(q, σ, γ) on (aarellinen) joukko pareja (q′, γ′) joissa

– q′ ∈ Q on pinoautomaatin seuraava tila, ja

– γ′ ∈ Γ on pinon paalle lisattava merkki.

Kuten γ ylla, myos tama γ′ voi puuttua, ja silloin sen tilalla onkin ε.

Siirtymafunktion arvot

• Koska seuraava syotemerkki σ, pinon paallimmainen merkki γ ja seuraava pinoonvietava merkki γ′ voivat myos puuttua, siirtymia on yhteensa 8 erilaista:

1. (q′, γ′) ∈ δ(q, σ, γ) eli mikaan niista ei puutu:

1 lue syotteesta sen seuraava merkki σ2 poppaa γ pois pinosta3 pushaa γ′ pinoon

Siten merkki σ luetaan syotteesta ja merkki γ pinon paalla korvautuu mer-killa γ′.

2. (q′, γ′) ∈ δ(q, σ, ε) eli vain γ puuttuu:

Rivi 2 jaa pois, eli merkki σ luetaan syotteesta ja pino kasvaa merkilla γ′.

3. (q′, γ′) ∈ δ(q, ε, γ) eli vain σ puuttuu:

Rivi 1 jaa pois, eli syotetta ei lueta mutta merkki γ korvautuu pinon paallamerkilla γ′.

94

Page 97: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

4. (q′, ε) ∈ δ(q, σ, γ) eli vain γ′ puuttuu:

Rivi 3 jaa pois, eli merkki σ luetaan ja merkki γ poistuu pinon paalta.

5. (q′, ε) ∈ δ(q, σ, ε) eli vain σ on jaljella:

Vain rivi 1 jaa jaljelle, eli merkki σ luetaan mutta pino ei muutu.

6. (q′, ε) ∈ δ(q, ε, γ) eli vain γ on jaljella:

Vain rivi 2 jaa jaljelle, eli syotetta ei lueta mutta merkki γ poistuu pinon paalta.

7. (q′, γ′) ∈ δ(q, ε, ε) eli vain γ′ on jaljella:

Vain rivi 1 jaa jaljelle, eli syotetta ei lueta mutta pino kasvaa merkilla γ′.

8. (q′, ε) ∈ δ(q, ε, ε) eli kaikki ne puuttuvat:

Automaatti siirtyy tilasta q tilaan q′ lukematta syotettaan tai muuttamattapinoaan — eli tekee ε-siirtyman.

Pinoautomaatin laskennan eteneminen

• Pinoautomaatin M tilanne on kolmikko (q, w, α) ∈ Q× Σ∗ × Γ∗ eli siina on

nykyinen tila q ∈ Q

viela lukematon syote w ∈ Σ∗

pinon nykyinen sisalto α ∈ Γ∗ kirjoitettuna merkkijonoksi siten, etta sen paal-limmainen merkki tulee ensimmaisena (vasemmalta oikealle lukiessa) jne.

• Alkutilanne syotteella x on kolmikko (q0, x, ε) eli pino on alussa tyhja.

• Tilanne (q, σw, γα), jossa

σ ∈ Σ ∪ ε ja

γ ∈ Γ ∪ ε ,

voi johtaa suoraan tilanteeseen (q′, w, γ′α) jos

(q′, γ′) ∈ δ(q, σ, γ).

Tata merkitaan

(q, σw, γα)M

(q′, w, γ′α).

• Tilanne (q0, w0, α0) voi johtaa tilanteeseen (qn, wn, αn) jos on olemassa tilannejono

(q0, w0, α0)M

(q1, w1, α1)M

(q2, w2, α2)M

· · · M

(qn, wn, αn).

Tata merkitaan (q0, w0, α0)M

∗(qn, wn, αn). (Tilanne voi johtaa myos itseensa; siis

sallitaan, etta johdon pituus n = 0.)

• Pinoautomaatti M hyvaksyy syotemerkkijonon x ∈ Σ∗ jos

(q0, x, ε)M

∗(qF , ε, α)

joillakin qF ∈ F ja α ∈ Γ∗.

Toisin sanoen, jos sen alkutilanne syotteella x voi johtaa johonkin sellaiseen tilan-teeseen, jossa koko syote x on luettu ja ollaan jossakin hyvaksyvassa tilassa qF .

Muuten M hylkaa taman syotteen x.

95

Page 98: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Pinoautomaatin hyvaksyma kieli on

L(M) = x ∈ Σ∗ |M hyvaksyy syotteen x

eli sen hyvaksymat syotemerkkijonot x.

Epaoleellisia yksityiskohtia

• Tassa maaritelmassa pinon ei tarvitse olla tyhja laskennan paattyessa.

Toisissa lahteissa taas vaaditaan pinonkin olevan tyhja (eli α = ε) ennen kuin voi-daan hyvaksya. Tama ei kuitenkaan ole oleellinen ero, koska voimmehan lisata lop-puun silmukan joka tyhjentaa pinon.

• Tassa maaritelmassa ei ole testia ”onko pino tyhja vaiko ei?”

Tallainen testi on kuitenkin helppo lisata tarvittaessa: Lisataan pinoaakkostoon Γuusi symboli ’$’ ja aloitetaan automaatin laskenta viemalla se pinon pohjimmai-seksi merkiksi. Sen jalkeen voidaan tama testi suorittaa kysymalla onko pinonpaallimmainen merkki ’$’ vaiko ei — kunhan sita ei koskaan poisteta pinosta (paitsijuuri ennen syotteen x hyvaksymista, mikali pino pitaa tyhjentaa ennen sita kutenylla).

Kaksi pinoa olisi liikaa

• Jos pinoaakkostossa Γ on pohjamerkin ’$’ lisaksi vain yksi muu merkki, niin silloinkyseessa on yksilaskuriautomaatti (one-counter automaton):

– Sellaisella pinolla voi yllapitaa yhta laskuria ∈ N ja kysya onko sen arvo = 0vaiko > 0.

– Kaytimme tata ominaisuutta aikaisemmassa esimerkissa 40.

– Yhdella laskurilla voi tunnistaa joitakin ei-saannollisia kielia, mutta ei kaikkiakontekstittomia kielia.

• Olemme maaritelleet automaatin, jolla on yksi pino. Entapa jos pinoja olisikinuseampia?

Ehka yllattaen: Jo kahdella pinolla hyppaisimme kontekstittomista kielista aina re-kursiivisesti lueteltaviin kieliin saakka — eli laskettavuuden aarirajoille.

• Entapa jos sallisimmekin useampia laskureita — nehan ovat yleisia pinoja yksinker-taisempia?

Ehka vielakin yllattavammin: Jo kahdella laskurillakin hyppaisimme yhta kauas.

Pinoautomaatin tilasiirtymakaavio

• Pinoautomaatille voidaan piirtaa muuten samanlainen tilasiirtymakaavio kuin aarel-liselle automaatillekin, mutta nyt tilasiirtymanuoli koristellaankin (pelkan syote-merkin a ∈ Σ sijaan) kolmella eri tiedolla:

qσ,γ/γ′

−−−→ q′

tarkoittaa, etta pinoautomaatti voi siirtya tilasta q ∈ Q tilaan q′ ∈ Q lukemallaseuraavan syotemerkin σ ∈ Σ ja korvaamalla pinossa sen paallimmaisen merkinγ ∈ Γ merkilla γ′ ∈ Γ. (Kuva 19.)

96

Page 99: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Tila qq

Alkutilaq0

Hyvaksyva tila

Tilasiirtyma (q′, γ) ∈ δ(q, a, γ)q q′a, γ/γ′

Kuva 19: Pinoautomaatin tilasiirtymakaavion merkinnat.

• Kukin naista eri tiedoista σ, γ ja γ′ voi myos puuttua, jolloin sen tilalla onkin ε.

Esimerkki 41. Kieli akbk | k ≥ 0 voidaan tunnistaa seuraavanlaisella pinoautomaatilla

M = (q1, q2, q3, q4, a, b, a, $, δ, q1, q1, q4)

jossa on kaytetty pinon pohjamerkkia ’$’.

δ(q1, ε, ε) = (q2, $),δ(q2, a, ε) = (q2, a),δ(q2, b, a) = (q3, ε),δ(q3, b, a) = (q3, ε),δ(q3, ε, $) = (q4, ε),δ(q, σ, γ) = ∅ muilla (q, σ, γ).

q1 q2

q3q4

ε, ε/$

ε, $/ε

b, a/ε

b, a/ε

a, ε/a

• Esimerkiksi syotteella aabb esimerkin 41 automaatilla on seuraava laskenta:

(q1, aabb, ε) (q2, aabb, $)

(q2, abb, a$)

(q2, bb, aa$)

(q3, b, a$)

(q3, ε, $)

(q4, ε, ε).

Koska q4 ∈ F = q1, q4, patee siis aabb ∈ L(M).

97

Page 100: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

5.3.1 Deterministiset ja epadeterministiset pinoautomaatit

Determinismin intuitio on, etta laskulaitteella on aina korkeintaan yksi mahdollinenseuraava askel

Epadeterminismin intuitio taas on, etta mahdollisia askeleita onkin useita, ja laskulaite”arvaa” tai ”tietaa” mika niista on talla hetkella se oikea valinta, joka aikanaanjohtaa syotteen hyvaksymiseen.

Maaritelma 9. Pinoautomaatti M on deterministinen, jos jokaisella tilanteella (q, w, α)on korkeintaan yksi mahdollinen seuraaja (q′, w′, α′), jolla (q, w, α)

M

(q′, w′, α′).

• Maaritelman 9 mukaan pinoautomaatti on epadeterministinen, jos siina on samastatilasta p kaksi eri siirtymaa

pσ1,γ1/γ′

1−−−−−→ q1 ja

pσ2,γ2/γ′

2−−−−−→ q2 ,

joilla σ1 ≈ σ2, γ1 ≈ γ2 ja q′1 6= q2 tai γ′1 6= γ2, missa a ≈ b tarkoittaa etta ”merkit aja b ovat samat tai ainakin toinen niista on ε”.

Silloin automaatti voisi soveltaa sopivassa tilanteessa kuten (p, σ1σ2 . . . , δ1δ2 . . .)kumpaa tahansa niista ja ne johtaisivat kahteen eri seuraavaan tilanteeseen.

• Huomaa, etta taman maaritelman 9 mukainen epadeterministinen pinoautomaattiei valttamatta koskaan oikeasti teekaan epadeterministista arvausta:

Vaikka siina olisikin kaksi tallaista siirtymaa, niin sen rakenne voikin kokonaisuudes-saan olla sellainen, ettei tallaista sopivaa tilannetta koskaan ilmene sen laskennoissa— esimerkiksi jos tilassa q ei koskaan pino olekaan muotoa δ1δ2 . . ..

• Huomaa: Toisin kuin aarelliset automaatit, epadeterministiset pinoautomaatit ovattunnistusvoimaltaan aidosti vahvempia kuin deterministiset!

On olemassa kontekstittomia kielia, jotka voidaan tunnistaa jollakin epadeterminis-tisella mutta ei millaan determistisella pinoautomaatilla.

• Eras tallainen on parillisen pituisten palindromien muodostama kieliwwR | w ∈ a, b∗

. (10)

– Intuitiivisesti, epadeterministinen pinoautomaatti ”arvaa” tai ”tietaa” syot-teensa keskikohdan, jossa sen alkuosa w on luettu ja voidaan alkaa lukemaansen loppuosaa wR. (Ks. kuva 20.)

– Deterministisen automaatin pitaisi jotenkin pystya havaitsemaan tama keski-kohta ”omin pain” ja siihen se ei pystykaan.

– Mutta jos tama keskikohta on merkitty, niin kielesta tuleekin deterministinen:wcwR | w ∈ a, b∗

.

• Toinen tapa ajatella tata eroa on, etta epadeterministista pinoautomaattia ei valt-tamatta pystykaan determinisoimaan. Intuitiivisesti kyse on seuraavasta:

98

Page 101: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

q1 q2

q3q4

ε, ε/$

ε, $/ε

ε, ε/ε

a, ε/a

b, ε/b

a, a/ε

b, b/ε

Kuva 20: Palindromin keskikohdan arvaava pinoautomaatti.

Tilanne: Epadeterministisen pinoautomaatin yksi siirtyma haluaa pushata jotakinpinoonsa kun taas toinen popata jotakin pois siita.

Ongelma: Mita determinisoidun automaatin pitaisi silloin tehda? Senhan pitaisijotenkin pystya ”seuraamaan molempia vaihtoehtoja”!

Esimerkki 42. Edellinen kieli (10) voidaan tunnistaa seuraavalla periaatteella:

1. Syotteen ensimmaisen puolikkaan ajan laitetaan merkkeja pinoon.

2. Syotteen keskikohta arvataan epadeterministisesti.

3. Syotteen toisen puolikkaan ajan poimi merkkeja pinosta ja vertaa juuri luettuunmerkkiin.

• Esimerkiksi syotteella abba kuvan 20 epadeterministisella pinoautomaatilla on seu-raava hyvaksyva laskenta:

(q1, abba, ε) (q2, abba, $) (vaihe 1)

(q2, bba, a$)

(q2, ba, ba$) (arvaus 2)

(q3, ba, ba$) (vaihe 3)

(q3, a, a$)

(q3, ε, $)

(q4, ε, ε)

jonka lopputila q4 ∈ F = q1, q4 on siis hyvaksyva.

Deterministinen kontekstiton kieli

Maaritelma 10. Kontekstiton kieli on deterministinen, jos se voidaan tunnistaa jollakindeterministisella pinoautomaatilla, muuten se on epadeterministinen.

• Esimerkiksi edella tarkasteltu kieli (10) ja kieli

L2 =anbmck | n 6= m tai m 6= k

ovat epadeterministisia.

99

Page 102: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Deterministiset kielet ovat tarkea kieliluokka, silla ne voi hyvaksya eli jasentaa te-hokkaammin kuin epadeterministiset kielet.

• Siksi jos voimme itse suunnitella kielen (kuten vaikkapa maaritellessamme uuttaohjelmointikielta) teemme siita deterministisen.

5.3.2 Pinoautomaatit ja kontekstittomat kielet

Lause 11. Kaikki kontekstittomat kielet voidaan tunnistaa (epadeterministisilla) pinoau-tomaateilla ja kaikki pinoautomaattien tunnistamat kielet ovat kontekstittomia.

Todistus: Mielivaltaisen kontekstittoman kieliopin voi muuntaa pinoautomaatiksi, jakaantaen:

1. Esitetaan ensin muunnos kieliopista automaatiksi.

2. Sitten luonnostellaan myos kaanteinen muunnos automaatista kieliopiksi.

Kieliopista pinoautomaatiksi

• Perusidea on laatia annetun kieliopin pohjalta pinoautomaatti, joka toteuttaa seu-raavan algoritmin:

Generoi: Tuota epadeterministisesti pinoon merkkijono w ∈ Σ∗, jolla S ⇒∗ w.

Testaa: Vertaa pinon merkkijonoa w syotteeseen merkki kerrallaan. Jos loytyy ero,hylkaa. Jos pino tyhjenee samaan aikaan, kun syote loppuu, niin hyvaksy.

Toisin sanoen, generointivaihe arvaa minka syotteen automaatti sai, ja testausvaihetarkistaa etta arvaus meni oikein.

• Epadeterminismi on oleellista: valitsemalla generoimisvaiheessa sovellettavat saannotepadeterministisesti varmistetaan, etta jokaisella kieleen kuuluvalla merkkijonolla won mahdollisuus tulla tuotetuksi.

• Toteutusta rajoittaa, etta automaatin tietorakenne on pino, josta vain huippu onkulloinkin nakyvissa. Siksi generointi- ja testausvaihe pitaa lomittaa:

Aina kun pinon huipulle saadaan paatesymboleita, kaydaan vertaamassa niita syot-teeseen ennen generoinnin jatkamista.

• Saadaan kuvan 21 tarkennettu algoritmi joka pitaa viela koodata pinoautomaatiksi.

• Taman pinoautomaatin

pinoaakkostoksi Γ = V ∪ $ tulee siis kieliopin aakkosto V seka pinon pohja-merkki $ 6∈ V .

syoteaakkostoksi tulee puolestaan kieliopin paatemerkkien joukko Σ.

Esimerkki 43. Tarkastellaan kielioppia

S → Sa | TT → bTc |ε

ja merkkijonoa bbcca, joka voidaan johtaa seuraavasti:

100

Page 103: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1. Alusta pinon sisalloksi S$, jossa S on kieliopin lahtosymboli ja $ pinon pohjamerkki.

2. Toista seuraavaa:

(a) Jos pinon huipulla on muuttujasymboli A, niin valitse epadeterministisesti jo-kin saanto A→ w. Korvaa A merkkijonolla w.

(b) Jos pinon huipulla on paatesymboli, niin poista se pinosta ja vertaa seuraavaansyotemerkkiin. Jos ne eroavat, hylkaa.

(c) Jos pino on tyhja (eli sen huipulla on $) niin hyvaksy jos syotekin on loppu;muuten hylkaa.

Kuva 21: ”Generoi-ja-testaa”-algoritmi.

S ⇒ Sa

⇒ Ta

⇒ bTca

⇒ bbTcca

⇒ bbcca.

Haluamme siis muodostaa pinoautomaatin, jokasyotteella bbcca vuorotellen

• soveltaa pinoon yllaolevan johdon saantojaja

• poistaa pinosta syotetta vastaavia paate-merkkeja.

Pino kayttaytyy siis kuten vieressa:

jaljella oleva syote pinon sisaltobbcca εbbcca $bbcca S$bbcca Sa$bbcca Ta$bbcca bTca$bcca Tca$bcca bTcca$cca Tcca$cca cca$ca ca$a a$ε $ε ε

• Otamme kayttoon lyhennysmerkinnan (q′, γ′) ∈ δ(q, σ, γ) missa γ′ = g1g2g3 . . . gm ∈Γ∗ on jono pinomerkkeja (kun aiemmin sallittiin korkeintaan yksi pinomerkki elim ≤ 1).

• Tama merkinta luetaan seuraavasti:

Jos automaatti on tilassa q, niin voidaan siirtya tilaan q′ lukemalla syotemerkki σja korvaamalla pinon paalla pinomerkki γ talla pinomerkkijonolla g1g2g3 . . . gm.

• Automaattina tama tulkitaan kuten alla.

q q′

σ, γ/g1 . . . gm

q q′

ε, ε/g1σ, γ/gm ε, ε/gm−1

Huomaa: Pinomerkkijono viedaan pinoon takaperin eli push(gm); push(gm−1);push(gm−2);. . . ; push(g1) jotta pinon paalle muodostuu tama haluttu pinomerk-kijono g1g2g3 . . . gm etuperin.

101

Page 104: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Automaattiimme tulee alkutila qstart toistotila qloop, hyvaksyva tila seka muita tiloja.

1. Toteutettavan algoritmimme (kuva 21) ensimmainen askel on pinon alustus. Se voi-daan toteuttaa seuraavasti:

start startε, ε/$ε, ε/S$ ε, ε/S

loop loop

2. Sen toinen askel toistaa seuraavaa:

(a) Jos pinon huipulla on muuttujasymboli A, niin valitse epadeterministisestisaanto A→ w. Korvaa A merkkijonolla w.

Siis kaikilla saannoilla A→ w lisataan siirtyma:

loop ε, A/w

Nyt kaytetaan siis asken kayttoon otettua merkintaa, jolla pinoon viedaankokonainen pinomerkkijono w, eli silmukalle ilmestyy |w| − 1 valitilaa, joitatassa kuvassa ei nay.

(b) Jos pinon huipulla on paatesymboli, poista se pinosta ja vertaa seuraavaansyotemerkkiin. Jos ne eroavat, hylkaa.

Siis kaikilla paatemerkeilla a ∈ Σ tulee siirtyma:

loop a, a/ε

(c) Jos pinon huipulla on $, hyvaksy jos syote on loppu; muuten hylkaa.

ε, $/εloop

• Muita siirtymia ei tule, eli automaattimme on nyt valmis. 2

Tehtava 39. Muunna kielioppi

S → Sa | TT → bTc |ε

pinoautomaatiksi.

Pinoautomaatista kieliopiksi

• Hahmotellaan myos muunnos toiseen suuntaan eli annetusta pinoautomaatista senhyvaksymaa kielta kuvaavaksi kontekstittomaksi kieliopiksi.

• Oletetaan yksinkertaisuuden vuoksi, etta automaatti tyhjentaa pinonsa ennen kuinhyvaksyy syotteensa.

102

Page 105: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Oletetaan myos, ettei siina ole operaatioita ”korvaa pinon paalla merkki γ mer-

killa γ′”. Sellainen operaatio pσ,γ/γ′

−−−→ q voidaan nimittain toteuttaa erillisella pop-

push-yhdistelmalla pσ,γ/ε−−−→© ε,ε/γ′

−−−→ q.

• Ajatellaan sitten, etta automaatin jokaiseen siirtymaan pσ,γ/γ′

−−−→ q on liitetty sivu-

vaikutuksena ”tulosta σ, γ/γ′ ”.

Tassa laatikko ilmaisee, etta kunkin tulosteen ajatellaan olevan yksi (mutkikas)merkki. Automaatti siis tulostaa sivuvaikutuksenaan sen, mita se tekee pinolleen ja

syotteelleen. (Lopullisessa kieliopissa kukin laatikko σ, γ/γ′ toimii valikkeena, joka

generoi vastaavan paatesymbolin σ.)

• Sitten aletaan laatia kielioppia, jotka tuottaa tasmalleen nama sivuvaikutuksenatulostuvat laatikkomerkkijonot.

• Laaditaan ensin kielioppi kaikille sellaisille laatikkomerkkijonoille, joissa jokaistapush-operaatiota seuraa myohemmin sen kumoava pop-operaatio.

Jokainen tulostuva laatikkomerkkijono on oletusten nojalla sellainen, mutta auto-maatti ei valttamatta tulosta jokaista sellaista jonoa.

• Taman kieliopin voi muodostaa samaan tapaan kuin esimerkin 32 (s. 83) tasapai-noiset sulkumerkkijonot. Nyt vain sulkumerkkeja on monia erilaisia: push(γ) on”avaava sulkumerkki lajia γ” ja sita vastaava pop(γ) on ”sulkeva sulkumerkki la-jia γ”.

(Vrt. normaalin merkiston erilaiset sulkuparit (...), [...] ja ....)

• Saadaan kielioppi, jossa on toistaiseksi vain yksi valike A ja silla seuraavat saannot:

A→ ε

A→ AA

A→ σ, ε/ε A jokaiselle σ ∈ Σ ∪ ε ja

A→ σ, γ/ε A σ′, ε/γ jokaiselle pinomerkille γ ∈ Γ.

• Tulkitaan sitten pinoautomaatti tavalliseksi aarelliseksi automaatiksi, jonka syote-aakkostona ovat nama laatikot.

Toisin sanoen, tulkitaan jokainen siirtyma pσ,γ/γ′

−−−→ q siirtymaksi pσ, γ/γ′

−−−−−−→ q.

• Nyt etsimamme laatikkomerkkijonokieli on taman kieliopin tuottaman kielen jataman aarellisen automaatin hyvaksyman kielen leikkaus.

• Tassa vaiheessa tekisi mieli vedota aiemmin mainitsemaamme tulokseen, etta kon-tekstittoman ja saannollisen kielen leikkaus on kontekstiton. . .

. . . mutta sen todistamisessa voimme vuorostaan tarvita tata tulosta, jolloin teki-simme kehapaatelman!

• Siksi teemme leikkauksen tassa todistuksessa kasin — onneksi kielioppi on yksin-kertainen.

103

Page 106: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Otetaan kayttoon valikkeet Bpq joiden yla- ja alaindeksit ovat automaatin tiloja eli

p, q ∈ Q.

Maaritellaan uusi kielioppi siten, etta tallainen valike Bpq tarkoittaa niita laatikko-

merkkijonoja jotka voidaan tuottaa valikkeesta A ja jotka voivat esiintya jollakinpolulla tilasta p tilaan q.

Bpp → ε kaikilla p ∈ Q

Bpr → Bp

qBqr kaikilla p, q, r ∈ Q

Bpr → σ, ε/ε Bq

r jokaiselle siirtymalle pσ, ε/ε−−−−−→ q ja r ∈ Q

Bps → σ, γ/ε Bq

r σ′, ε/γ

kaikille siirtymille pσ, γ/ε−−−−−→ q ja r

σ′, ε/γ−−−−−−→ s seka tiloille p, q, r, s ∈ Q ja pinomer-

keille γ ∈ Γ.

• Nyt etsimamme laatikkomerkkijonokieli voidaan tuottaa lisaamalla lahtosymboli Sja sille saannot

S → Bp0pf

joissa p0 on automaatin alkutila ja pf ∈ F mika tahansa sen hyvaksyva tila.

• Lopuksi muunnamme viela laatikkomerkkijonon vastaavaksi syotemerkkijonoksi.

Tama voidaan tehda lisaamalla jokaiselle laatikkomerkille muuntosaanto

σ, γ/γ′ → σ

eli tulkitsemalla nekin valikesymboleiksi jota tuottavat siina luetun syotemerkin σ(tai eivat mitaan kun sellaista ei ole eli kun σ = ε). 2

Tehtava 40. Laadi pinoautomaatti, joka tunnistaa seuraavanlaiset ohjelmointikielen ra-kenteet:

• merkkijonossa jokaista avaavaa aaltosulkua vastaa sulkeva aaltosulku

• jokaista else:a vastaa if, mutta if:iin ei ole pakko liittya else-haaraa

• if-lauseen ehto esitetaan paatemerkilla c

• muut komennot esitetaan paatemerkilla a, jota seuraa puolipiste ;

Laillinen:

if c

if ca;

elsea;

Laiton:

if c if c

a;else

a;

Aakkosto Σ koos-tuu siis merkkijonoista′′,′ ′,′ if′,′ else′,′ c′,′ a;′ .Kielioppina taman voi esittaaesim. seuraavasti:

S → S | if c ST | a;

T → else S | ε

104

Page 107: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

5.4 Kielioppien jasennysongelma

• ”Annettu kielioppi G ja merkkijono x. Onko x kieliopin lause, eli pateeko x ∈L(G)?”

• Esimerkkeja jasennysongelmista:

– Kuuluuko virke ”janis joka pelkasi arkaa peikkoa metsasti suurta sutta”esimerkin 36 relatiivilausekieleen Lrel?

– Onko ”(11× 5 + 1)− 7×−1” laillinen aritmeettinen lauseke?

– Onko seuraava funktio C-kielen syntaksin mukainen?

float laske(int x, int y) if (x >= y) return x-y; else return y-x;

• Kontekstittomien kielten jasennys on tarkea osa ohjelmointikielten kaantamisessa.

• Yleisemmin, jasentaminen on tapa testata kuuluuko annettu merkkijono annettuunkieleen, riippumatta varsinaisesta sovelluksesta.

Jasentimet

• Jasennysongelma voidaan ratkaista jasennysalgoritmilla eli jasentimella eli jasenta-jalla

(englanniksi ”parser” — mutta suomeksi jasentaminen ei ole ”parsimista”!).

• On useita vaihtoehtoisia menetelmia erityyppisille kieliopeille:

Lineaariset kieliopit eli saannolliset kielet: aarellinen automaatti.

LL(1)-kielet: Rekursiivinen LL(1)-jasennin.

Deterministiset kielet: deterministinen pinoautomaatti tai rekursiivinen LR(1)-jasennin.

Vahvemmat kontekstittomat kielet: CYK-algoritmi.

• Jasennyksen tarkoitus on yleensa oikeellisuustarkastuksen x ∈ L(G) lisaksi liittaalauseeseen x (esim. lahdekieliseen ohjelmaan) sen semantiikka (esim. vastaava kone-koodi). Tata varten jasennin tuottaa yleensa lauseen x rakennetta kuvaavan jasennyspuun.(Ks. alla.)

• Ensin tutustumme jasennyksen peruskasitteisiin.

Johdot

• Olkoon merkkijono γ ∈ V ∗ kieliopin G = (V, Σ, P, S) lausejohdos. Sen johdoksikieliopissa G kutsutaan lahtosymbolista S merkkijonoon γ johtavaa suorien johtojenjonoa

S ⇒ γ1 ⇒ γ2 ⇒ γ3 ⇒ · · · ⇒ γ

Johdon pituus on siihen kuuluvien suorien johtojen maara eli⇒-askelten lukumaara.

• Johto γ ⇒∗ γ′ on

105

Page 108: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

vasen johto jos kussakin johtoaskelessa on produktiota sovellettu merkkijonon va-semmanpuoleisimpaan valikkeeseen; sita merkitaan

γ⇒lm

∗γ′

oikea johto jos kussakin johtoaskelessa on produktiota sovellettu merkkijonon oi-keanpuoleiseen valikkeeseen; sita merkitaan

γ⇒rm

∗γ′.

• Johto ei valttamatta ole oikea eika vasen, vaan se voi olla niiden sekamuoto (elijoskus lavennetaan vasemman- ja joskus oikeanpuoleisin valike) tai ei kumpaakaan(eli joskus lavennetaan valike joka on vasemman- ja oikeanpuoleisimman valissa).

Esimerkki 44. Tarkastellaan kielioppia Gexpr:

E → E + T | TT → T ∗ F | FF → a | (E)

Lauseelle a + a ∗ a voidaan antaa esimerkiksi seuraavanlaiset johdot:

(i) E ⇒ E + T ⇒ T + T ⇒ F + T⇒ a + T ⇒ a + T ∗ F ⇒ a + F ∗ F⇒ a + a ∗ F ⇒ a + a ∗ a

(ii) E ⇒ E + T ⇒ T + T ⇒ T + T ∗ F⇒ T + F ∗ F ⇒ F + F ∗ F ⇒ F + a ∗ F⇒ a + a ∗ F ⇒ a + a ∗ a

(iii) E ⇒ E + T ⇒ E + T ∗ F ⇒ E + T ∗ a⇒ E + F ∗ a ⇒ E + a ∗ a ⇒ T + a ∗ a⇒ F + a ∗ a ⇒ a + a ∗ a

Naista (i) on vasen johto, (iii) oikea johto ja (ii) ei ole kumpaakaan.

Jasennyspuu

• Eli syntaksipuu, eli johtopuu (englanniksi parse tree, syntax tree, derivation tree).

• Vaihtoehtoinen esitystapa johdoille.

• Kertoo vain, miten valikkeet on lavennettu, ei missa jarjestyksessa lavennukset ontehty.

• Esimerkiksi kaikkia kolmea edella esimerkissa 44 mainittua johtoa vastaa sama ku-van 22 jasennyspuu.

Maaritelma 11. Olkoon G = (V, Σ, P, S) kontekstiton kielioppi. Kieliopin G mukainenjasennyspuu on jarjestetty puu jolla on seuraavat ominaisuudet:

1. puun solmut on nimetty joukon V ∪ ε alkioilla siten, etta

sisasolmujen nimet ovat valikkeita (joukosta N = V \ Σ);

106

Page 109: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

a a a*+

F F

T T F

E T

E

Kuva 22: Esimerkki jasennyspuusta.

juurisolmun nimena on lahtosymboli S;

lehtisolmujen nimet ovat paatemerkkeja (joukosta Σ ∪ ε);

2. jos A on puun jonkin sisasolmun nimi, ja X1, . . . , Xk ovat sen jalkelaisten nimetjarjestyksessa (vasemmalta oikealle) niin A→ X1 . . . Xk on kieliopin G:n produktio.

(Jarjestetyssa puussa solmun kuten A lasten keskinaisella jarjestyksella on valia, elietta silla on ensimmainen lapsi nimeltaan X1, toinen lapsi nimeltaan X2, jne.)

Jasennyspuun τ tuotos on se paatemerkkijono, joka saadaan liittamalla yhteen sen lehti-solmujen nimet vasemmalta oikealle.

• Esimerkiksi edellisen kuvan 22 jasennyspuun tuotos on a + a ∗ a.

• Jasennyspuu on hyva esitys sille miten sen tuotos on saatu kieliopin saannoilla.

Tehtava 41. Muistetaan aiempi kielioppimme:

lause → ehtolause | koottu-lause | sijoitus | kutsuehtolause → if ehto then lause else lause

ehto → x=0koottu-lause → begin lausejono end

lausejono → lause | lause ; lausejonosijoitus → x:=0

kutsu → a | b | c

Anna ohjelman

if x=0 then a else begin x:=0 ; b end

johto ja jasennyspuu.

107

Page 110: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Johdot ja jasennyspuu

• Lausekkeen johdosta voidaan aina muodostaa jasennyspuu ja painvastoin:

1. Kun annetaan johto S ⇒∗ γ, niin voidaan muodostaa jasennyspuu τ , jonkatuotos on γ.

2. Kun annetaan jasennyspuu τ , niin voidaan muodostaa sen tuotoksen γ vasenja oikea johto S⇒

lm

∗γ ja S⇒rm

∗γ.

Johdosta jasennyspuuksi

• Kun on annettu johto

S = γ0 ⇒ γ1 ⇒ γ2 ⇒ γ3 ⇒ · · · ⇒ γn = γ ,

jonka tuotos on γ, niin siita voidaan muodostaa jasennyspuu τ seuraavasti:

1 aluksi τ koostuu vain juurisolmusta nimeltaan S2 for j ← 0, 1, 2, . . . , n− 13 do olkoon seuraava johdos γj+1 saatu nykyisesta johdoksesta γj

korvaamalla sen k:s symboli merkkijonolla g1g2g3 . . . gm

4 `← k:s lehti puussa τ vasemmalta oikealle laskien5 liita lehteen ` lapset nimiltaan g1, g2, g3, . . . , gm

Taman for-silmukan invariantti on, etta nykyinen johdos γj luettelee aina nykyisenpuun τ lehtien nimet vasemmalta oikealle (lukuunottamatta ε-lehtia).

• Kun kaytetaan esimerkin 44 vasenta johtoa (i) ja merkitaan jokaisen solmun viereenmonesko johdos sen synnytti, niin saadaan:

E

E T

T T F

F F

a a a*+

6

5 5

4

3

2

7 5 8

1 1

1

0

108

Page 111: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Tehtava 42. Kielioppi S → SS | (S) | ε tuottaa kaikki oikein muodostetut sulkulausekkeet(siis paatesymbolit ovat vasen ja oikea sulkumerkki). Sulkulauseke on oikein muodostettu,jos vasemmat ja oikeat sulkumerkit voidaan pariuttaa siten, etta mikaan pari ei meneristiin.

Sulkulausekkeen ()(()()) eras johto on

S ⇒ SS ⇒ (S)S ⇒ ()S ⇒ ()(S)⇒ ()(SS)⇒()((S)S)⇒ ()(()S)⇒ ()(()(S))⇒ ()(()())

Piirra vastaava jasennyspuu.

Jasennyspuusta johdoiksi

• Kieliopin mukaisesta jasennyspuusta saadaan puun tuotoksen

vasen johto kaymalla solmut lapi esi jarjestyksessa (”ylhaalta alas, vasemmalta oi-kealle”) ja laventamalla vastaan tulevat valikkeet jarjestyksessa puun osoitta-malla tavalla

oikea johto kaymalla puu lapi kaanteisessa esijarjestyksessa (”ylhaalta alas, oikeal-ta vasemmalle”).

• Yleensa kaytamme vasenta johtoa.

• Oikeaa johtoa kaytetaan myos tietyn tyyppisten (ohjelmointikielten) kielioppienjasentamiseen.

Tehtava 43. Kirjoita edellisen tehtavan 42 jasennyspuuta vastaava oikea johto.

• Esimerkiksi kun kuvan 22 esimerkkipuumme solmut numeroidaan esijarjestyksessa,niin saadaan

E

E T

T T F

F F

a a a*+

1

2

3

4

5 6

7

8

9

10 11

12

13

ja vasemman johdon rakentaminen etenee siis tassa numerojarjestyksessa.

109

Page 112: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Menetelmat ovat yksikasitteisia

• Jos muodostetaan annetusta vasemmasta (tai oikeasta) johdosta S⇒lm

∗x (tai S⇒rm

∗x)

ensin jasennyspuu edella mainitulla tavalla, ja sitten jasennyspuusta vasen (oikea)johto, niin saadaan takaisin alkuperainen johto.

Lause 12. Olkoon G = (V, Σ, P, S) kontekstiton kielioppi. Talloin:

(i) jokaisella kieliopin G lausejohdoksella γ on sen mukainen jasennyspuu τ , jonkatuotos on γ;

(ii) jokaista kieliopin G mukaista jasennyspuuta τ , jonka tuotos on paatemerkkijono x,vastaavat yksikasitteiset vasen ja oikea johto S⇒

lm

∗x ja S⇒rm

∗x.

Seuraus: Jokaisella kieliopin G lauseella on vasen ja oikea johto.

• Tai siis kontekstittoman kieliopin tuottamien lauseiden jasennyspuut, vasemmatja oikeat johdot vastaavat yksikasitteisesti toisiaan, joten riittaa antaa vain yksivaihtoehtoisista jasennyksen esitystavoista.

Kieliopin moniselitteisyys

• Samalla lauseella voi olla kieliopissa useita erilaisia jasennyksia.

Esimerkiksi lauseella a + a ∗ a kieliopissa G′expr (9, sivu 84):

a

+E

E

E

EE ∗

a a

EE

a a

E

E

E

a+

Maaritelma 12. Kontekstiton kielioppi G on moniselitteinen (englanniksi ”ambiguous”),jos jollakin sen lauseella x on kaksi erilaista sen mukaista jasennyspuuta. Muuten kielioppion yksiselitteinen (”unambiguous”).

Kontekstiton kieli, jonka voi tuottaa vain moniselitteisella kieliopilla, on luonnostaanmoniselitteinen (”inherently ambiguous”).

Esimerkki 45. Aritmeettisia lausekkeita kuvaavalle kielelle annettiin kaksi kielioppia.Niista Gexpr on yksiselitteinen:

E → T | E + T

T → F | T ∗ F

F → a | (E).

Se toinen kielioppi G′expr nahtiin edella moniselitteiseksi:

E → E + E | E ∗ E | a | (E)

Itse kieli Lexpr = L(G′expr) ei kuitenkaan ole luonnostaan moniselitteinen, koska silla on

myos yksiselitteinen kielioppi Gexpr.

110

Page 113: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Aritmeettisen lausekkeen jasennyspuun avulla voidaan helposti laskea lausekkeenarvo, kun muuttujien arvot tunnetaan.

• Yleisemmin, kaantaja voi jasennyspuun avulla generoida koodia lausekkeen evaluoi-miseksi. Tata sovellusta silmalla pitaen edellisen esimerkin yksiselitteinen kielioppiGexpr noudattaa koulusta tuttua presedenssisaantoa, jonka mukaan kertolaskut las-ketaan ennen yhteenlaskuja.

• Kieliopilla G′expr ei ole tata ominaisuutta, vaan sille kelpaisi kumpi tahansa las-

kujarjestys.

• Karjistaen: jos kielioppi tai kieli on moniselitteinen, niin on myos sen ”merkityskin”.Siksi yksiselitteisyys on hyve!

• Jasennyspuun hyodyntamiseksi pitaa tietysti ensinnakin osata muodostaa annetullemerkkijonolle jasennyspuu (eli yhtapitavasti johto) annetussa kieliopissa, tai todeta,etta merkkijono ei kuulu kieleen. Palaamme tahan pian. . .

Esimerkki 46. Kieli aibjck | i = j tai j = k on luonnostaan moniselitteinen.

• Kieliopin moniselitteisyys on algoritmisesti ratkeamaton ongelma.

Eli sen osoittaminen edellyttaa ihmisen laatimaa todistusta.

Kieliopin moniselitteisyyden osoittaminen on helppoa:

Riittaa keksia yksikin merkkijono, jolla on useita erilaisia jasennyspuita.

Kielen osoittaminen luonnostaan moniselitteiseksi taas on hankalaa:

Onhan osoitettava, ettei mikaan kielta kuvaava kielioppi ole yksiselitteinen.

• Kaikki determinististen pinoautomaattien tunnistamat kielet ovat yksiselitteisia.(Ks. esim. Hopcroft et al. (2001, Lause 6.21).) Toisaalta . . .

• Luonnostaan moniselitteiset kielet voidaan tunnistaa vain epadeterministisilla pi-noautomaateilla.

• Lisaksi on olemassa myos yksiselitteisia kielia, jotka vaativat epadeterministisenpinoautomaatin.

Esimerkki 47. Kielelle L = wwR | w ∈ a, b∗ voidaan antaa yksiselitteinen kielioppi

S → aSa | bSb | ε

mutta sita ei voida tunnistaa deterministisella automaatilla.(Ongelma: automaatin taytyy ”arvata”, milloin on tultu merkkijonon keskikohtaan.)

• Kontekstittomien kielten aliluokilla patee siis seuraavat aidot sisaltyvyydet:

111

Page 114: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

tunnistus: deterministinen pinoautomaatti

deterministiset kielet

tunnistus: ??

yksiselitteiset kielet

tyyppi 3: säännölliset kielet

tunnistus: äärellinen automaatti

tunnistus: pinoautomaatti

tyyppi 2: kontekstittomat kielet

Esimerkki 48. Myos kieli L = anbm | n/2 ≤ m ≤ n on yksiselitteinen, muttaepadeterministinen.

Yksinkertaisin kielen tuottava kielioppi on

S → aSb | aaSb | ε

joka on kuitenkin moniselitteinen. (Anna esimerkki vaihtoehtoisista jasennyksista.)Saman kielen voi kuitenkin kuvata yksiselitteisella kieliopilla:

S → aSb | A | εA→ aaAb | aab

Kielelle voidaan laatia kuvan 23 epadeterministinen pinoautomaatti, mutta determinis-tista automaattia ei pystyta laatimaan.

Esimerkki 49. Tarkastellaan seuraavaa saantoa if–else-lauseiden jasentamiseksi:

S → if B then S else S | if B then S | i = N

Tassa B voi olla mika tahansa ehtolauseke, i mika tahansa muuttujannimi ja N mikatahansa kokonaislukuvakio.

Kun silla jasennetaan merkkijono

if x == 1 then if y == 1 then z = 0 else z = 1

niin vastauksena saadaan kaksi erilaista jasennyspuutaMiten kay, jos muuttujat vastaavat esimerkiksi seuraavia signaaleja:

x = ”palohalytin soi”,

y = ”koehalytys”,

z = ”halyta palokunta”?

112

Page 115: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

b,A/

6

3 5

421a,

a,

a,

a,

b,A/

b,A/

b,A/

a,

εε

ε

ε

ε

ε

ε

ε ε

ε

ε /

/

/

/

/

/

A

ε

AA

A

a,

Kuva 23: Esimerkin epadeterministinen pinoautomaatti.

if

Bif then

B then

S

S S

S

else

z=0 z=1

x==1

y==1

z=1

S

if B

if

S

z=0

then

then

B else S

S

y==1

x==1

• Tata esimerkkia 49 kutsutaan ”roikkuvan else-haaran ongelmaksi” (englanniksi”the dangling else problem”:

– Kumpaan if -ehdoista tama yksinainen else-haara pitaisi liittaa?

– Ohjelmointikielen syntaksimaarittelyt ratkaisevat taman lausumalla ”else-haara

113

Page 116: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

liittyy aina lahimpaan sellaiseen edeltavaan if -ehtoon jolla ei viela ole omaaelse-haaraa”.

• Ohjelmointikielen kieliopin (eli syntaksin) tulee olla yksiselitteinen, jotta silla kir-joitettu ohjelma voidaan kaantaa yksiselitteisesti toimivaksi ohjelmaksi.

Siksi niissa kaytetaan formaaleja esitystapoja ja tallaisia lausumia.

• Sama olisi toivottavaa myos ohjelmointikielen merkitysopille (eli semantiikalle), elisiinakaan ei saisi olla asioita joiden kayttaytymista ei ole maaritelty.

Myos merkitysopissa voidaan kayttaa formaaleja esitystapoja, mutta valitettavastilaheskaan kaikille ohjelmointikielille niin ei tehda.

• Karjistaen: Ohjelmointikielen maarittelyn pitaisi poistaa eika lisata ohjelmoijanepatietoisuutta siita, mita hanen kirjoittamansa ohjelma tarkoittaa!

Ohjelmointikielen kaantamisesta

• Ohjelmointikielen kaantajan vaiheet periaatteellisella tasolla (kuva 24):

1. Selaaminen (scanning, lexical analysis):

– jakaa syotteen tekstialkioiksi (token) kuten muuttujanimiin, liukulukuva-kioihin, varattuihin sanoihin,. . . jotta jasennyksen ei enaa tarvitse edetayksi tekstimerkki kerrallaan

– Tekniikka pohjautuu tekstialkioden tunnistamiseen aarellisilla automaa-teilla.

– UNIX-tyokalu lex jonka GNU-versio on flex.

2. Jasentaminen (parsing):

– Muodostaa selauksen tuottamalle tekstialkiojonolle jasennyspuun. . .

– . . . joka perustuu ohjelmointikielen maarittelyn osana laadittuun konteks-tittomaan kielioppiin.Tassa on ohjelmointikielen kieliopin yksikasitteisyysvaatimus: jasennyspui-ta tehdaan vain yksi!

– UNIX-tyokalu yacc jonka GNU-versio on bison on ns. kaantajakaantaja(englanniksi ”compiler compiler”):Se lukee sisaansa kieliopin kuvauksen ja generoi siita jasennysta tekevanaliohjelman, jonka ohjelmoija voi liittaa osaksi sita kaantajaa, jota han onnyt toteuttamassa.

– Selaus ja jasennys ovat ne vaiheet, joista kaantajaa kayttava sovellusohjel-moija saa ne virheilmoitukset, jotka alkavat "Syntax Error...".

3. Semanttinen analyysi: tyypitys jne.

– Esimerkiksi kielioppi ilmaisee vain, etta se osa ohjelmakoodia, jossa muut-tujat esitellaan, edeltaa sita osaa, jossa niita kaytetaan.

– Esittelyosaa jasentaessaan kaantaja keraa esitellyt muuttujat ja niiden tyy-pit symbolitauluun. Kun se myohemmin kohtaa jonkin muuttujan kuten i

kayton, niin se kysyy tasta taulusta mika sen tyypiksi on maaritelty.Jos muuttujaa ei ole taulussa, niin tulee virheilmoitus "Error: undefined

variable...".

114

Page 117: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

attribuuttienlaskenta

koodingenerointi

komento

komento

while−komento

while lauseke

>

i 0

00 FF 1A 8C17 1F 05 5EAA C0 7F 99...

Lopuksikonekoodina

komento

komento

while−komento

while lauseke

>

i 0

while(i>0)...

merkkijononalähdekoodi ASCII−

varattu sana:muuttujan nimi:operaattori:kokonaislukuvakio:

while

0>

...

jonona pidempiä yksiköitä

i

tyyppi: kokonaisluku

tyyppi: totuusarvo

Aluksi

jäsennyspuuna

Syntax error...

Error: undefined variable...Error: type mismatch......

selaus(scanning)

jäsennys(parsing)

täydennettynä jäsennyspuuna

Kuva 24: Ohjelmointikielen kaantajan vaihejako.

– Tyyppi on yksi muuttujan attribuuteista eli ominaisuuksista. Semanttisenanalyysin voi ajatella koristelevan jasennyksen tuottaman jasennyspuuntallaisilla attribuuteilla ja niiden arvoilla.Esimerkiksi while-silmukan testin tyyppiattribuutiksi pitaa tulla ”totuusar-vo”, muuten tulee semanttinen virhe kuten "Error: type mismatch...".

– Kielioppia, johon on yhdistetty attribuuttien maarittelyt ja niiden las-kusaannot, kutsutaan attribuuttikieliopiksi (englanniksi ”attribute gram-mar”).

– Itse asiassa yacc-tyokalu lukeekin sisaan tallaisen attribuuttikieliopin jatuottaa siita sellaisen jasennysaliohjelman, joka samalla laskee nama att-ribuuttiarvot.

4. Koodin tuottaminen ja optimointi.

– Suoritetaan kaymalla lapi tata jasennyspuuta, joka on koristeltu koodintuottamiseen tarvittavilla attribuuteilla.

– Tassa vaiheessa ei enaa tule virheilmoituksia.

Aho et al. (2007) kertovat syvallisesti naista ohjelmointikielen kaantamisen eri vai-heista. Levine et al. (1992) kertovat naista kaantajien ja vastaavien ohjelmien to-teuttamista merkittavasti helpottavista tyokaluista lex ja yacc.

• Kaytannossa jasennys ja muut vaiheet limittyvat ajallisesti:

– Esimerkiksi jasennin pyytaa selaimelta ”anna minulle seuraava tekstialkio”.

– Vastaavasti jasenninkaan ei yleensa tuota koko jasennyspuuta kerralla muistiin,vaan ainoastaan sen osan, jota semanttinen analyysi kullakin hetkella tarvitsee.

• Ohjelmointikielen jasentamiseen on useita tekniikoita. Lahtokohtana on tyypillisestiohjelmointikielen maarittelyssa eli spesifikaatiossa annettu kontekstiton kielioppi.

115

Page 118: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Tehokkaat jasennysmenetelmat edellyttavat, etta kielioppi on jossain rajoitetussamuodossa. Naista tarkeimmat ovat LL(k) ja LR(k).

• Ohjelmointikelten syntaktinen kasittely (eli vaiheet 1 ja 2) on hallittu jo pitkaan,ja siihen on laajalti levinneita apuvalineita kuten lex ja yacc.

• Ohjelmointikielten kehitys ja tutkimus painottuukin nykyaan erityisesti niiden tyyp-pijarjestelmiin (eli vaiheeseen 3).

Esimerkiksi funktionaalisten ja olio-ohjelmointikielten tyyppijarjestelmat voivat ollahyvinkin monipuolisia ja -mutkaisia. . .

• Tuotetun konekoodin optimointi (vaiheessa 4) taas on kiinnostavaa erityisesti mik-roprosessoreiden ja tietokonelaitteistojen valmistajille.

Esimerkiksi nykyaikainen mikroprosessori sisaltaa useita ytimia, jotka voivat laskearinnakkain — jos vain kaannetty ohjelmakoodi osaa hyodyntaa tata mahdollisuut-ta. . .

5.5 Cocke-Younger-Kasami-algoritmi

• Mille tahansa kontekstittomalla kieliopilla G kysymys ”pateeko w ∈ L(G)?” voidaanratkaista ajassa O(|w|3) Cocken, Youngerin ja Kasamin kehittamalla ja heidan mu-kaansa nimetylla CYK-algoritmilla.

• CYK-algoritmi olettaa, etta kielioppi G on Chomskyn normaalimuodossa. Mika ta-hansa kontekstiton kielioppi voidaan muuttaa tahan muotoon. . .

• Edella ei siis ole laskettu mukaan tahan muunnokseen kuluvaa aikaa — sehantehdaan vain kerran kieliopille G, ja sen jalkeen CYK-algoritmia voidaan kayttaamonille eri w ∈ Σ∗.

• CYK-algoritmia ei kuitenkaan kayteta ohjelmointikielille, koska niiden kieliopit Gvoidaan suunnitella kielta maariteltaessa siten, etta on nopeampiakin, jopa lineaa-risia eli ajassa O(|w|) toimivia menetelmia.

Chomskyn normaalimuoto

• Kielioppeja algoritmisesti kasiteltaessa on hyva, jos ne ovat rakenteeltaan ”siisteja”.

• Tarkastellaan kielioppia

S → AB

A → a

B → CC

C → DD

D → EE

E → FF

F → ε

Kieliopin tuottama kieli on yksinkertaisesti a. Johdot ovat kuitenkin pitkia, mikaon erilaisten algoritmien kannalta ongelmallista.

116

Page 119: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Esitamme seuraavaksi, miten kontekstittomalle kieliopille voidaan loytaa Chomskynnormaalimuoto (englanniksi ”Chomsky Normal Form” eli CNF).

(Huomaa: Logiikassa lyhenne CNF tarkoittaa puolestaan loogisen kaavan konjunk-tiivista (englanniksi Conjunctive) normaalimuotoa.)

• Chomskyn normaalimuoto tarjoaa hyvia esimerkkeja kontekstittomien kielioppienyksinkertaistamisessa kaytettavista paattelyista ja algoritmeista.

Maaritelma 13. Kontekstiton kielioppi G = (V, Σ, P, S) on Chomskyn normaalimuo-dossa, jos:

• Valikkeista enintaan lahtosymboli S on tyhjentyva (nullable), eli sellainen joka voituottaa tyhjan merkkijonon, eli S⇒

G

∗ε.

• Muut produktiot ovat muotoa A→ BC tai A→ a, joissa A, B ja C ovat valikkeitaja a on paatemerkki.

• Lisaksi vaaditaan yksinkertaisuuden vuoksi, etta lahtosymboli S ei esiinny minkaanproduktion oikealla puolella.

Esimerkki 50. Kielioppi

S → AB | εA → BA | aB → b

on Chomskyn normaalimuodossa.

• Normaalimuodosta seuraa etta jos S ⇒∗ w ja w 6= ε, niin johdon pituus on tasan2 |w| − 1 askelta.

• Tyhjan merkkijonon ainoa johto taas on S ⇒ ε ja sen pituus on 1 askel.

Muunnos Chomskyn normaalimuotoon

• Kontekstiton kielioppi voidaan muuntaa Chomskyn normaalimuotoon seuraavistavaiheista koostuvalla menetelmalla:

1. Poistetaan lahtosymboli S produktioiden oikealta puolelta.

2. Poistetaan muut ε-produktiot, eli ne saannot muotoa A→ ε joissa A 6= S.

3. Poistetaan yksikkoproduktiot, eli saannot muotoa A→ B.

4. Pilkotaan lyhyemmiksi liian pitkat produktiot, eli ne saannot muotoa A →X1X2X3 . . . Xk joissa on k > 2 symbolia oikealla puolella.

1. Produktioiden oikealla puolella olevien lahtosymbolien poistaminen

Lause 13. Mika tahansa kontekstiton kieli voidaan tuottaa kontekstittomalla kieliopillajossa lahtosymboli ei esiinny minkaan saannon oikealla puolella.

Todistus: Olkoon annettu kontekstiton kielioppi G = (V, Σ, P, S). Muodostetaan siitauusi kielioppi G′ = (V ′, Σ, P ′, S ′) seuraavasti:

117

Page 120: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Asetetaan V ′ ← V ∪ S ′ missa S ′ /∈ V , eli valitaan jokin uusi symboli S ′ jota eiole viela kaytetty kieliopissa G.

• Saantojoukko P ′ saadaan lisaamalla saantojoukkoon P uusi saanto S ′ → S talleuudelle symbolille S ′.

• Jos ε ∈ L(G), niin lisataan myos saanto S ′ → ε.

Koska lahtosymboli S ′ on uusi, se ei esiinny minkaan saannon oikealla puolella. 2

2. Tyhjentyvien valikkeiden kasittely

• Kieliopin G valike A on tyhjentyva (tai ”nollautuva”), jos siita voi tuottaa tyhjanmerkkijonon, eli jos A⇒

G

∗ε.

• Kaksi kielioppia G ja G′ ovat ekvivalentit jos ne tuottavat saman kielen, eli josL(G) = L(G′).

Lause 14. Mista tahansa kontekstittomasta kieliopista G voidaan muodostaa ekvivalenttikielioppi G′, jossa enintaan lahtosymboli on tyhjentyva.

Todistus: Kielioppi G′ rakennetaan kolmessa vaiheessa.

1. Ensiksi lasketaan kaikkien tyhjentyvien valikkeiden joukko.

• Tama tehdaan lukemalla jokainen kielioppisaanto A→ X1X2X3 . . . Xk paattely-saantona

”jos kaikki sen oikean puolen symbolit X1, X2, X3, . . . , Xk nollautuvatniin myos sen vasemman puolen valike A on nollautuva”

ja laskemalla mitka kaikki valikkeet voidaan nain paatella nollautuviksi.

• Erityisesti saanto A → ε tekee vasemmasta puolestaan A heti nollautuvan,koska nythan k = 0.

• Jos taas yksikin oikean puolen symboli Xi on paatemerkki, niin tama saantoei voi mitenkaan tehda vasemmasta puolestaan nollautuvaa.

• Oikealla tietorakennevalinnalla tama vaihe vie oleellisesti vain lineaarisen ajankieliopin G kokoon nahden.

1 nollautuvat ← ∅2 while kieliopissa G on saanto A→ X1X2X3 . . . Xk jonka vasen puoli

A 6∈ nollautuvat vaikka jokainen sen oikean puolen symboliX1, X2, X3, . . . , Xk ∈ nollautuvat

3 do nollautuvat ← nollautuvat ∪A

2. Nyt nollautuvat valikkeet tiedetaan, joten niiden esiintymat voidaan poistaa.

• Kun saanto on muotoa A → αBβ jossa B ∈ nollautuvat , niin lisataan myossaanto A→ αβ.

• Toistetaan tata seka kieliopin G alkuperaisiin etta nain syntyviin uusiin saan-toihin, kunnes uusia saantoja ei enaa synny.

118

Page 121: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Lopputuloksena saannosta A → X1X2X3 . . . Xk syntyy kaikki saannot A → αjossa α on mika tahansa seuraavan aarellisen kielen merkkijono:

(X1 ∪∆1)(X2 ∪∆2)(X3 ∪∆3) . . . (Xk ∪∆k)

jossa jokainen

∆i =

ε jos Xi ∈ nollautuvat

∅ jos Xi 6∈ nollautuvat

Valike Xi voi siis puuttua jonosta α joss se on nollautuva.

• Valitettavasti kieliopin koko kasvaa eksponentiaalisesti koska yhdesta tallaisestasaannosta syntyy yhteensa

2(|∆1|+|∆2|+|∆3|+···+|∆k|) − 1

uutta saantoa.

3. Lopuksi voidaan poistaa kaikki saannot muotoa A→ ε koska niiden vaikutukset onlisatty uusina saantoina edellisessa vaiheessa 2.

Jos poistettavana on myos saanto S → ε nykyiselle lahtosymbolille S, niin silloinlisataankin uusi lahtosymboli S ′ ja sille saannot

S ′ → ε | S.

2

Esimerkki 51. Poistetaan ε-produktiot kieliopista:

S → BSB | AA → aA | aa

B → bB | ε.

Nyt nollautuvat = B. Siis

S → BSB tuottaa saannot S → S | SB | BS | BSB

B → bB tuottaa saannot B → b | bB.

Lisataan viela uusi alkusymboli S ′, ja otetaan mukaan kaikki vanhat saannot lukuunotta-matta ε-saantoja. Kieliopiksi tulee

S ′ → S S → S | SB | BS | BSB | AA→ aA | aa B → b | bB.

119

Page 122: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkki 52. Poistetaan ε-produktiot seuraavasta kieliopista:

S → A | BA → aBa | ε ⇒ (nollautuvat = A, B, S)B → bAb | ε

S → A | B | εA → aBa | aa | ε ⇒B → bAb | bb | ε

S ′ → S | εS → A | BA → aBa | aa

B → bAb | bb

3. Yksikkoproduktioiden poistaminen

• Produktio muotoa A → B, jossa A ja B ovat valikkeita, on yksikkoproduktio (unitproduction).

Lause 15. Mista tahansa kontekstittomasta kieliopista G voidaan muodostaa ekvivalenttikielioppi G′, jossa ei ole yksikkoproduktioita.

Todistus: Olkoon kielioppi taas G = (V, Σ, P, S) ja sen valikkeet siis N = V \Σ. Tehdaansiita kielioppi G′ kahdessa vaiheessa.

1. Ensiksi selvitetaan jokaiselle valikkeelle A ∈ N ne valikkeet, jotka voidaan tuottaavalikkeesta A pelkilla yksikkoproduktioilla.

• Ajatellaan sellaista suunnattua verkkoa H, jonka

solmuina ovat kaikki valikkeet A ∈ N ja

kaarina kaikki yksikkoproduktiot A→ B.

• TRA II -kurssilla kasitellaan miten lasketaan taman verkon H transitiivinensulkeuma H∗, jossa on kaari A0 → An tasmalleen silloin kun verkossa H onpolku

A0 → A1 → A2 → · · · → An (11)

jollakin n ≥ 0.

• Erityisesti verkossa H∗ on jokaisesta solmusta A kaari A→ A takaisin itseensa— polku, jonka pituus on n = 0 kaarta.

• Tama H∗ voidaan laskea ajassa O((sen solmujen lukumaara)3).

2. Sitten oikaistaan yksikkoproduktiopolut kuten (11):

• Silloin kun verkossa H∗ on kaari Ai → Aj ja kieliopissa G on produktio Aj → αjoka ei ole yksikkoproduktio, niin lisaa saanto Ai → α oikaisemaan polku

Ai → Ai+1 → Ai+2 → · · · → Aj → α .

120

Page 123: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Naiden oikaisujen jalkeen yksikkoproduktiot eivat enaa ole tarpeen, joten nevoidaan jattaa pois. 2

Esimerkki 53. Jatketaan aiemman esimerkin 51 lopputuloksesta.

S ′ → S S → S | SB | BS | BSB | AA→ aA | aa B → b | bB .

Nyt verkko H∗ koostuu kaarista S ′ → S, S ′ → A ja S → A (itseensa palaavien kaartenX → X lisaksi).

Siis muuttujalle S ′ tulee omien alkuperaisten lisaksi kaikki muuttujien S ja A muutkuin yksikkoproduktiot, ja muuttujalle S samoin:

S ′ → SB | BS | BSB | aA | aa

S → SB | BS | BSB | aA | aa .

Ottamalla lisaksi kaikki vanhat ei-yksikkosaannot saadaan tuloskielioppi:

S ′ → SB | BS | BSB | aA | aa S → SB | BS | BSB | aA | aa

A→ aA | aa B → b | bB .

Esimerkki 54. Poistetaan yksikkoproduktiot edella esimerkissa 52 saadusta kieliopista

S ′ → S | ε S → A | BA→ aBa | aa B → bAb | bb .

Verkko H∗ on

solmusta paasee solmuihinS ′ S, A ja B seka itseensaS A ja B seka itseensaA vain itseensaB vain itseensa

Korvaamalla yksikkoproduktiot edella esitetylla tavalla saadaan tuloskielioppi

S ′ → aBa | aa | bAb | bb | ε S → aBa | aa | bAb | bbA→ aBa | aa B → bAb | bb.

4. Liian pitkien produktioiden lyhentaminen

• Chomskyn normaalimuodossa saannon

A→ X1X2X3 . . . Xk

oikea puoli saa olla pituutta k = . . .

2 mutta silloin sen kummankin symbolin pitaa olla valikkeita, eli X1, X2 ∈ N .

1 mutta silloin sen ainoan symbolin pitaa olla paatesymboli X1 ∈ Σ.

Edella lauseessa 15 huolehdittiin, ettei taman ainoa symboli X1 ole valike.

0 mutta silloin saannon pitaa olla S → ε jossa S on kieliopin lahtosymboli.

Tasta on myos huolehdittu edella lauseessa 14.

121

Page 124: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Jos saanto on liian pitka eli k > 2 niin sita voidaan lyhentaa yhdella symbolillaseuraavasti:

1. Olkoon U jokin kokonaan uusi valikesymboli jota ei ole aikaisemmin kaytettykoko tassa kieliopissa.

2. Korvataan tama liian pitka saanto saantoparilla

A→ X1X2X3 . . . Xk−2U

U → Xk−1Xk.

Tata toistamalla voidaan ylipitkat saannot lyhentaa vaadittuun pituuteen k = 2.

• Lopuksi voidaan jokaiselle paatemerkille a ∈ Σ lisata oma uusi valike Ca ja sillesaanto Ca → a.

– Sen jalkeen paatemerkin a esiintymat muiden saantojen oikealla puolella kor-vataan talla uudella valikkeella Ca.

– Siis esimerkiksi saanto A→ aB muuntuu muotoon A→ CaB jne.

• Olemme vihdoin paasseet Chomskyn normaalimuotoon!

Esimerkki 55. Jatketaan edelleen aiempaa esimerkkia 53:

S ′ → SB | BS | BSB | aA | aa S → SB | BS | BSB | aA | aa

A→ aA | aa B → b | bB.

Kielioppi tulee muotoon

S ′ → SB | BS | BA1 | CaA | CaCa S → SB | BS | BA2 | CaA | CaCa

A1 → SB A2 → SB

A→ CaA | CaCa B → Cb | CbB

Ca → a Cb → b.

Tata voisi viela yksinkertaistaa (koska uudet valikkeet A1 ja A2 ovat samat). Muistetaanviela etta alunperin lahdettiin liikkeelle selvasti pienemmasta kieliopista:

S → BSB | A A→ aA | aa B → bB | ε.

Tehtava 44. Tuota Chomskyn normaalimuoto kieliopille

S → aBCd | bbbB → b

C → c

Tehtava 45. Olkoon annettu kielioppi:

S → ASB | BC → cC | εA → CaAC | aB → abc | A

Muunna kielioppi Chomskyn normaalimuotoon:

122

Page 125: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1. Poista lahtosymboli saantojen oikealta puolelta;

2. Poista ε-saannot;

3. Poista tuloksesta yksikkosaannot;

4. Poista tuloksesta ylipitkat saannot.

Ratkaisu:

S ′ → AX1 | CaX2 | CX3 | CaX4 | CX5 | CaA | aS → AX1 | CaX2 | CX3 | CaX4 | CX5 | CaA | aC → CcC | cA → CX3 | CaX4 | CX5 | CaA | aB → CaX2 | CX3 | CaX4 | CX5 | CaA | a

X1 → SB

X2 → CbCc

X3 → CaX4

X4 → AC

X5 → CaA

Ca → a

Cb → b

Cc → c

Huomaa: Valikkeet olisi voinut nimeta toisinkin. Ratkaisussa on myos yhdistetty joitakinvalikkeita, joiden saannot olivat samoja.)

• Edella kuvattu muunnos Chomskyn normaalimuotoon voi tuottaa tuloksenaan pa-himmillaan eksponentiaalisesti suuremman kieliopin kuin alkuperainen oli.

• Tama ongelma voidaan kuitenkin korjata siten, etta pilkotaankin liian pitkat pro-duktiot (vaihe 4) jo ennen kuin poistetaan ε-produktiot (vaihe 2).

• Silloin tuloskielioppi on enaa polynomisen verran suurempi kuin alkuperainen, ja sevoidaan myos tuottaa polynomisessa ajassa.

• Sivuutetaan kuitenkin muunnokseen tarvittavat muutokset.

CYK-algoritmi

Annettuina: Kontekstiton kielioppi G, merkkijono w.

Kysymys: Pateeko w ∈ L(G)?.

Yksinkertaistettu kysymys: Jos G muunnetaan ensin Chomskyn normaalimuotoon G′,niin miten silloin vastauksen voisi laskea?

Yksinkertaistettu vastaus:

• Jos w = ε niin vastaa onko kieliopissa G′ saantoa S → ε vaiko ei.

• Jos taas w 6= ε niin ryhdy kaymaan lapi kaikkia kieliopin G′ niita johtoja,joiden pituus (eli askelten lukumaara) on 2 · |w| − 1. Vastaa onko w jonkinniista tuotos vaiko ei.

123

Page 126: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Chomskyn normaalimuodossa jasennyspuut ovat aitoja binaaripuita, eli jokai-sella sisasolmulla on 2 lasta. Aidossa |w|-lehtisessa binaaripuussa taas on |w|−1sisasolmua. Tasta saatiin tuo 2 · |w| − 1.

Ongelma: Naita johtoja voi olla pituuteen |w| verrattuna eksponentiaalisen paljon jotenainakaan tama menetelma ei ole kaytannollinen.

Ratkaisu: Lahdetaan kehittamaan jotakin tehokkaampaa. . .

Hajoita ja hallitse

• Hajoita ja hallitse (englanniksi ”divide and conquer”) on eras yleinen algoritmin-suunnittelumenetelma.

Pienen syotteen vastaus on yleensa helppo laskea.

Suuri syote kasitellaan seuraavasti:

1. Jaetaan se jotenkin pienempiin syotteisiin.

2. Lasketaan niiden vastaukset rekursiivisesti samalla menetelmalla.

3. Yhdistetaan nama pienten syotteiden vastaukset jotenkin vastaukseksi suu-relle syotteelle.

• ASA-kurssi kertoo lisaa tallaisista yleisista algoritmisten ongelmien ratkaisuperiaat-teista.

• Nyt ongelmamme on yleisesti

annettuna valike A ja paatemerkkijono x ∈ Σ+

vastaa voiko valikkeesta A generoida merkkijonon x?

Erityisesti meita kiinnostaa lopputulos jossa A = S ja x = w.

• Jos A ⇒∗ x jossa |x| > 1 niin voimme erottaa siina johdossa ensimmaisen ja loputaskeleet, eli

A⇒BC

⇒∗x.

Edelleen, taman merkkijonon x taytyy jakautua alkuosaan y ja loppuosaan z joilla

B ⇒∗ y

C ⇒∗ z.

Nama osat eivat ole tyhjia, koska kyseessa on Chomskyn normaalimuoto. Siten tassaovat ne pienemmat kysymyksemme — nama y ja z ovat aidosti lyhyempia kuin x.

• Jos taas |x| = 1, niin silloin vastaus voidaan katsoa suoraan kieliopista, koska se onChomskyn normaalimuodossa.

• Nain saadaan rekursiivinen jasennysalgoritmi kuvassa 25.

• Tama algoritmi toimii, mutta sekin on yha eksponentiaalinen.

124

Page 127: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Paaohjelma:1 if w = ε2 then return onko kieliopissa saantoa S → ε vaiko ei sen alkusymbolille S3 else return Johto(S, w)

Johto(A, x) :1 if |x| = 12 then return onko kieliopissa saantoa A→ x vaiko ei3 else for each kieliopin saanto A→ BC4 do for each katkaisukohta 1 ≤ ` < |x|5 do y ← x:n ` ensimmaista merkkia6 z ← x:n loput merkit7 if Johto(B, y) and Johto(C, z)8 then return true9 return false

Kuva 25: Hajoita ja hallitse -jasennysalgoritmi.

• Syyna on talla kertaa se, etta se laskee samoja valituloksia yha uudelleen ja uudel-leen:

Jos kielioppi on esimerkiksi

S → AB | CA | . . .

A→ CB | . . .

...

niin silloin kutsu Johto(S, abcde) tuottaa testit

Johto(A, abc) and Johto(B, de) ja

Johto(C, a) and Johto(A, bcde) josta vuorostaan

Johto(C, bc) and Johto(B, de).

Dynaaminen ohjelmointi

• Tata rekursiivista algoritmia voi tehostaa taulukoimalla nama valitulokset, jottaniita ei tarvitse laskea yha uudelleen ja uudelleen.

• Tata tapaa tehostaa hajoita ja hallitse -algoritmeja kutsutaan dynaamiseksi ohjel-moinniksi (englanniksi ”dynamic programming”).

• Olkoon syotemerkkijono w lueteltuna merkki kerrallaan w1w2w3 . . . wn.

• Muodostetaan nyt 2-ulotteinen taulukko Ri,j, jossa 1 ≤ i ≤ j ≤ n ja

Ri,j = A ∈ N | A⇒∗ wiwi+1wi+2 . . . wj

Taulukkopaikan Ri,j sisaltona ovat siis ne valikkeet A ∈ N , joista voi tuottaasyotteen w osajonon merkista i merkkiin j.

125

Page 128: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Eli ne A, joilla Johto(A, wiwi+1wi+2 . . . wj) = true.

• Tama taulukko R on itse asiassa kolmiomatriisi:

w1 w2 w3 w4 w5

R1,1

R1,2 R2,2

R1,3 R2,3 R3,3

R1,4 R2,4 R3,4 R4,4

R1,5 R2,5 R3,5 R4,5 R5,5

• Taulukon R sarakkeet vastaavat osien alkukohtia syotemerkkijonossa w.

• Taulukon R jokainen diagonaali vastaa tietyn mittaisia osia:

– diagonaali R1,1, R2,2, R3,3, . . . vastaa 1-merkkisia

– diagonaali R1,2, R2,3, R3,4, . . . vastaa 2-merkkisia, . . .

– diagonaali R1,d, R2,d+1, R3,d+2, . . . d-merkkisia.

Ensin taulukoidaan tulokset kaikille 1-merkkisille osille:1 for i← 1, 2, 3, . . . , n2 do Ri,i ← A | A→ wi ∈ P3 for k ← 1, 2, 3, . . . , n− 1

do Aiemmin on taulukoitu tulokset kaikille k-merkkisille osille,joten nyt taulukoidaan tulokset kaikille k + 1-merkkisille:

4 for i← 1, 2, 3, . . . , n− k5 do j ← i + k6 Ri,j ← ∅7 for `← i, i + 1, i + 2, . . . , j − 1

do Kun alkuosa x = wiwi+1wi+2 . . . w`

ja loppuosa y = w`+1w`+2w`+3 . . . wj:8 Ri,j ← Ri,j∪

A | A→ BC ∈ P, B ∈ Ri,`, C ∈ R`+1,j9 return onko lahtosymboli S ∈ R1,n vaiko ei.

Kootut selitykset

• Esim. paikkaan Ri,j lasketaan valikkeet A, joilla A ⇒∗ wiwi+1 . . . wj. Taman joh-don taytyy alkaa askeleella A ⇒ BC, missa valikkeesta B voidaan johtaa osanwi . . . wj jokin alkuosa, esim. B ⇒∗ wiwi+1 . . . w`, ja valikkeesta C voidaan johtaasen loppuosa: C ⇒∗ w`+1w`+2 . . . wj.

• Jotta yllaoleva onnistuu, valikkeen B taytyy loytya taulukon paikasta Ri,` ja valikkeenC paikasta R`+1,j.

• Mahdollisia taulukon paikkoja on kuitenkin useita, silla kaikki yli kahden pituisetmerkkijonot voidaan jakaa usealla tapaa kahteen osaan. Siis ` voidaan valita monellatapaa (` = i . . . j − 1).

126

Page 129: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Esimerkiksi laskettaessa R3,7 tarkastellaan kaikkia pareja

(R3,3, R4,7), (R3,4, R5,7), (R3,5, R6,7), (R3,6, R7,7) :

Siten w3 . . . w7 saadaan valikkeesta A saannolla A → BC jakamalla se kahteenosaan, esim. w3 . . . w4 ja w5 . . . w7, ja tutkimalla saadaanko ensimmainen osa sym-bolista B ∈ R3,4 ja jalkimmainen osa symbolista C ∈ R5,7. Jos nain on, niin lisataanA paikkaan R3,7.

• Algoritmi tayttaa taulukkonsaO(n3) askeleessa — kun emme laske mukaan kieliopinnormalisointiin ja kasittelyyn kuluvaa aikaa.

Olemme siis saaneet alun perin eksponentiaalisesta ja siten epakaytannollisesta al-goritmista polynomisen ja siten kaytannollisen.

Esimerkki 56. Sovelletaan CYK-algoritmia CNF-kielioppiin G:

S → AB | BCA → BA | aB → CC | bC → AB | a

Onko w = baaba ∈ L(G)?

i→1 : b 2 : a 3 : a 4 : b 5 : a

BS, A A, C∅ B A, C∅ B S, C B

S, A,C S, A,C B S, A A, C

Nyt S ∈ R1,5, joten w ∈ L(G).

Apukeino CYK-algoritmin simuloimiseen

127

Page 130: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

a1 a2 a3 a4a0

a1 a2 a3 a4a0

a1 a2 a3 a4a0a1 a2 a3 a4a0

a1 a2 a3 a4a0

3. kierros

5. kierros

1. kierros 2. kierros

4. kierros

5:n pituiset mittanauhat:

4:n pituiset mittanauhat:3:n pituiset mittanauhat:

ei mittanauhoja 2:n pituinen mittanauha:

Esimerkki 57. Sovelletaan CYK-algoritmia Chomskyn normaalimuotoiseen kielioppiin G:

S → AB | BCA → BA | aB → CC | bC → AB | a

Onko ababab ∈ L(G)?

i→1 : a 2 : b 3 : a 4 : b 5 : a 6 : b

A, CS, C BB A, S A, CB S S, C B

A, S ∅ B A, S A, CS, C ∅ B S, C S, C B

Siis ababab ∈ L(G).

Johto ja jasennyspuu taulukosta

• Jos merkkijono w kuuluu kieleen, niin vastaava johto ja jasennyspuu voidaan lukeataulukosta, jos siihen liitetaan sopivat lisatiedot.

• Tarkastellaan esimerkkina kielioppia G:

S → AB | BCA → BA | aB → CC | bC → AB | a

128

Page 131: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Onko w = baaba ∈ L(G)?

• Ideana on liittaa jokaiseen taulukossa olevaan valikkeeseen se saanto ja ne tauluk-kopaikat, joiden tuloksena se lisattiin taulukkoon.

• Esimerkiksi S ∈ R1,5 lisataan saannon S → BC seka taulukkopaikkojen B ∈ R1,1

ja C ∈ R2,5 tuloksena.

• Tama voidaan esittaa ottamalla saannosta taulukkoindeksein koristeltu kopio S1,5 →B1,1C2,5.

• Naista lisamerkinnoista voidaan jaljittaa vastaava johto:

S ⇒ BC ⇒ bC ⇒ bAB ⇒ baB ⇒baCC ⇒ baABC ⇒ baaBC ⇒ baabC ⇒ baaba.

• Myos jasennyspuun voi jaljittaa naista merkinnoista.

• Puu ilmaantuu selvemmin nakymiin kaantamalla taulukkoa:

C

b

S

B

b A

a

a

B

C

B

C

A

a

129

Page 132: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Jos kielioppi on moniselitteinen, niin jasennyspuita voi olla useita.

• Sovelluksesta riippuen taulukkoon voidaan joko kerata ne kaikki tai sailyttaa niistavain jokin.

• Tassa esimerkissa on toinenkin johto:

S ⇒ AB ⇒ BAB ⇒ bAB ⇒ baB ⇒baCC ⇒ baABC ⇒ baaBC ⇒ baabC ⇒ baaba

Tehtava 46. Tarkastellaan kielioppia:

S → AB | BCA → BA | aB → CC | bC → AB | a

Kuuluuko merkkijono w = abba kieleen? Jos, niin mika on vastaava johto?

Tehtava 47. Tarkastellaan kielioppia:

S → AC | AD | aA → aB → bC → AC | aD → BD | a

Kuuluvatko merkkijonot baaa, abaaa ja abba kieliopin tuottamaan kieleen?

5.6 Tehokkaammat jasennysmenetelmat

Hopcroft et al. (2001) eivat kasittele tata aihepiiria. Sita kasittelevat esimerkiksi Ahoet al. (2007, luvut 4.4–4.7) ja Sudkamp (1997, osa VI).

• Palataan hetkeksi rekursiiviseen hajoita ja hallitse -jasennysalgoritmiimme kuvas-sa 25 jota tehostimme dynaamisen ohjelmoinnin taulukoinnilla.

Kysymys: Voisiko sita tehostaa taulukoinnin sijasta jotenkin muuten, jos kielioppi oli-sikin ”sopivasti” rajoitettu?

130

Page 133: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Erityisesti: Voimmeko jotenkin valita suoraan jonkin jaon x = yz, joka johtaa vastauk-seen true, jos sellainen jako on olemassa?

Vastaus: Kylla voimme, kunhan kielioppi on siis sopiva.

Huomaa: Taman kieliopin ei tarvitse enaa olla Chomskyn normaalimuodossa.

Esimerkki 58. Oikealle lineaarisessa kieliopissa riittaa aina seuraavan merkin tarkaste-lu, eli jakokohta ` = 1, koska kieli on saannollinen.

5.6.1 LL(1)-kielioppi

• Laajennetaan edellisen esimerkin 58 intuitiota, ja tarkastellaan sellaisia kielioppeja,joissa seuraava sovellettava saanto on aina yksikasitteisesti maaratty, kun nykyinenvalike ja seuraava syotemerkki tunnetaan.

• Naita kielioppeja ja niilla jasentyvia kielia kutsutaan LL(1)-kieliopeiksi ja -kieliksi:”Left to right scan, producing a Left parse with 1 symbol lookahead”.

– Siis ne lukevat syotemerkkijonon vasemmalta oikealle eli ”kirjoitusjarjestyksessa”.Tama on tarkeaa esimerkiksi ohjelmointikielten kaantajissa: lahdekooditiedostoluetaan yhden kerran alusta loppuun.

(Esimerkiksi CYK ei toiminut niin.)

– Ne tuottavat aina vasemmanpuoleisimman johdon.

– Ne kayttavat 1 ”kurkistussymbolia” eli katsovat vain seuraavaa syotemerkkia.

• Yleisemmin voi maaritella LL(k)-kieliopit ja -kielet, joissa katsotaan k > 0 syote-merkkia eteenpain, eli yllapidetaan k merkin syotepuskuria.

• LL(1)-kieliopeille voidaan laatia yksinkertainen rekursiivinen jasennin. Siksi niitasuositaan, kun jasennin pitaa kirjoittaa kasin.

• LL(1) riittaa useimmille ohjelmointikielissa esiintyville rakenteille.

• Tama jasennin on tehokas: se toimii lineaarisessa ajassa O(|w|) syotemerkkijonon wpituuden suhteen.

• LL(1)-kielet ovat determinististen kielten osajoukko, joten voitaisiin kayttaa rekur-sion sijasta myos deterministista pinoautomaattia.

• LL(1)-kielioppeihin kuuluvat siis ainakin sellaiset kieliopit, joissa jokaisen valik-keen A saannot ovat muotoa

A→ a1α1 | a2α2 | a3α3 | . . . | akαk

jossa jokainen haara i alkaa eri paatemerkilla ai ∈ Σ (siis ai 6= aj aina kun i 6= j)koska oikea haara on se, jonka paatemerkki on seuraavana syotteessa.

Esimerkki 59. Tarkastellaan seuraavaa kielioppia G:

E → T + E | T − E | T T → a | (E)

Valike T on OK: seuraava syotemerkki ratkaisee, kumpaa sen saannoista pitaa kayttaa.Mutta valike E ei, joten ”tekijoidaan” se:

E → TE ′ E ′ → +E | − E | ε T → a | (E)

131

Page 134: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Esimerkiksi lauseen a−(a+a) vasen johto voidaan nyt muodostaa seuraavan syotemerkinohjaamana:

E ⇒ TE ′ ⇒ aE ′ ⇒ a− E ⇒ a− TE ′ ⇒a− (E)E ′ ⇒ a− (TE ′)E ′ ⇒ a− (aE ′)E ′ ⇒ a− (a + E)E ′ ⇒

a− (a + TE ′)E ′ ⇒ a− (a + aE ′)E ′ ⇒ a− (a + a)E ′ ⇒ a− (a + a).

LL(1)-kielioppien yleinen muoto

• LL(1)-kielioppien yleisessa muodossa sallitaan myos

– produktioita, joiden oikeat puolet alkavat paatemerkin sijasta valikkeella, seka

– tyhjentyvia eli nollautuvia valikkeita A, joilla siis A⇒∗ ε

mutta kumpiakin naista vain rajoitetusti.

• Esimerkiksi kielen a∗b ∪ c∗d tuottava kielioppi:

S → Ab | CdA → aA | εC → cC | ε

Kielioppi on LL(1)-muotoa, vaikka ensimmaiseksi sovellettavaa produktiota ei voi-kaan paatella pelkastaan alkusymbolin S produktioiden perusteella.

• Kuitenkin, jos merkkijono alkaa merkeilla a tai b, niin on sovellettava saantoa S →Aa, jos taas merkilla c tai d, niin saantoa S → Cd. Siis sovellettava saanto on kuinonkin yksikasitteisesti maaratty seuraavan merkin perusteella.

• Siis tarvittaisiin testi tutkimaan onko kielioppi LL(1)-muotoa.

Kielioppien muokkaaminen LL(1)-muotoon

• Kaikkia kontekstittomia kielioppeja ei voi muuntaa LL(1)-muotoon.

• Joskus kieli on LL(1)-luokassa, mutta sen kuvaava kielioppi ei ole oikeassa muo-dossa. Tallaiset ”melkein” LL(1)-kieliopit voi muokata oikeaan muotoon seuraavillaoperaatioilla:

1. vasen tekijointi

2. vasemman rekursion poisto.

Vasen tekijointi

• Kielioppi, jossa on saannot

A→ αβ1 | αβ2 jossa α 6= ε, β1 6= β2

ei voi olla LL(1)-muotoinen, koska nama haarat alkavat yhteisella epatyhjalla osal-la α.

132

Page 135: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Otetaan kayttoon uusi valike A′ ja korvataan nama produktiot produktioilla

A → αA′

A′ → β1 | β2,

jossa α on jonojen αβ1 ja αβ2 pisin yhteinen alkuosa.

• Toisin sanoen uusia produktioita kayttean

ensin jasennetaan niiden pisin yhteinen alkuosa α

sitten vastaa tutkitaan, jatkuuko syote haaralla β1 vaiko β2.

Esimerkki 60. Kielioppi

N → DN | DD → 0 | 1 | . . . | 9

muutetaan muotoon

N → DN ′

N ′ → N | εD → 0 | 1 | . . . | 9

Valittoman vasemman rekursion poisto

• Kielioppi on vasemmalle rekursiivinen, jos jollakin valikkeella A ja merkkijonolla γon

A⇒+ Aγ.

• Jos ajatellaan rekursiivista jasenninta, niin sen aliohjelma A ”kiertaisi kehaa” luke-matta syotettaan.

• Vasemmalle rekursiivinen kielioppi ei tayta LL(1)-ehtoa (jonka maarittelemme koh-ta).

• Valiton vasen rekursio, siis suorat johdot A⇒ Aγ, voidaan valttaa korvaamalla

A→ Aα1 | Aα2 | Aα3 | . . . | Aαm︸ ︷︷ ︸poistettavat produktiot

| β1 | β2 | β3 | . . . | βn︸ ︷︷ ︸muut produktiot

produktioilla

A → β1A′ | β2A

′ | β3A′ | . . . | βnA

′ (12)

A′ → α1A′ | α2A

′ | α3A′ | . . . | αmA′ | ε (13)

jossa A′ on uusi valike.

• Alkuperaisen valikkeen A johdot ovat muotoa

A⇒ Aα⇒ Aαα⇒ Aααα⇒ · · · ⇒ βααα . . . α eli βα∗.

Lopulta on siis valittava saanto A→ β tai rekursio ei paaty ikina.

133

Page 136: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Korvatut saannot tuottavat uuden valikkeen A′ avulla tasmalleen samat johdokset,mutta toisella tavalla:

A⇒ βA′ ⇒ βαA′ ⇒ βααA′ ⇒ βαααA′ · · · ⇒ βααα . . . α.

Esimerkki 61. Esimerkiksi kielioppi G2 on valittomasti vasemmalle rekursiivinen:

N → ND | DD → 0 | 1 | . . . | 9

Siita saadaan kielioppi G′2:

N → DN ′

N ′ → DN ′ | εD → 0 | 1 | . . . | 9

Saman tuottaisi tosin myos kielioppi G3:

N → 0N | 1N | . . . | 9N | 0 | 1 | . . . | 9

• Muotoa A→ A olevat produktiot voidaan yksinkertaisesti jattaa pois.

Yleinen vasemman rekursion poisto

• Oletetaan, etta kieliopissamme G

– ei ole ε-saantoja A→ ε

– eika myoskaan kehia A→ B → C → · · · → A.

Tarvittaessa niista paasee eroon Chomskyn normaalimuodon yhteydessa (luku 5.5)kuvatuilla menetelmilla.

• Silloin kaikesta vasemmasta rekursiosta paasee eroon seuraavasti:

1 Merkitse aluksi kaikki valikkeet kasittelemattomiksi;2 while on yha kasittelemattomia valikkeita3 do A← jokin sellainen;4 while on saanto A→ Bγ jossa valike B on jo kasitelty5 do Korvaa se kaikilla saannoilla A→ δγ

joilla kieliopissa on saanto B → δ6 Poista valikkeen A valiton vasen rekursio saannoilla (12) ja (13);7 Merkitse A kasitellyksi;

Yleinen LL(1)-ehto

• Esitetaan nyt yleinen LL(1)-ehto.

• Kaytetaan seuraavia kahta apukasitetta:

first(α) = a ∈ Σ | α⇒∗ aβ jollain β ∈ V ∗ ∪ ε | α⇒∗ ε :

134

Page 137: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Siis ne paatemerkit, jotka voivat aloittaa jonkin sellaisen merkkijonon, jokavoidaan johtaa tasta α ∈ V ∗.

– Lisaksi myos ε, jos jono α on kokonaisuudessaan nollautuva.

follow(A) = a ∈ Σ | S ⇒∗ αAaβ joillain α, β ∈ V ∗ :

– Siis kaikki ne paatemerkit a ∈ Σ, jotka voivat seurata valiketta A ∈ Njossakin johdossa.

– Paatemerkkien lisaksi tahan joukkoon voi kuulua erityinen symboli EOF(”End of File”), jolla merkitaan syotteen loppua.Selain palauttaa merkin EOF ohitettuaan viimeisen todellisen syotemerkin.

• Olkoot sitten A ∈ N kieliopin G mielivaltainen valike ja

A→ α1 | α2 | α3 | . . . | αk

sen kaikki saannot.

• Ensimmainen osa LL(1)-ehtoa vaatii, etta naiden saantojen oikeat puolet alkavat eritavoin, eli etta

first(αi) ∩ first(αj) = ∅ (14)

aina kun i 6= j. Nimittain jos olisi jokin

x ∈ first(αi) ∩ first(αj) ,

niin kumpaa saannoista pitaisi kayttaa vuorossa olevalla syotemerkilla x?

• Tasta ensimmaisesta LL(1)-ehdosta (14) seuraa erityisesti, etta korkeintaan yksivalikkeen A saannoista voi tuottaa tyhjan merkkijonon ε eli tehda valikkeesta Atyhjentyvan (eli nollautuvan).

• Toinen osa LL(1)-ehtoa koskee vain tyhjentyvia valikkeita:

Olkoon valike A ∈ N tyhjentyva ja sen saannoista viimeinen eli A → αk se ainoa,joka voi tuottaa tyhjan merkkijonon ε. Silloin ehto vaatii, etta

follow(A) ∩ first(αj) = ∅ (15)

kaikilla muilla sen saannoilla 1 ≤ j < k. Nimittain jos olisi jokin

x ∈ follow(A) ∩ first(αj)

niin kumpaako saannoista j vai k pitaisi kayttaa kun kohdataan syotemerkki x?

• Kielioppi G on yleisessa LL(1)-muodossa, jos sen kaikki valikkeet ja saannot tayttavatmolemmat ehdot (14) ja (15).

• LL(1)-kielioppi ei voi olla moniselitteinen.

• LL(1)-kielioppi ei voi sisaltaa vasenta rekursiota.

• Kun kielioppi G on tata yleista LL(1)-muotoa, niin sille voidaan laatia rekursiivisestieteneva jasennin seuraavin periaattein:

135

Page 138: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Pidetaan ylla muuttujassa next seuraavaa syotemerkkia.

– error(. . . ) tarkoittaa ”lopeta koko rekursiivinen jasennys virheilmoitukseen. . . ”

Kaytannon ohjelmoinnissa se voisi vaikkapa nostaa poikkeuksen (exception).

– Tehdaan tassa esimerkissa sellainen jasennin, joka tuottaa syotetta vastaavanjasennyspuun.

• Tata kusutaan ennustavaksi (engl. predictive) jasentamiseksi, koska jasennin osaa”ennustaa” oikein, mita produktiota seuraavaksi pitaa soveltaa, lukematta syotettaenempaa kuin next in verran eteenpain.

• Jokaiselle paatesymbolille a ∈ Σ kirjoitetaan oma aliohjelma:

Proc a() :1 if next = a2 then next ← pyyda selaimelta seuraava syotemerkki3 return uusi lapseton solmu nimeltaan a4 else error(”tassa olisi pitanyt olla a”)

• Jokaiselle valikkeelle A ∈ N kirjoitetaan oma aliohjelma.

Jos A ei ole tyhjentyva, niin tama aliohjelma on:

Proc A() :1 if next ∈ first(α1)

then return haara(α1)2 elseif next ∈ first(α2)

then return haara(α2)...

elseif next ∈ first(αk)then return haara(αk)else error(”tasta olisi pitanyt alkaa A”)

• Huomaa, etta nama first-joukot ovat vakioita, jasennin ei siis laske niita. Niidenarvothan on jo laskettu LL(1)-ehtoa (14) testattaessa.

• Jokainen haara(X1X2X3 . . . Xm) on oma ohjelmanpatkansa

1 y1 ← Proc X1()2 y2 ← Proc X2()

...ym ← Proc Xm()return uusi solmu nimeltaan A lapsinaan y1, y2, y3, . . . , ym

joka siis

1. ensin kutsuu rekursiivisesti muita jasentimen aliohjelmia X1, X2, X3, . . . , Xm

oikeassa jarjestyksessa

136

Page 139: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

2. sitten palauttaa tuloksenaan jasennyspuun, jonka juurena on nykyinen valike Aja sen lapsina naiden kutsujen palauttamat puut.

(Tai jos jasentimen halutaan tekevan jotakin muuta kuin jasennyspuun, niinsitten tekee mita halutaan pohjautuen siihen, mita rekursiokutsut ovat ensintehneet ja palauttaneet.)

• Jos valike A on tyhjentyva niin vain sen viimeinen saanto A → αk tuottaa tyhjanmerkkijonon ε. Silloin sen aliohjelma paattyykin

...elseif next ∈ first(αk−1)

then return haara(αk−1)else return haara(αk)

eli virheilmoituksen sijasta kutsutaan tyhjentyvaa viimeista haaraa.

• Toisin sanoen, jos next in mukaan kyseessa ei ollut mikaan tyhjentymattomista haa-roista A → α1 | α2 | α3 | . . . | αk−1 niin sitten ainoa mahdollisuus on tyhjentyvahaara A→ αk.

• Koko jasentimen paaohjelmaksi tulee

1 next ← pyyda selaimelta ensimmainen syotemerkki2 τ ← Proc S() eli kutsutaan lahtosymbolia vastaavaa aliohjelmaa3 if next = EOF4 then return syotteen jasennyspuu τ5 else error(”syotteen olisi pitanyt loppua tahan”)

• Usein halutaan sellainen jasennysohjelma, joka ei pysahdy heti ensimmaiseen virhee-seen, vaan jatkaa ja raportoi muitakin syotteessa olevia virheita. Silloin kirjoitetaankunkin tyhjentymattoman valikkeen A aliohjelman paattavan errorin tilalle

tulosta(”tasta olisi pitanyt alkaa A”);while next 6∈ follow(A)

do next ← pyyda selaimelta seuraava syotemerkki;return uusi lapseton virhesolmu nimeltaan A

joka siis selaa ohi virheellisen A ja jatkaa jasennysta sita seuraavasta merkista.

• Jokaiselle valikkeelle A ∈ N maaritellaan

first(A) = first(α1) ∪ first(α2) ∪ first(α3) ∪ . . . ∪ first(αk) (16)

eli sen first-joukko koostuu kaikista sen saantojen oikeiden puolten αi first-joukoista.

• Tallaisen oikean puolen α ∈ V ∗ first-joukko lasketaan puolestaan seuraavasti:

– Jos α = ε, niinfirst(α) = ε .

137

Page 140: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Jos α on muotoa b . . . jollakin paatemerkilla b ∈ Σ, niin

first(α) = b .

– Jos α on muotoa Bβ, jossa valike B ei ole tyhjentyva, niin

first(α) = first(B)

joka taas lasketaan kuten yhtalossa (16).

– Jos α on muotoa Bβ, jossa valike B on tyhjentyva, niin

first(α) = (first(B) \ ε) ∪ first(β)

eli edetaan eteenpain jonossa α.

• Vasemman rekursion poisto takaa, ettei tama ole kehamaaritelma.

• Valikkeiden follow-joukot voidaan puolestaan laskea toistamalla seuraavia saantoja,kunnes mikaan joukko ei enaa kasva:

– Lisaa EOF lahtosymbolin S joukkoon follow(S).

– Jos kieliopissa on jokin saanto muotoa A→ αBβ, niin lisaa joukkoon follow(B)kaikki joukon first(β) paatesymbolit.

(Eli kaikki muut sen alkiot, mutta ei mahdollista tyhjaa merkkijonoa ε).

– Jos kieliopissa on jokin saanto muotoa A→ αBβ jossa ε ∈ first(β) niin lisaajoukkoon follow(B) kaikki joukon follow(A) alkiot.

Esimerkki 62. Esimerkin 59 (s. 131) tekijoidyssa kieliopissa tarvitaan LL(1)-jasennintavarten seuraavat joukot:

first(T ) = a, (first(E ′) = +,−, εfirst(E) = first(T )

follow(E ′) = follow(E)

= EOF, ) .

Naiden perusteella voidaan kirjoittaa jasennin edella kuvattuun tapaan.

• Lyhennetaan koodia kirjoittamalla yksi yhteinen aliohjelma kaikille paatemerkeilleb ∈ ’+’,’−’,’(’,’)’,a:

Terminaali(b):1 if next = b2 then next ← lue seuraava syotemerkki3 return uusi lapseton solmu nimeltaan b4 else error(”tassa olisi pitanyt olla b”)

• Paaohjelmaksi tulee:

138

Page 141: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1 next ← lue ensimmainen syotemerkki2 τ ← Proc E()3 if next = EOF4 then return τ5 else error(syotteen olisi pitanyt loppua tahan kohtaan)

• Valikkeen E aliohjelmaksi tulee:

Proc E():1 if next ∈ ’(’, a

then y1 ← Ty2 ← E′

return uusi solmu nimeltaan E ja lapsinaan y1, y2

2 else error(”tasta olisi pitanyt alkaa E”)

• Valikkeen E ′ aliohjelmaksi tulee:

Proc E′():1 if next ∈ ’+’

then y1 ← Terminaali(’+’)y2 ← Proc E()return uusi solmu nimeltaan E ′ ja lapsinaan y1, y2

2 elseif next ∈ ’−’then y1 ← Terminaali(’−’)

y2 ← Proc E()return uusi solmu nimeltaan E ′ ja lapsinaan y1, y2

3 else return uusi lapseton solmu nimeltaan E ′

(Tassa siis on haara saannolle E ′ → ε.)

• Valikkeen T aliohjelmaksi tulee:

Proc T():1 if next ∈ a

then y1 ← Terminaali(a)return uusi solmu nimeltaan T ja lapsenaan y1

2 elseif next ∈ ’(’then y1 ← Terminaali(’(’)

y2 ← Proc E()y3 ← Terminaali(’)’)return uusi solmu nimeltaan T ja lapsinaan y1, y2, y3

3 else error(”tasta olisi pitanyt alkaa T”)

• Tata systemaattisesti kirjoitettua jasenninta voi selvasti viela parannella paikallisinmuutoksin: esimerkiksi aliohjelman Proc T() rivilla 2 tarkastetaan kahdesti, ettanext on ’(’.

Tehdaan parempi C-pseudokoodilla:

139

Page 142: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

void E()

tulosta("E → TE’")T (); E ′();

void E ′()

if (next == ’+’) tulosta( "E’ → +E")next = getnext();E();

else if (next == ’-’)

tulosta( "E’ → -E")next = getnext();E();

else tulosta( "E’ → ε")

void T ()

if (next == ’a’) tulosta( "T → a")next = getnext();

else if (next == ’(’)

tulosta( "T → (E)")next = getnext();E();if (next 6= ’)’)

error(”sulkeva sulku puuttuu”);next = getnext();

else error(”T ei voi alkaa merkilla next”);

• Paaohjelma kaynnistaa ja paattaa jasennyksen:

next = getnext();E();if (next 6= EOF) error(”ylimaaraista syotetta lausekkeen perassa”).

• Katsotaan esimerkki 63 sen toiminnasta.

• Sitten korvataan sen tulosteet yksinkertaisella koodingeneroinnilla.

Esimerkki 63. Syotejonon a-(a+a) jasennys tulostaa:

140

Page 143: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

E → TE’

T → a

E’ → -E

E → TE’

T → (E)

E → TE’

T → a

E’ → +E

E → TE’

T → a

E’ → εE’ → ε

Tulostus vastaa vasenta johtoa: E ⇒ TE ′ ⇒ aE ′ ⇒ a−E ⇒ a−TE ′ ⇒ a− (E)E ′ ⇒a− (TE ′)E ′ ⇒ a− (aE ′)E ′ ⇒ a− (a + E)E ′ ⇒ a− (a + TE ′)E ′ ⇒ a− (a + aE ′)E ′ ⇒a− (a + a)E ′ ⇒ a− (a + a).

”Oikeassa ohjelmassa” tulosta-komennot voivat tehda jotain hyodyllisempaa (kutenlaskea lausekkeen arvoa, generoida koodia,. . . ).

• Alla yksinkertaistettu esimerkki ”oikeasta” kaantamisesta — EI kysyta tentissa!

Kaskykanta:

push x laita x pinoonpop x poista pinon huippu

rekisteriin xadd r1,r2 r1← r1 + r2sub r1,r2 r1← r1− r2

Syotteen ”(x + y)− (a + b)”kaannos:

push x

push y

pop r1

pop r2

add r1, r2

push r1

push a

push b

pop r1

pop r2

add r1, r2

push r1

pop r2

pop r1

sub r1, r2

push r1

pop r1

// Esimerkki ’ pinokoneen koodin ’ genero inn i s t a// e d e l l i s e n mukaisten l ausekke iden e va l uo im i s e k s i// r e k i s t e r i i n r1 . . . ; TESTAAMATON, vastuu l u k i j a l l a :

void Ep( ) i f ( next == ’+’ )

next = getnext ( ) ;T( ) ;p r i n t f ( ”pop r1\npop r2\nadd r1 , r2\npush r1\n” ) ;Ep( ) ;

141

Page 144: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

e l s e i f ( next == ’− ’ ) next = getnext ( ) ;T( ) ;p r i n t f ( ”pop r2\npop r1\nsub r1 , r2\npush r1\n” ) ;Ep( ) ;

void T( ) i f ( numero tai muuttuja ( next ) )

p r i n t f ( ”push %c\n” , next ) ; next = getnext ( ) ; e l s e i f ( next == ’ ( ’ )

next = getnext ( ) ; T( ) ; Ep( ) ;i f ( next != ’ ) ’ ) p r i n t f ( ”Virhe : su lku puuttuu\n” ) ;next = getnext ( ) ;

e l s e p r i n t f ( ”Virhe : T e i vo i a lkaa %c\n” , next ) ;

i n t main ( ) next = getnext ( ) ; T( ) ; Ep( ) ;p r i n t f ( ”pop r1\n” ) ;return 0 ;

• Edellisessa koodissa valike E on oleellisesti poistettu, ja se on korvattu saantojenoikealla puolella suoraan johdolla TE ′:

S → TE ′

E ′ → +TE ′ | − TE ′ | εT → a | (TE ′)

• Paaohjelma (main) vastaa siis lahtosymbolia S.

Peruuttavasta jasentamisesta

• Voimme ryhtya ohjelmoimaan taman kaltaista rekursiivisesti etenevaa jasennintamyos sellaiselle kieliopille G joka ei ole LL(1).

• Silloin tehdaan ennustavan sijaan peruuttava (engl. backtracking) jasennin.

1. Jasennin arvaa (ennustamisen sijaan) mika voisi olla seuraava produktio.

2. Jos jasennin joutuu myohemmin umpikujaan, eli huomaa arvanneensa vaarin,niin se peruuttaa rekursiossaan viimeisimman arvauksensa,. . .

3. . . . ja arvaakin sen sijaan jonkin muun produktion.

• Intuitiivisesti, otamme aiemman kuvan 21 (s. 101) ”generoi-ja-testaa”-algoritmin,ja toteutamme sen epadeterminismin talla peruuttavalla etsinnalla.

• Taman menetelman hankaluuksia ovat

edestakaisin vaeltelu syotemerkkijonossa: Jasennin kulkee

142

Page 145: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

eteenpain arvattuaan produktion jota se kokeilee seuraavaksi, ja

taaksepain peruuttaessaan vaaraksi osoittautuneen arvauksensa.

tehottomuus jos kieliopissa on paljon kokeiltavia vaihtoehtoja:

Jasennin joutuu kokeilemaan ne kaikki rekursiivisesti.

pysahtyminen jos kielioppiin on jaanyt vasenta rekursiota:

Jasennin voi juuttua arvailemaan loputtomiin liikkumatta syotemerkkijonossa.

• Tallaisten peruuttavien etsintamenetelmien ohjelmointi yksinkertaistuu huomatta-vasti, jos otetaan kayttoon laiskat listat.

• Laiskaa listaa yllapidetaan ”keskeneraisena”: Kun silta kysytaan ”Mika on seuraavaalkiosi?” niin se laskee seuraavan alkionsa vasta silloin — ja vain sen seuraavanalkionsa, eika viela muita.

• Peruuttavassa jasennyksessa valiketta A vastaava jasennysfunktio

ottaa parametrinaan syotemerkkijonosta sen loppuosan u, joka on yha jasentamatta

antaa tuloksenaan laiskan listan paatemerkkijonoja w, jossa w on se loppuosamerkkijonosta u, joka jaa jaljelle kun sen alkuosasta jasennetaan tama valike A.

– Siis u = vw jossa A⇒∗ v.

– Tuloslista koostuu kaikista tallaisista w, eli. . .

– . . . kaikista eri vaihtoehdoista jatkaa jasennysta, kun ensin on jasennettytama A.

• Silloin valikkeen A saannoista A → α1 | . . . | αk muodostetaan aliohjelma A(u)koodinaan

1 return Laiska(α1, u)⊕ . . .⊕ Laiska(αk, u)

jossa operaatio X⊕Y yhdistaa kaksi laiskaa listaa Y ja Y yhdeksi laiskaksi listaksi:

1 if lista X osoittautuu tyhjaksi2 then return Y3 else Z ← listan X ensimmainen alkio;4 L← listan X loput alkiot;5 return lista jonka ensimmainen alkio on Z

ja loput Y ⊕ L.

Laiskuuden ideana on laskea listaa X vain sen verran, etta if -lausessa tiedetaankumpi haaroista then vaiko else pitaa valita.

Rivilla 5 kuljetaan listoja X ja Y vuorotahtiin; silloin jasennys antaa ”reilun” tilai-suuden jokaiselle eri kokeiltavalle vaihtoehdolle.

• Nama Laiskat haarat voidaan puolestaan maaritella rekursiolla saantojen oikeidenpuolten αi rakenteen suhteen:

– Laiska(ε, u) = return se laiska lista, jonka ainoa alkio on u itse — koskatyhjan merkkijonon jasentaminen ei kuluta yhtaan syotemerkkia.

– Paatemerkilla b ∈ Σ on Laiska(bβ, u) ehto

143

Page 146: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1 if merkkijono u on muotoa bw2 then return Laiska(β, w)3 else return tyhja laiska lista

koska tyhja tuloslista tarkoittaa etta ”ei jasenny mitenkaan”.

– Valikkeella B saa Laiska(Bβ, u) muodon

1 return Laiska(β, w1)⊕ Laiska(β, w2)⊕ Laiska(β, w3)⊕ . . .jossa w1, w2, w3, . . . on laiskan listan B(u) sisalto

koska se tarkoittaa etta ”jatketaan jasentamalla β jokaisesta sellaisesta merk-kijonosta wj joka jaa jaljelle kun merkkijonon u alusta on jasennetty valike B”.

• Paaohjelmaksi alkusymbolille S tulee

1 return loytyyko ε laiskasta listasta S(koko syote)?

koska se tarkoittaa etta ”voiko koko syotteen alusta jasentaa valikkeen S niin, etteimitaan jaa jaljelle?”

• Jos halutaan taman kylla/ei-vastauksen sijasta tuottaa jasennyspuut, niin laajen-netaan jokaisessa jasennysfunktiossa A(u) jokainen tuloslistan alkio pelkasta merk-kijonosta w pariksi (τ, w) jossa τ on sellainen jasennyspuu, jonka

juuri on nykyinen valike A ja

tuotos on se merkkijono v jolla u = vw ja A⇒∗ v.

Nain saa laiskan listan koko syotteen kaikista jasennyspuista.

• Tallaista laiskoilla listoilla toteutettua peruttavaa jasenninta voi onneksi tehostaa,jos kielioppisaannot ovat sopivia.

Esimerkiksi jos valikkeen saannoista A → α1 | . . . | αk tiedetaan, etta ne ovatkinmuotoa ”joko α1 tai α2 tai α3 tai. . . tai αk — jos ne esimerkiksi tayttavat LL(1)-ehdot, vaikka koko kielioppi ei taytakaan — niin silloin vastaavaksi aliohjelmak-si A(u) voidaankin ottaa

1 return Laiska(α1, u)⊗ . . .⊗ Laiska(αk, u)

jossa X⊗Y sanookin etta ”kayta listaa Y vain jos lista X osoittautuukin tyhjaksi”:

1 if lista X osoittautuu tyhjaksi2 then return Y3 else return X.

144

Page 147: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

5.6.2 LR-kieliopeista

• Simuloidaankin merkkijonon oikeaa johtoa rekursiivisesti.

• Saadaan LR(1)-kieliopit ja -kielet: ” Left to right scan, producing Right parse with1 symbol lookahead”.

• Yleisemmin, LR(k)-kielissa seuraavat k merkkia maarittavat seuraavan johtoaske-leen.

– LR(0) = ns. ”yksinkertainen LR” (Simple LR, SLR).

– LR(1) = deterministiset kielet, joten tasot k > 1 ovat enaa teoreettisesti kiin-nostavia.

– LR-jasennys sisaltaa LL-jasennyksen silla

limk→∞

LL(k) = LR(1).

Intutiivisesti, odotamme jasentaessamme mahdollisimman pitkaan emmeka he-ti kokeile saantoa, eli teemmekin oikean emmeka vasenta johtoa.

• Nama ovat tarkeita tyokaluja kaantajien laatimisessa automaattisesti.

Esimerkiksi yacc-tyokalu tuottaa LALR- eli ”lookahead LR” -jasentimen, joka onhieman yksinkertaisempi kuin taysi LR(1)-jasennin.

• LR-jasennyksen intuitio on parantaa kuvan 21 ”generoi-ja-testaa”-pinoautomaat-tiamme.

– Saimme sen mielivaltaisesta kontekstittomasta kieliopista hyvin yksinkertai-sella kaannoksella, mutta niinpa siina olikin varsin paljon epadeterministisiavalintoja.

– LR-jasennyksessa tehdaankin tama kaannos huomattavasti huolellisemmin, jasilla pyritaan paasemaan eroon naista valinnoista.

Taman kaannoksen huolellisuus antaa nama eri luokat kuten SLR, LALR taitaysi LR(1).

– Jos niista kaikista paastaan eroon, niin on saatu se etsitty jasennysalgoritmi— deterministinen pinoautomaattihan on tehokas simuloida.

– Jos ei paasta, niin usein voidaan ratkoa loput valinnat kasin:

Esimerkiksi esimerkin 49 ”roikkuvan else-haaran ongelmassa” pinoautomaat-ti ei else-syotemerkin nahdessaan tieda kumpaa sen pitaisi tehda: soveltaakielioppisaantoa pinossa jo oleviin alkioihin vai vieda tamakin else-merkki pi-noon?

Silloin ”else-haara kuuluu lahimpaan if -ehtoon” -heuristiikan mukaan naistajalkimmainen on se mita pinoautomaatin pitaa tehda.

• Sivuutamme yksityiskohdat.

Kysymys: Jos kerran jo LL(1) riittaa useimpiin ohjelmointikielissa esiintyviin syntakti-siin konstruktioihin, niin miksi meilla silti on myos LR-jasennys?

Vastaus:

145

Page 148: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Oikeasti haluamme kayttaa attribuuttikielioppeja, eli sellaisia kontekstittomiakielioppeja, joihin olemme liittaneet attribuuttien kasittelysaannot.

• Kun kielioppi muunnetaan LL(1)-ehdon tayttavaan muotoon (vasemman re-kursion poistolla jne.) niin lopulta sen rakenne voi olla hyvinkin kaukana alku-peraisesta kieliopista.

• Siten siihen lopputulokseen voi olla hankalaa ja epaintuitiivista liittaa sopiviaattribuuttien kasittelysaantoja.

• LR-jasennyksessa kielioppia ei tarvitse muokata niin radikaalisti, joten attri-buuttien kasittelysaannotkin pysyvat yksinkertaisempina.

Yhteenveto kontekstittomien kielten jasennyksesta

• Sama asia: ”kuuluuko annettu merkkijono kieleen”? Peruskysymys kaikkien formaa-lien kielten kohdalla (joita on siis muitakin kuin saannolliset ja kontekstittomat).

• Saannollisten kielten yhteydessa vastattiin aarellisen automaatin avulla. Tama onseka teoriassa etta kaytannossa erinomainen ratkaisu.

• Nyt olisimme voineet kayttaa pinoautomaattia (ja kaytimmekin); mutta tama onteoreettinen tyokalu. Kaytannossa epadeterministista pinoautomaattia ei voi toteut-taa tietokoneella. Siis kaytamme rajoittamattomille CF-kieliopeille CYK-algoritmia.

• Erikoistapaukset voidaan jasentaa / tunnistaa helpommin: oikealle lineaariset kie-liopit vastaavat saannollisia kielia: tunnistetaan siis aarellisella automaatilla (tassatapauksessa CYKin kaytto olisi liioittelua).

• Monet kaytannossa tarkeat — erityisesti ohjelmointikielille maaritellyt —- kielio-pit ovat tyyppia LL(k) tai LR(k). Naille on olemassa yksinkertaisia ja tehokkaitarekursioon perustuvia jasennysmenetelmia.

• Muitakin algoritmeja on.

• Tyokaluja: Bison, Yacc: syotteena (rajoitettu) kontekstiton kielioppi, tuloksena ja-sentimen lahdekoodi. . .

5.7 Kontekstittomien kielten rajoituksista

• Jasennyspuita tarkastelemalla voi osoittaa etta vaikkapa kieli L = anbncn | n ∈ Nei ole kontekstiton. Tama perustuu samatapaiseen pumppaus ideaan kuin epasaan-nollisyytta osoitettaessa:

– Jos s on kielen L merkkijono, silla on jasennyspuu sopivassa kielen L kieliopis-sa G.

– Jos lisaksi s on kovin pitka, niin sen jasennyspuussa on oltava ainakin yksipitka haara.

– Kun jasennyspuun haara on riittavan pitka, niin ainakin yhden muuttujan Aon pakko esiintya ainakin kaksi kertaa.

– Muuttujan A esiintyminen omana jalkelaisenaan jasennyspuussa tarkoittaa,etta A⇒∗ vAx joillakin v, x ∈ Σ∗. Voimme pumpata tata johtoa kuten kuvas-sa 26:

A⇒∗ vAx⇒∗ vvAxx⇒∗ vvvAxxx⇒∗ . . .

146

Page 149: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

A

A

A

yx

x

xwv

v

vu

A

A

A

A

...yxwvu

SS

Kuva 26: Toistuvan valikkeen pumppaus.

• Vertaa saannollisten kielten pumppauslemmaan (lause 7):

– tilat vs. muuttujat

– silmukka automaatissa vs. johto A⇒∗ vAx.

Kontekstittomien kielten pumppauslemma

• Saman tapainen kuin saannollisten kielten pumppauslemma.

Nyt kuitenkin pumpataan kahta osamerkkijonoa v ja x samaan tahtiin.

• Hyvin karkea pinoautomaatti-intuitio:

v = pyoritaan silmukassa, jossa painetaan merkkeja pinoon

x = pyoritaan silmukassa, jossa poistetaan pinosta se, mita v-silmukka sinne vei.

Lause 16. Jos L on kontekstiton kieli, niin sille on olemassa pumppauspituus p ∈ N,jolle seuraava patee:

Jos s ∈ L ja |s| ≥ p, niin voidaan kirjoittaa s = uvwxy, jossa

1. uviwxiy ∈ L kaikilla i ∈ N,

2. |vx| > 0 ja

3. |vwx| ≤ p.

Todistus: Sivuutetaan. 2

• Kuten jo on todettu, kontekstittomille kielille patee joitain samantapaisia sulkeu-maominaisuuksia kuin saannollisille kielille:

Lause 17. Olkoot L1 ja L2 kontekstittomia kielia. Talloin myos

1. L1 ∪ L2 (kielten yhdiste)

147

Page 150: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

2. L1L2 (kielten katenaatio)

3. (L1)∗ (kielen sulkeuma)

4. (L1)R (kielen kaanteiskieli)

ovat kontekstittomia.

• Kontekstittomat kielet eivat kuitenkaan ole suljettuja leikkauksen ja komplementinsuhteen.

• Niiden pumppauslemmalla eli lauseella 16 voitaisiin todistaa, etta kieli

anbncn | n ∈ N

ei ole kontekstiton.

Todistus: (Luonnos.) Kun valitaan merkkijonoksi s = apbpcp niin sen osassa vwxei voi olla kaikkia kolmea merkkia. Siten sen osien v ja x pumppaaminen ei voi lisatajokaista kolmea merkkia kuten pitaisi. 2

• Kielet

L1 =anbnck | n, k ∈ N

ja

L2 =akbncn | n, k ∈ N

ovat kontekstittomia, mutta niiden leikkaus

L1 ∩ L2 = anbncn | n ∈ N

ei siis olekaan kontekstiton. Todistimme juuri:

Lause 18. Kontekstittomien kielten luokka ei ole suljettu leikkauksen suhteen.

Tahan mennessa tapahtunut

• Kurssi lahti liikkeelle yksinkertaisista laskennan malleista: mita niilla voidaan esittaa,millaisia ilmioita havaitaan.

Laskennan formalisointi

• perustuu joukko-oppiin ja logiikkaan, ja se mahdollistaa matemaattisen tas-malliset paattelyt.

• edellyttaa idealisointia (mielivaltaisen pitkat syotteet jne.)

• tarkea erityisseikka: epadeterminismi.

Proseduraalisuus ja deklaratiivisuus

• Saman asian maarittely proseduraalisesti automaatilla tai deklaratiivisesti kie-liopilla.

• Tarkeat ekvivalenssitulokset:

kieli A on tunnistettavissa aarellisella automaatilla

⇔kieli A voidaan esittaa saannollisena lausekkeena.

148

Page 151: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

kieli A on tunnistettavissa pinoautomaatilla

⇔kieli A voidaan tuottaa kontekstittomalla kieliopilla.

• Niiden avulla siirrytaan tarpeen mukaan proseduraalisesta deklaratiiviseen esi-tykseen tai toisin pain.

Ylarajoja laskentaongelmien vaikeudelle: esimerkiksi, mika tahansa saannollinen kielivoidaan tuottaa kontekstittomalla kieliopilla.

• Todistukset olivat tyypillisesti konstruktiivisia, esimerkiksi kontekstiton kie-lioppi ”kaannettiin” pinoautomaatiksi.

• Simulaatio oli erikoistapaus konstruktiosta, epadeterministisesta deterministi-seksi aarelliseksi automaatiksi.

Alarajoja ongelmien vaikeudelle: esimerkiksi kieli

0n1n | n ∈ N

on ”vaikeampi” kuin mihin aarellinen automaatti pystyy.

• Lahtokohtana oli formalisoitu laskentamalli.

• Todistetaan voimakas aputulos (kuten pumppauslemma) laskentamallin maari-telman perusteella.

• Sovelletaan aputulosta esimerkkitapauksiin (usein epasuoran todistuksen kaut-ta), laskentamallin yksityiskohdista ei enaa tarvitse valittaa.

• Teknisesti vaikeita (myos opelle).

Hierarkia: Esimerkiksi saannolliset kielet ovat yhteydettomien kielten aito aliluokka.

Simulaatio: kaikki saannolliset kielet ovat yhteydettomia.

Erottelu: kieli0n1n | n ∈ N

on kontekstiton (ylaraja), mutta ei saannollinen (alaraja).

• Siirryttaessa tarkastelemaan vahvempia laskennan malleja ja kieliluokkia

– edella esitellyt ilmiot toistuvat

– tekniset yksityiskohdat monimutkaistuvat entisestaan

– tulokset ovat entistakin kiinnostavampia, koska esimerkiksi Turingin kone onmalli ”oikealle” tietokoneelle (tai mille tahansa nykytietamyksen valossa mah-dolliselle laskentalaitteelle).

Tallaisia asioita kasitellaan tarkemmin LAT-kurssilla.

149

Page 152: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

6 Laskennan ”filosofiaa”

• Nyt etenemme kontekstittomien kielten tuolle puolen. . .

• Tietojenkasittelytieteilijan yleissivistykseen kuuluvia asioita:

– Turingin kone, ja siihen liittyen

– ratkeavuus vs. ratkeamattomuus, seka

– ongelmien vaikeusluokat, erityisesti P?= NP-ongelma.

• Emme mene yksityiskohtiin, mutta selvitamme mista on karkeasti ottaen kysymys.

• Tasta eteenpain asiat perustellaan (jos perustellaan lainkaan) ”kasien heiluttelulla”matemaattisen todistelun sijasta.

• Siis: tasolla ”laskennan filosofia”, varsinainen ”laskennan teoria” jaa kurssille LAT.

• Asioita jotka on Hyva Tietaa, silla naihin voi tormata mita erilaisimmissa yhteyk-sissa — eli hyodyllista yleistietoa.

• Lisamotivaatio: termeja ”ratkeamaton” ja ”NP-taydellinen tai NP-kova” kaytetaanusein taysin vaarin, ja tahan syyllistyvat myos monet ”oppineet”.

• Siis erityisesti: kaikki NP-taydelliset ongelmat ovat kylla ratkeavia, vaikka jokumuuta vaittaisikin.

6.1 Turingin kone

• Turingin kone on alkuaan matemaattisen logiikan tarpeisiin kehitelty laskennanmalli.

• Tarkoituksena oli vangita mahdollisimman laajasti, millaisia asioita voidaan (peri-aatteessa) laskea ”mekaanisesti”.

• Malli on sittemmin osoittautunut sopivaksi myos ”oikeiden” tietokoneiden ymmarta-miseen.

• Turingin koneiden keksija Alan M. Turing oli keskeinen henkilo II maailmansodanaikana liittoutuneiden purkaessa saksalaisten Enigma-salakirjoituskoneella koodat-tuja viesteja ja sodan jalkeen eraan ensimmaisen oikean tietokoneen (ACEn) suun-nittelussa Englannissa.

• Turingin kone (Turing machine, TM) on automaatti, jossa on periaatteessa rajoit-tamaton maara muistia.

• Toisin kuin pinoautomaatti, Turingin kone saa kasitella tata muistiaan taysin va-paasti.

• Siten yksinkertaisin tapa paasta pinoautomaateista Turingin koneisiin olisi vaihtaapinon tilalle apumuistina toimiva nauha, jota kone saa kasitella vapaasti, kutenkuvassa 27.

• Kaikkein yksinkertaisin Turingin kone on yksinauhainen Turingin kone, jossa

150

Page 153: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

q2

q0

q1

q3

syötenauha

nauhapää

a a a a b .....

tutkittava syöte

δ

b bb

A

A

_

ohjausyksikkö

apum

uis

tinau

ha

A

B

Kuva 27: Pinoautomaatista Turingin koneeksi.

– syotenauha toimii samalla tyonauhana

– nauhapaa voi liikkua vapaasti kumpaankin suuntaan ruutu kerrallaan

– nauhapaan kohdalla olevan merkin saa lukea ja kirjoittaa vapaasti.

• Tallaisen Turingin koneen peruskomponentit ovat

1. aarellinen joukko tiloja (state) (kuten aiemminkin)

2. rajoittamattoman pituinen nauha (tape), joka aluksi sisaltaa syotteen ja las-kennan aikana toimii apumuistina ja

3. liikuteltava nauhapaa (tape head, read/write head, ”osoitin”, ”pointteri”), jokaosoittaa seuraavaksi vuorossa olevaa symbolia nauhalla.

• Turingin koneen yksityiskohdat (kuten nauhojen lukumaara, onko nauha molem-piin vaiko vain yhteen suuntaan aareton,. . . ) voidaan maaritella monella eri tavalla,mutta kaikki ovat laskentavoimaltaan ekvivalentteja.

• Kuten muutkin kasittelemamme automaatit, Turingin kone saa syotteena merkki-jonon, jonka sitten hyvaksyy tai hylkaa:

1. Aluksi syote on nauhan alussa, ja nauhan loppu sisaltaa pelkkia tyhjamerkkeja.Nauhapaa osoittaa nauhan alkuun.

2. Yhdessa laskenta-askelessa

– kone lukee nauhapaan alla olevan symbolin,

– valitsee seuraavan tilan,

151

Page 154: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

</<,L

</<,L

b/b, Ra/a,R

B/B, RC/C,R

a/a, LB/B, Lb/b, LC/C,L

q0 q1 q2

q3q4

q5

a/A, R

B/B, R

b/B, R

C/C,R

c/C, L

A/A, R

a/A, R

B/B, R

Kuva 28: Esimerkki Turingin koneesta.

– kirjoittaa nauhapaan kohdalle uuden symbolin (joka voi olla myos samakuin vanha) ja

– siirtaa nauhapaata vasemmalle tai oikealle.

3. Tilojen joukossa on hylkaava ja hyvaksyva lopputila, joihin paatyminen lopet-taa laskennan valittomasti.

• Laskenta voi olla myos paattymaton eli jaada silmukkaan.

• Sivuutamme Turingin koneen formaalin maarittelyn. Annetaan kuitenkin yksi esi-merkki Turingin koneesta; kieli

akbkck : k ∈ N

(joka ei ole kontekstiton), voidaan tunnistaa kuvan 28 Turingin koneella.

• Siirtymanuolen merkki a/A, R tarkoittaa, etta ”luetaan nauhapaan kohdalta merk-ki a, kirjoitetaan sen tilalle merkki A, ja siirrytaan nauhalla yksi askel oikealle(Right)” jne.

Merkki ’<’ taas ilmoittaa, mihin syote paattyy

• Koneen toimintaperiaate: Kulje syotenauhaa

aaa...abbb...bccc...c<

eteenpain, ja muuta se kulkiessasi nauhaksi

Aaa...aBbb...bCcc...c<

152

Page 155: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

jos mahdollista. Palaa sitten takaisin lahimmalle kirjoittamallesi merkille ’A’, jaaloita siita samanlainen kulku eteenpain. Tuloksena on

AAa...aBBb...bCCc...c<

eli toisetkin merkit muuttuivat pienista isoiksi.

Jatka nain, kunnes kaikki pienet ’a’-merkit ovat muuttuneet isoiksi ’A’-merkeiksi, jatarkista ettei muitakaan pienia merkkeja ole enaa jaljella.

• Turingin koneista (kuten muistakin automaateista) tulee nopeasti hyvin monimut-kaisia. Monimutkaisten Turingin koneiden kaavioesitysten piirtaminen ei ole sinansakiinnostavaa:

Turingin kone on tarkoitettu yleiseksi laskentaformalismiksi, jota kayttaen voidaanesittaa mika tahansa algoritminen laskenta. Mallin motivaatio on siis erilainen kuintietoisesti rajatuissa malleissa (aarellinen automaatti, jne).

6.2 Algoritmin maaritelma

• Mita algoritmilla yleensa tarkoitetaan?

Periaatteessa: Yksiselitteisesti kuvattu jono (tietojenkasittely)operaatioita, jotkavoidaan toteuttaa mekaanisesti.

Kaytannossa: luonnollista kielta, pseudokoodia yms. kayttava esitys, jonka patevaohjelmoija osaa koodata ilman suurempia ongelmia.

Tama tarkkuustaso ei ole riittava, jos halutaan tutkia laskettavuuden rajoja.

• Erityisesti kun haluamme vaittaa jostain ongelmasta, etta sille ei ole olemassa rat-kaisualgoritmia, niin mita oikeastaan vaitamme?

Huomaa, etta tama on oleellisesti eri asia kuin todeta, etta ongelmalle ei ole (vielatoistaiseksi) keksitty algoritmia.

• Luonteva aarellisyyden vaatimus:

Jokainen yksittainen operaatio algoritmissa saa tehda vain aarellisen maaran tyota.

Siis erityisesti yksi operaatio saa

– lukea aarellisen maaran tietoa,

– etsia toimintaohjeen aarellisesta saantojoukosta ja

– kirjoittaa aarellisen maaran tietoa.

Tai kaantaen: Jos ”algoritmin” kuvauksessa olisi jokin aaretonta tyota vaativa askel,niin emme kutsuisi sita algoritmiksi — milloin tuo askel valmistuisi, ja paastaisiinsita seuraavaan askeleeseen?

• Toisaalta ei ole mitaan syyta kieltaa algoritmia kayttamasta niin paljon apumuistiakuin se suinkin tarvitsee.

– Huomaa: Edellisen aarellisyysvaatimuksen nojalla algoritmi voi kuitenkin aa-rellisessa ajassa kayttaa vain aarellisen maaran apumuistia!

153

Page 156: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Siis tassa ”periaatteessa aareton” tarkoittaa ”riittavan suurta” apumuistia.

• Taman esittaminen matemaattisesti johtaa suoraan ajatukseen, etta matemaatti-selta kannalta

algoritmi on sama asia kuin Turingin kone.

Tama onkin (karkeasti) alkuperainen ajatus Turingin koneen takana.

• Kaytannon tietojenkasittelyn kannalta tarkea havainto on, etta myos (vastaavastiidealisoitu, eli rajoittamattomalla muistilla varustettu) tietokone on Turing-ekvivalenttieli pystyy ratkaisemaan tasan samat ongelmat kuin Turingin kone.

• Toisin sanoen: kaikki Turingin koneita koskevat tulokset ja rajoitukset koskevat myos”oikeita” tietokoneita.

Tama on laskennan teorian ja laskennan vaativuusteorian ydin.

• Siis Turingin kone (ja vastaavat kieliluokat) on kiinnostava; sita on matemaattistentodistusten kannalta helpompi kasitella kuin ”oikeaa” tietokonetta (tai ohjelmoin-tikielia).

6.3 Ratkeamattomuudesta

• Monet laskennalliset ongelmat ovat taysin ratkeamattomia; jotkut osittain ratkeavia(rekursiivisesti lueteltavat kielet).

• Kaikki ongelmat joille osaamme laatia ratkaisualgoritmin, ovat tietenkin ratkeavia(ja kuuluvat siis rekursiivisten kielten luokkaan).

• Emme kasittele asiaa sen syvallisemmin talla kurssilla. Esimerkkina luetellaan muu-tama ongelma joita ei Turingin koneella (eika siis tietokoneella) pysty ratkaisemaanedes periaatteessa:

– Pysahtyyko kone annetulla syotteella?

– Hyvaksyyko kone tyhjan syotteen?

– Hyvaksyyko kone edes jonkin syotteen?

– Onko koneen tunnistama kieli saannollinen?

– Jasennysongelma (w ∈ L(G)?) yleisessa tapauksessa, eli kun kielioppi G ontaysin rajoittamaton.

– Jne. . .

• Muistele johdantolukua 3.3: ratkeamattomien ongelmien olemassaolo on helppo to-deta, koska ongelmia on enemman kuin algoritmeja / Turingin koneita.

• Meditoitavaa: ongelman ratkeamattomuus on laskennallisesti ratkeamaton ongelma.

• Yleinen ratkeamattomuustulos:

Lause 19 (Ricen lause). Jokainen Turingin koneiden epatriviaali semanttinen ominaisuuson ratkeamaton.

154

Page 157: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Turingin koneiden M semanttinen ominaisuus ≈ mika tahansa sellainen ominai-suus S, joka riippuu vain koneen M tunnistamasta kielesta, ei koneen itsensa syn-taktisesta rakenteesta.

• Toisin sanoen, intuitiivisesti: Jos meilla on koneet M ja M ′, ja L(M) = L(M ′) eline hyvaksyvat saman kielen, niin kysymykseen ”Onko koneella M ominaisuus S?”pitaa vastata samoin kuin kysymykseen ”Onko koneella M ′ ominaisuus S?”

• Matemaattisesti ottaen, semanttinen ominaisuus S on mika tahansa kokoelma re-kursiivisesti lueteltavia aakkoston 0, 1 kielia ja koneella M on ominaisuus S, josL(M) ∈ S.

• Semanttinen ominaisuus on triviaali jos vastaus on aina sama riippumatta ky-syttavasta koneesta M .

Eli ominaisuus S on triviaali, jos jokaisella koneella vastaus on aina

”kylla” eli jokaisella koneella on tama ominaisuus S”ei” eli millaan koneella ei ole tata ominaisuutta S.

Kaikki muut ominaisuudet ovatkin sitten epatriviaaleja — ja Ricen lauseen mukaansiis ratkeamattomia.

• Siis Ricen lauseen mukaan itse asiassa jokseenkin kaikki ohjelmien toimintaa, taitarkemmin sanoen niiden laskemia syote/tulos-kuvauksia koskevat kysymykset ovatlaskennallisesti ratkeamattomia.

• Edella luetellut ongelmat koskevat koneiden semanttisia ominaisuuksia, ja ovat siisratkeamattomia. Semanttisen ominaisuuden vastakohta on syntaktinen ominaisuus,kuten ”kone sisaltaa siirtyman δ(q, a) = (q′, b, R)” — jotkut koneet M sisaltavatsellaisen, kun taas toiset koneet M ′ eivat sisalla, ja silti ne voivat hyvaksya samankielen.

Tallaiset ominaisuudet ovat (helpostikin) ratkeavia.

• Ratkeamattomuustodistukset ovat usein muotoa ”Vastaoletus: kone pysahtyy”; jatasta johdetaan ristiriita: ”kone ei voi pysahtya” joten ”ongelma on ratkeamaton”.

Esimerkkina olkoon pysahtymisongelman ratkeamattomuustodistus johdantoluvus-sa 3.3.2.

• Jos ongelma on ratkeava, koneen pitaa pysahtya aina. Jos osittain ratkeava, niin senpitaa pysahtya ”kylla”–tapauksessa.

6.4 Laskennan vaativuusteoriasta

• Keskeinen (algoritmisuunnittelun) kysymyksenasettelu:

Laskennan vaativuusteorian peruskysymykset ovat intuitiivisesti seuraavan tyyppi-sia (ajan sijaan voidaan puhua muistista tms.):

– Annettu laskennallinen ongelma A ja aikaraja T : voiko ongelman A ratkaistaajassa T (ylaraja aikavaativuudelle)?

– Annettu laskennallinen ongelma A ja aikaraja T : vieko ongelman A ratkaise-minen valttamatta vahintaan ajan T (alaraja aikavaativuudelle)?

155

Page 158: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Ylarajoja todistetaan tyypillisesti laatimalla tehokas algoritmi ja analysoimlla senaikavaativuus. Tietojenkasittelytieteilijat ovat hyvia tassa (tai ainakin siihen kou-lutuksemme pyrkii).

• Alarajojen todistaminen on yleensa (hyvin) vaikeaa: tyypillisesti se onnistuu vainjos

– ongelma A on sopiva keinotekoinen ongelma; tai

– tehdaan lisarajoituksia sille millaiset algoritmit ovat sallittuja.

Esimerkiksi TRA II -kurssin Ω(n log n) alaraja jarjestamiselle olettaa lisaksi,etta algoritmi saa vain vertailla kokonaisia tietoalkioita toisiinsa.

Siten alaraja ei enaa padekaan esimerkiksi silloin, jos naiden tietoalkioidenyksittaisia bittejakin saakin tutkia.

(Huomattakoon viela, etta tassa ollaan kiinnostuneita tiukoista alarajoista; esim.Ω(1) on taysin triviaali alaraja jarjestamiselle, mutta ei kiinnostava.)

• Ideaalitapauksessa ylaraja ja alaraja ovat samat, jolloin on loydetty optimaalinenalgoritmi.

• Laskennan vaativuusteoriassa edellinen kysymyksenasettelu muuntuu hieman toi-seen muotoon.

• Ylarajat ja alarajat ovatkin vaativuusluokituksia, tyyliin:

– Voiko ongelman A ratkaista polynomisessa ajassa deterministisella Turinginkoneella?

Silloin ajattelemme ongelmaluokkaa ”kaikki ne ongelmat, joille on polynomises-sa ajassa toimiva algoritmi, kun sanan ’algoritmi’ tasmalliseksi maaritelmaksiotamme Turingin koneet”.

– Voiko ongelman A ratkaista polynomisessa ajassa epadeterministisella Turinginkoneella?

Siis on myos epadeterministisia Turingin koneita, eli sellaisia jotka voivat valitaseuraavan laskenta-askeleensa useasta eri vaihtoehdosta. . .

– Voiko ongelman A ratkaista polynomisessa tilassa?

– jne.

• Emme siis (valttamatta) ole kiinnostuneita yksittaisen algoritmin tasmallisesta vaa-tivuudesta (edes) asymptoottisessa eli ”iso-O”-mielessa, vaan tietyn tyyppisten on-gelmien vaikeudesta.

• Eras Turingin koneiden yksinkertaisuuden etu on, etta niiden kuluttamien lasken-taresurssien maara voidaan maaritella suoraan:

– Turingin koneen M syotemerkkijonolla w kayttama

aika on yksinkertaisesti sen tekemien laskenta-askeleiden lukumaara ennenpysahtymistaan

tila on yksinkertaisesti niiden nauhapaikkojen lukumaara, joita sen nauhapaaon osoittanut ennen koneen pysahtymista.

156

Page 159: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Silloin kun tyydymme tarkastelemaan vain ratkeavia ongelmia, niin voimmeolettaa nama aarellisiksi.

Ratkeamattomien ongelmien resurssitarpeet taas ovat harvoin kiinnostavia.

– Syotteen pituudella n nama maaritellaan maksimiarvoikseen, eli

aika on pisin aika joka voidaan kayttaa millaan syotteella w jonka pituus |w| ≤n

tila on suurin tila joka. . . vastaavasti.

– Samoin epadeterminismi voidaan maaritella suoraan: Samassa tilassa voidaanvalita samalla nauhamerkilla monta eri siirtymaa.

• Jos kieli voidaan tunnistaa jossain nykyaikaisen tietokoneen abstraktissa mallissa(kuten esimerkiksi ns. ”hajasaantikone” eli RAM-kone) ajassa t(n) ja tilassa s(n),niin se voidaan tunnistaa deterministisella Turingin koneella ajassa O(t(n)2) ja ti-lassa O(s(n)).

• Yleisemmin, ((lahes?) kaikissa?) universaaleissa laskennan malleissa aikavaativuudetja tilavaativuudet (kun ne maaritellaan jarkevasti) ovat polynomisessa suhteessa:

Jos jokin ongelma ratkeaa jossain mallissa ajassa t(n), niin missa tahansa toises-sa mallissa se ratkeaa ajassa O(t(n)k), jollain vakiolla k, joka riippuu kaytetyistamalleista mutta ei ongelmasta.

• Erityisesti tama tarkoittaa: jos ongelma ratkeaa polynomisessa ajassa (determinis-tisen) Turingin koneen avulla, se ratkeaa polynomisessa ajassa myos ”oikealla tie-tokoneella”.

(Ja painvastoin.)

• Eli olemme kiinnostuneet rajasta

tehokkaan eli polynomisen ja

tehottoman eli ylipolynomisen laskenta-ajan valilla

emmeka tarkasta funktiosta t(n).

• Kaytannon laskennassa ylipolynominen algoritmi hidastuu liian rajusti ollakseenhyodyllinen, kun syotteen pituus n kasvaa vahankaan suuremmaksi.

• Kombinatoriikan nakokulmasta ylipolynomisuus tarkoittaa usein ”luettele kaikki erimahdollisuudet ja valitse niista. . . ” -tyyppista ratkaisua, jota ei voine pitaa algorit-misesti kovinkaan nokkelana. . .

• Ajatellaan esimerkiksi seuraavaa tehtavaa: Meilla on n punnusta, joiden painot ovatp1, p2, p3, . . . , pn ∈ N. Voidaanko vaaka saada tasapainoon niin, etta yhteen senvaakakuppiin laitetaan osa niista ja toiseen loput.

– Laskentaongelmana se tunnetaan nimella Ositus (Partition): Syotteena an-netaan luvut p1, p2, p3, . . . , pn ∈ N. Onko olemassa jokin indeksijoukko I ⊆1, 2, 3, . . . , n siten, etta ∑

i∈I

pi =∑

j∈1,2,3,...,n\I

pj? (17)

157

Page 160: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

– Deterministista perusalgoritmia

1 for each I ⊆ 1, 2, 3, . . . , n2 do if yhtalo (17) on totta3 then return ”kylla on”4 return ”ei ole”

ei voine pitaa kovinkaan nokkelana, sehan vain kokeilee lapi kaikki 2n eri vaih-toehtoa.

– Epadeterministinen algoritmi vain

1. ensin tuottaa jonkin osajoukon I ⊆ 1, 2, 3, . . . , n epadeterministisesti

2. sitten hyvaksyy jos yhtalo (17) on totta ja hylkaa muuten.

6.5 Ongelmien vaikeusluokitukset ja palautukset

• Vaikeusluokkia ja -luokituksia on paljon (katso esim. http://qwiki.stanford.

edu/wiki/Complexity Zoo) koska laskentaongelmia voidaan vertailla toisiinsa mo-nin eri tavoin.

• Tarkeimmat tuntea: P ja NP.

• Puoli-formaalisti: laskennallinen (paatos)ongelma A kuuluu luokkaan NP (nonde-terministic polynomial time), jos se voidaan tunnistaa epadeterministisella Turinginkoneella polynomisella maaralla laskenta-askeleita.

• Tasta seuraa suoraan, etta jos ongelma A ∈ NP, niin se voidaan tunnistaa determi-nistisella Turingin koneella (a.k.a. tietokoneella) eksponentiaalisessa ajassa (simu-loimalla epadeterministista laskentaa, joka kay kaikki ”laskentapuun” haarat lapi).

• Siis: tama simuloinnin eksponentiaalisuus on ylaraja; luokkaan NP kuuluu myoshelppoja ongelmia (esim. hierarkian pohjalla saannolliset kielet), jotka voidaan rat-kaista nopeammin.

• Luokan NP vaikeimmat ongelmat saattavat kuitenkin vaatia eksponentiaalisen ajan,mutta tama on avoin ongelma.

• Ns. NP-taydellisille ongelmille ei tunneta tehokkaampia algoritmeja, mutta ei olemyoskaan voitu todistaa etteiko sellaisia voisi olla.

• Tama on tarkea kysymys, koska erilaisia (tarkeita) NP-taydellisia ongelmia on pal-jon, ja niita haluttaisiin osata ratkaista tehokkaasti (≈ polynomisessa ajassa).

• Vastaavasti luokka P, epaformaalisti: paatosongelmat, jotka voidaan ratkaista de-terministisella Turingin koneella polynomisessa ajassa.

• Siis, jos P = NP, niin kaikki luokan NP ongelmat voitaisiin ratkaista polynomi-sessa ajassa.

• Valtaosa tietojenkasittelytieteilijoista uskoo, etta P 6= NP. Mutta sita ei siis oleviela(kaan) onnistuttu todistamaan.

• Intuitiivisesti todistuksen vaikeus on osoittaa, ettei mikaan ohjelmointitapa, -kikkatai -temppu voi korvata epadeterministista polynomista laskentaa deterministisellahidastumatta samalla eksponentiaalisesti.

158

Page 161: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Palautukset laskentaongelmien valilla

• Ongelmia voidaan ”palauttaa” toisiin ongelmiin.

Triviaali esimerkki: kertolasku voidaan palauttaa toistetuksi yhteenlaskuksi, ja pain-vastoin.

• Laskentaongelman A palauttaminen laskentaongelmaan B tarkoittaa sellaista muun-nosfunktiota f , etta kysymykseen

”Pateeko x ∈ A?” voidaan vastata kysymalla sen sijaan ”Pateeko f(x) ∈ B?”.

Talloin ”ongelma A loytyy ongelman B sisalta”.

• Talloin ajattelemme etta ”Eihan tama A ollutkaan ainakaan vaikeampi ongelmakuin tuo B!”.

• Tai kaantaen ”Ongelma B ei ole ainakaan helpompi kuin tama ongelma A!”.

• Sallitut palautukset f valitaan siten, etteivat ne ”hamarra” sita rajaa, jota halutaannyt tutkia.

• Esimerkiksi jos rajana on ratkeavuus/ratkeamattomuus, niin silloin palautuksena fsallitaan mika tahansa algoritmisesti laskettava funktio.

• Silloin otetaan ongelmaksi A jokin ratkeamattomaksi jo tiedetty ongelma.

Erityisesti pysahtymisongelma on todistettu ratkeamattomaksi suoraan, vetoamattamuihin ongelmiin. Siten se onkin usein luonteva A.

• Silloin palautusfunktion f olemassaolo osoittaa myos ongelman B ratkeamattomaksi— ongelma A ”tyontaa” ongelman B rajan yli palautuksella f .

• Toisin sanoen, ongelma B voidaan osoittaa ratkeamattomaksi seuraavasti:

1. Oletetaan, etta ongelmalla B olisi jokin ratkaisualgoritmi.

2. Osoitetaan, etta sen avulla saataisiin ratkaisualgoritmi myos jollekin ratkea-mattomaksi tiedetylle ongelmalle A — esimerkiksi pysahtymisongelmalle.

3. Tama on ristiriita, eli myoskaan B ei voi olla ratkeava.

• Kun tutkitaan rajaa P/NP, niin sallituiksi palautusfunktioiksi f valitaan (deter-ministisilla Turingin koneilla) polynomisessa ajassa laskettavat funktiot.

Puhutaan polynomisista (moni-yksi) palautuksista (”polynomial (many-one) reduc-tions”).

• Jos on siis annettu formaalit kielet A ∈ Σ∗A ja B ∈ Σ∗

B, voidaan merkita A ≤p B jos

x ∈ A⇔ f(x) ∈ B kaikilla x ∈ Σ∗A

ja palautusfunktio f : Σ∗A 7→ Σ∗

B voidaan laskea polynomisessa ajassa.

• Tama A ≤p B formalisoi intuitiomme ”ongelma A ei ole vaikeampi kuin ongelma B”eli ”ongelma B ei ole helpompi kuin ongelma A”.

• Laskentaongelma on NP-vaikea (tai ”NP-kova”) (engl. NP-hard), jos kaikki luo-kan NP ongelmat voidaan palauttaa siihen polynomisesti.

159

Page 162: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• Laskentaongelma on NP-taydellinen (”complete”), jos se on NP-vaikea ja itsekinluokassa NP.

Toisin sanoen, silloin se on luokan NP ”katolla” eli yksi sen ”vaikeimmista” ongel-mista.

• Nailla maaritelmilla P?= NP-ongelma ratkeaa

P = NP jos yhdellekin NP-taydelliselle (tai -vaikealle) ongelmalle keksitaan poly-nomisessa ajassa toimiva deterministinen algoritmi.

Tama on siis se vahemman uskottava vaihtoehto.

P 6= NP jos yhdellekin NP-taydelliselle ongelmalle pystytaan osoittamaan, etteisellaista algoritmia voi olla olemassa.

Tama on siis se vaihtoehto, johon uskotaan, mutta jonka todistus yha puuttuu.

• Siis, ongelma B voidaan osoittaa NP-taydelliseksi (jos se on sellainen!) seuraavasti:

1. Etsitaan ensin kirjallisuudesta tunnettu NP-taydellinen ongelma A (joita ontuhansia), joka muistuttaa ongelmaa B jossakin mielessa.

2. Osoitetaan etta A ≤p B. Mikali lahtoongelma A on riittavan samankaltainenkuin B, vaadittu palautus f voi olla yksinkertainen. Toisaalta polynomisessaajassa voi tarvittaessa suorittaa kohtalaisen monimutkaisiakin muunnoksia.

3. Osoitetaan viela etta B ∈ NP, mika on yleensa helppoa: riittaa esittaa silleepadeterministinen polynomiaikainen algoritmi.

• Jos ongelma B on nain osoitettu NP-taydelliseksi, mutta sille pitaa silti antaaedes jonkinlainen ratkaisu, niin sille voidaan ryhtya kehittamaan esimerkiksi jotakinseuraavista:

Approksimointialgoritmia , joka laskeekin jonkin likimaaraisen ratkaisun.

Satunnaisalgoritmia , joka loytaa ratkaisun todennakoisesti, muttei varmasti.

Heuristiikkoja , jotka toimivat nopeasti monissa sen erikoistapauksissa, mutteivatkaikissa.

NP-taydellisia ongelmia

• NP-taydellisia ongelmia on loytynyt tuhansia seka tietojenkasittelytieteen sisaltaetta monilta muilta sellaisilta tieteenaloilta, joissa myos pitaa ratkoa informaation-kasittelytehtavia.

• Esimerkiksi seuraavilta aloilta, jotka on poimittu alan perusteoksesta (Garey andJohnson, 1979):

Verkkoteoria. Esimerkiksi Hamiltonin keha (Hamiltonian Circuit): Voidaankosyotteena annetun suuntaamattoman verkon kaaria pitkin kulkea niin, etta kaydaantasan kerran jokaisessa sen solmussa, ja lopuksi palataan takaisin lahtosolmuun?

Tai Verkon varitys (Chromatic Number): Voidaanko annetun suuntaamat-toman verkon solmut varittaa k eri varilla siten, etta verkon jokainen kaari yhdistaaerivarisia solmuja?

160

Page 163: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Verkkojen suunnittelu. Esimerkiksi Kauppamatkustajan ongelma (TravellingSalesman Problem, TSP): Edellinen Hamiltonin keha jossa on mukana myoskaarten painot (eli ”teiden pituudet”) ja ylaraja kierroksen pituudelle.

Joukot ja niiden ositukset. Esimerkiksi edella kuvattu Ositus.

Tallennus ja haku. Esimerkiksi Lyhyin yhteinen ylijono (Shortest CommonSuperstring): Annetaan monta merkkijonoa s1, s2, s3, . . . , sn seka ylaraja m. On-ko olemassa korkeintaan m merkin mittainen merkkijono s, joka sisaltaa kaikki namaannetut merkkijonot?

Kiinnostava esimerkiksi molekyylibiologiassa: Annetut merkkijonot ovat laborato-riokokeilla eristettyja patkia tuntemattoman DNA-juosteen eri kohdista. Millainense koko juoste voisi olla?

Aikataulujen laadinta. Esimerkiksi Lukujarjestys (Timetable) koko koululle, taityojarjestys tehtaan koneille ja sen henkilokunnalle,. . .

Matemaattinen ohjelmointi. Esimerkiksi Repunpakkaus (Knapsack): On annet-tu tavaroita, joilla on arvo ja paino. Mitka niista murtovarkaan kannattaa poimiareppuunsa, jotta niiden yhteinen arvo olisi mahdollisimman suuri, mutta paino siltiniin pieni, etta han viela jaksaa kantaa ne?

Algebra ja lukuteoria. Esimerkiksi Neliolliset Diofantoksen yhtalot (Qua-dratic Diophantine Equations): Annetaan a, b, c ∈ N. Onko olemassa ratkai-sut x, y ∈ N yhtalolle a · x2 + b · y = c?

Pelit ja pulmat. Esimerkiksi sellainen Ristisanatehtava (Crossword Puzzle Con-struction) jossa annetaan ruudukko, jossa osa ruuduista on valkeita ja muut mus-tia seka lista sanoja jotka pitaa kirjoittaa naihin valkeisiin ruutuihin.

Logiikka. Esimerkiksi klassisen lauselogiikan Toteutuvuusongelma (Satisfiabili-ty, SAT): Annetaan klassisen lauselogiikan kaava. Voidaanko siina oleville muut-tujille antaa sopivat totuusarvot siten, etta koko kaavan totuusarvoksi tulee true?

• Tama oli siina mielessa ”ensimmainen” NP-taydellinen ongelma, etta se todis-tettiin suoraan NP-taydelliseksi lahtien polynomiaikaisista epadeterministisistaTuringin koneista.

• Pysahtymisongelma oli vastaavassa roolissa ratkeamattomuudessa.

• Tama on ns. (Stephen) Cookin lause.

• Sen jalkeen nama muut ongelmat voitiin todistaa NP-taydellisiksi helpomminsopivilla palautuksilla siita ja toisistaan.

• Huomaa: Muillakin logiikoilla on oma toteutuvuusongelmansa, ja sen vaati-vuus vaihtelee logiikasta riippuen.

Automaatit ja formaalikielet. Monet taman kurssin asioista johtavat vahintaan NP-koviin ongelmiin, esimerkiksi Pienin esimerkeista paatelty automaatti (Mi-nimum Inferred Finite State Automaton): Annetaan kaksi aarellista merk-kijonojoukkoa S, K ⊆ Σ∗ eli ”sallitut” ja ”kielletyt” sanat seka kokoraja m ∈ N.Onko olemassa sellaista m-tilaista deterministista automaattia, joka hyvaksyy kaik-ki sallitut sanat mutta ei yhtaan kielletyista sanoista?

Eli kuinka vaikeaa tietokoneen on ”keksia” itse annettuihin positiivisiin ja negatii-visiin esimerkkeihin sopiva aarellinen automaatti?

161

Page 164: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Ohjelmien optimointi. Monet kaantajan loppuvaiheen eli koodin generoinnin ongel-mat kuten esimerkiksi Rekistereiden riittavyys (Register Sufficiency):Voidaanko annettu ohjelmakoodi kaantaa sellaiseksi konekoodiksi, jossa tarvitaankerrallaan vain korkeintaan r eri rekisteria? Jos voidaan, niin hyva; jos ei, niin sittentaytyy kayttaa rekistereiden lisaksi keskusmuistia, ja se on hitaampaa.

Onneksi on sittemmin ilmennyt, etta jos ohjelma onkin kirjoitettu rakenteisesti elisiina ei hypitakaan goto-kaskyilla mielivaltaisesti sinne tanne, niin myos sen rekis-terien kaytto pysyy kurissa. Tassa on esimerkki tilanteesta, jossa yleinen ongelmaon vaikea, mutta sen kaytannossa esiintyvat tapaukset helppoja.

• Huomaa: Nama ovat paatosongelmia, eli kylla/ei-kysymyksia (”kuuluuko kieleen?”).

Tarkkaan ottaen, ainoastaan paatosongelmaversiota saa sanoa NP-taydelliseksi.

• Usein ollaan kuitenkin kiinnostuneita etsinta- tai optimointiongelmista, tyyliin

– ”Mika on pienin maara r rekistereita, jonka tama annettu ohjelmakoodi tar-vitsee?”

– ”Mika on annetun suuntaamattoman painotetun verkon lyhyin Hamiltoninkeha / kauppamatkustajan reitti?”

• Tavallisesti (mutta ei valttamatta!) NP-taydellisen paatosongelman ja sita vastaa-van optimointiongelman vaativuus on ”oleellisesti sama”, eli ne eroavat vain jonkinpolynomin verran.

Siksi usein puhutaankin myos ”optimointiongelman NP-taydellisyydesta”.

7 Summa summarum

• Kurssin sisaltoa voidaan tarkastella (ainakin) kahdesta nakokulmasta:

Perustiedot formaaleista kielista ja niiden tunnistamisesta; esim.

– kielen maaritteleminen aarellisena automaatina, saannollisen lausekkeentai kontekstittoman kieliopin avulla,

– naiden formalismien valiset yhteydet,

– (Turingin kone yleisena algoritmin mallina ja)

– (ratkeamattomuuden alkeet, kuten pysahtymisongelma).

Johdatus tietojenkasittelyteoriaan ja sen metodiikkaan; erityisesti

– matematiikan soveltaminen laskennan mallintamiseen ja

– miten vaitteet perustellaan tasmallisesti.

Saannolliset kielet

Kaytannossa tarkea tietaa:

• tilasiirtymakone laskennan mallina

• saannolliset lausekkeet ja aarelliset automaatit

Teoreettisia ajatusmalleja:

• epadeterministinen laskenta (joitain kaytannon sovelluksiakin on)

162

Page 165: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

• mallien valiset konversiot (NFA → DFA)

• laskulaitteen ja kuvausformalismin ekvivalenssi (DFA vs. saannollinen lauseke)

• luokan sulkeumaominaisuudet

• mahdottomuustodistukset (pumppauslemma)

Kontekstittomat kielet

Kaytannossa tarkea tietaa:

• kielen kuvaaminen kieliopilla

• jasentamisen peruskasitteet, erityisesti jasennyspuu

Teoreettisia ajatusmalleja: samat kuviot kuin saannollisilla kielilla, teknisesti haasta-vammassa tilanteessa

Algoritmisia tekniikoita:

• iteratiiviset algoritmit (nollautuvat muuttujat jne.)

• CYK-algoritmi ja taulukointi (dynaaminen ohjelmointi)

• rekursion kaytto yksinkertaisen kieliopin jasentamiseksi

Jatkoaiheita: sovellukset ohjelmointikielissa ja luonnollisessa kielessa

Turingin koneet ja laskettavuus

Kaytannossa tarkea tietaa:

• Churchin-Turingin teesi

• ratkeamattomuuden kasite

Teoreettisia ajatusmalleja: vaikka mita (introssa mainittu ainakin: numeroituvuus vs.ylinumeroituvuus; diagonalisointi)

Jatkoaiheita: laskennan teoria, laskennan vaativuus; (matemaattinen) logiikka (ei sekurssi. . . )

Teoria ja kaytanto

• Kurssi oli teoreettinen, mutta asiat pitaa ymmartaa syvallisesti, jotta opittua voitehokkaasti soveltaa.

”THE BEST THEORY IS INSPIRED BY PRACTICE andTHE BEST PRACTICE IS INSPIRED BY THEORY.”

— Donald Knuth.

”In theory practice and theory are the same. In practice they are not.”— Anonyymi (?)

163

Page 166: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Tentti

• Jotain taman tapaista:

1. Vastaa / selita lyhyesti mita tarkoittaa. . .

2. Determinisoi ja minimoi oheiset automaatit:. . .

3. Muodosta

(a) oheista saannollista lauseketta vastaava epadeterministinen aarellinen auto-maatti

(b) oheisesta automaatista vastaava saannollinen lauseke

luennolla esitetylla menetelmalla.

4. Olkoon annettu kontekstiton kielioppi G.

(a) Laadi kieliopin kuvaaman kielen tunnistava aarellinen automaatti (jos kielioppion oikealle lineaarinen) tai pinoautomaatti (jos ei).

(b) Onko kielioppi Chomskyn normaalimuodossa? Jos ei, niin muuta se sellaiseksi.

(c) Selvita CYK-algoritmilla, kuuluuko merkkijono w = . . . kieliopin kuvaamaankieleen.

• Yleisesti: kuten harjoitustehtavat, luentojen esimerkit ja tehtavat.

Siis kysymyksia seuraavien kertaustehtavien tyyliin:

Tehtava 48. Esita kullekin seuraavista aakkoston Σ = a, b, c kielista kielen tunnistavadeterministinen automaatti ja vastaava saannollinen lauseke:

1. merkkijonot, joissa a-merkkien lukumaara on korkeintaan kolme

2. merkkijonot, jotka loppuvat ”abc”

3. merkkijonot, jotka eivat sisalla osamerkkijonoa ”abc”

4. merkkijonot, joissa ei ole kahta samaa merkkia perakkain.

5. merkkijonot, jotka sisaltavat kolmella jaollisen lukumaaran merkkia c.

Tehtava 49. Muodosta epadeterministinen aarellinen automaatti kielelle (0∗∪11)∗. Muo-dosta tasta edelleen deterministinen (minimoitu) aarellinen automaatti. Kayta luentoma-teriaalissa esitettya tasmallista menetelmaa, ja esita myos valivaiheet.

Tehtava 50. Minimoi alla oleva deterministinen aarellinen automaatti kurssilla opeteltuaminimointimenetelmaa kayttaen.

164

Page 167: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

1

2 3

4 5

ab

b

a a ab

b

a

b

Tehtava 51. Tarkastellaan oheista aarellista automaattia:

3

6

a,b

a a

bb

aa

b

21

0

aa

b bb

a

b

108

5

4

9

7

a

b

1. Determinisioi automaatti kurssilla opeteltua menetelmaa kayttaen.

2. Minimoi deterministinen automaatti kurssilla opeteltua minimointimenetelmaa kayt-taen.

3. Millaisen kielen automaatti tunnistaa? Muodosta (minimoidusta) automaatista vas-taava saannollinen lauseke.

Tehtava 52. Tarkastellaan oheista aarellista automaattia:

2

4 5 6

1

3

a

a

a

b

a

b

b

b

a

b

b

a

1. Minimoi deterministinen automaatti kurssilla opeteltua minimointimenetelmaa kayt-taen.

165

Page 168: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

2. Millaisen kielen automaatti tunnistaa? Muodosta (minimoidusta) automaatista vas-taava saannollinen lauseke.

Tehtava 53. Tarkastellaan oheista aarellista automaattia:

1

2

3

4

5

6

a

b

b

b

b

b

b

b

b

a

a

a

b

b

1. Determinisoi automaatti kurssilla opeteltua menetelmaa kayttaen.

2. Minimoi deterministinen automaatti kurssilla opeteltua minimointimenetelmaa kayt-taen.

3. Millaisen kielen automaatti tunnistaa? Muodosta (minimoidusta) automaatista vas-taava saannollinen lauseke.

Tehtava 54. Eraan ohjelmointikielen funktiomaarittelyt ovat seuraavanlaisia: ensin an-netaan paluuarvo, joka voi olla int, float tai void. Sita seuraa funktion nimi. Suluissaennetaan parametrit, ensin tyyppi (joko int tai float) ja sitten parametrin nimi. Pa-rametrit erotetaan pilkulla. Parametrien puuttuminen ilmaistaan varatulla sanalla void.Funktioiden ja muuttujien nimet koostuvat kirjaimista a,b,c,...,z seka numeromer-keista 0,1,2,...,9, ja alkavat aina kirjaimella. Laillisia maarittelyja ovat esimerkiksi:int calc2(int x, int y), void print(float meanvalue), float generate(void).

1. Anna kielen kuvaava saannollinen lauseke.

2. Muodosta kielen tunnistava deterministinen aarellinen automaatti lausekkeesta.

3. Anna kielen kuvaava kontekstiton kielioppi.

Tehtava 55. Olkoon aakkosto Σ = a, b. Tarkastellaan kielta

L = x | x ei sisalla merkkijonoa aba.

1. Laadi aarellinen automaatti, joka tunnistaa kyseisen kielen. (Vihje: Laadi ensinautomaatti sen komplementille.)

2. Lue automaatista vastaava saannollinen lauseke. Anna kaikki valivaiheet!

3. Anna kontekstiton kielioppi, joka tuottaa kyseisen kielen.

Tehtava 56. Mita tarkoittaa. . .

1. Aarellisen automaatin determinisointi?

2. Aarellisen automaatin minimointi?

166

Page 169: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

3. Aarellisen automaatin muodostus saannollisesta lausekkeesta?

4. Todistus Pumppauslemmalla?

Tehtava 57. Ovatko seuraavat vaittamat oikein vai vaarin? Perustele lyhyesti.

1. Jos kieli ei ole saannollinen, on se kontekstiton.

2. Jos kieli on kontekstiton, on se myos saannollinen.

3. Jos kieli on saannollinen, on se myos kontekstiton.

4. On olemassa kielia jotka ovat saannollisia mutta eivat kontekstittomia.

5. On olemassa kielia jotka voidaan tunnistaa epadeterministisella aarellisella auto-maatilla mutta joita ei voida kuvata saannollisella lausekkeella.

6. Jos annettuna kielioppi G ja merkkijono w ∈ a, b∗, niin w ∈ L(G) on algoritmi-sesti ratkeava ongelma.

Tehtava 58. Tarkastellaan seuraavaa kielioppia G:

S → aA | bB | εA→ bB | bB → aA | a

Ovatko seuraavat vaitteet tosia vai epatosia?

1. Merkkijonot a ja b kuuluvat kieliopin kuvaamaan kieleen L(G).

2. G on Chomskyn normaalimuodossa.

3. G kuvaa saman kielen kuin saannollinen lauseke ab(ab)∗ ∪ aba(ba)∗ ∪ ba(ba)∗ ∪bab(ab)∗.

4. G kuvaa saman kielen kuin saannollinen lauseke a(ba)∗b ∪ b(ab)∗a.

5. G on vasemmalle lineaarinen.

6. G kuvaa saman kielen kuin kielioppi G′:

S → aA | bB | ε A→ bA′

A′ → B | ε B → aB′

B′ → A | ε

Tehtava 59. Tarkastellaan seuraavia formaaleja kielia. Ovatko ne saannollisia? Jos jokuniista ei ole saannollinen, osoita etta se on kontekstiton.

1. aibj : i = 0 . . . 3, j = 4 . . . 5

2. w : w on a:sta ja b:sta koostuva merkkijono, jonka pituus on 3:lla jaollinen

3. ww : w ∈ a, b∗

4. anban : n ≥ 0

167

Page 170: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

5. w ∈ a, b∗ : w sisaltaa parillisen maaran a:ta seka vahintaan yhden b:n.

6. aibj : j ≥ i ≥ 0

7. w ∈ a, b∗ : w sisaltaa parillisen maaran b:ta

8. w ∈ a, b∗ : w sisaltaa parillisen maaran b:ta ∩w ∈ a, b∗ : w sisaltaa kolmella jaollisen maaran a:ta.

9. w ∈ a, b∗ : w sisaltaa parillisen maaran a:ta seka vahintaan yhden b:n.

10. aibj ∈ a, b∗ : 2 ≤ i = j ≤ 4

11. aibj : i = 2j

12. aibj : i on parillinen ja j on pariton

13. awa ∪ bwb : w ∈ a, b∗

14. w ∈ a, b∗ : w sisaltaa merkkijonon ab seka parittoman maaran a:ta.

15. ambn : 0 ≤ m ≤ n ≤ 2m

Tehtava 60. Olkoon annettu saannolliset kielet L, L1 ja L2. Osoita etta myos seuraavatkielet ovat saannollisia:

1. L1 · L2 (kielten katenaatio)

2. L1 ∩ L2

3. L1 ∪ L2

4. L∗

Tehtava 61. Mihin Chomskyn normaalimuotoa tarvitaan? Mitka kielet voidaan esittaaChomskyn normaalimuodossa?

Tehtava 62. Olkoon annettu kielioppi

S → aA | bBA → aS | bAB → bB | ε

1. Laadi kieliopin kuvaaman kielen tunnistava aarellinen automaatti.

2. Anna vastaava saannollinen lauseke.

3. Onko kielioppi Chomskyn normaalimuodossa?

4. Jos ei, niin muuta se sellaiseksi.

5. Kuuluuko merkkijono aabbab kieleen? Jos kuuluu, niin anna merkkijonon jasennyspuu.

168

Page 171: Laskennan perusmallit (LAP) - UEF · 2013. 1. 4. · Laskennan perusmallit (LAP) Pekka Kilpel¨ainen Tietojenk¨asittelytieteen laitos, It ¨a-Suomen yliopisto s¨ahk ¨oposti: pekka.t.kilpelainen@uef.fi

Tehtava 63. Simuloi Cocke–Younger–Kasami (CYK) -algoritmia sen ratkaistessa kuu-luvatko merkkijonot bbaab, ababab ja aabba kieliopin

S → AS | bA → SA | a

muodostamaan kieleen. (”Simuloi” = tayta algoritmin yllapitama dynaamisen ohjelmoin-nin taulukko.) Jos kuuluu, niin anna vastaavat jasennyspuut.

Tehtava 64. Mitka seuraavat aakkoston Σ = a, b kielista ovat saannollisia, mitka eivat:

1. L = anbn : n ∈ N

2. L = anan : n ∈ N

3. L = wuwR : w, u ∈ Σ+Perustele vastauksesi.

Tehtava 65. Tarkastellaan aakkoston a, b parillisen mittaisten palindromien muodos-tamaa kielta PAL = wwR : w ∈ a, b∗.

1. Laadi kielen tuottava kontekstiton kielioppi.

2. Muodosta kielen tunnistava pinoautomaatti.

Tehtava 66. Miten voit ratkaista seuraavat ongelmat?

1. Annettuna saannolliset lausekkeet r1 ja r2, onko L(r1) = L(r2)?

2. Annettuna saannollinen lauseke r ja oikealle lineaarinen kielioppi G, onko L(r) =L(G)?

3. Annettuna kontekstittomat kieliopit G1 ja G2, onko L(G1) = L(G2)?

Tehtava 67. Tarkastellaan aritmeettisia lausekkeita tuottavaa kontekstitonta kielioppiaG: E → E + E | E × E | (E) | a.

1. Muodosta lauseelle (a + a)× a vasen johto.

2. Osoita etta kielioppi on moniselitteinen (Vihje: a + a× a).

3. Muunna kielioppi G Chomskyn normaalimuotoon.

4. Tutki CYK-agoritmilla, kuuluvatko merkkijonot (a + a × a) ja a × (a) + a kieleenL(G).

Tehtava 68. Selita lyhyesti seuraavien kasitteiden merkitys.

1. Oikealle tai vasemmalle lineaarinen kielioppi.

2. Jasennyspuu (parse tree).

3. Saannollinen lauseke (regular expression).

4. Moniselitteinen kielioppi.

5. ε-automaatti.

6. Chomskyn normaalimuoto.

7. Churchin-Turingin teesi.

— Loppu —Muista kurssipalaute!

169