ICS-C2000 Tietojenkäsittelyteoria

Samankaltaiset tiedostot
on rekursiivisesti numeroituva, mutta ei rekursiivinen.

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli. H = {c M w M pysähtyy syötteellä w}

M = (Q, Σ, Γ, δ, q 0, q acc, q rej )

5.3 Ratkeavia ongelmia

Säännöllisen kielen tunnistavat Turingin koneet

Lisää pysähtymisaiheisia ongelmia

Kielenä ilmaisten Hilbertin kymmenes ongelma on D = { p p on polynomi, jolla on kokonaislukujuuri }

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

Rajoittamattomat kieliopit

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 10. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

Rekursiiviset palautukset [HMU 9.3.1]

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 6. maaliskuuta 2012 TIETOTEKNIIKAN LAITOS.

Laskennan rajoja. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 20. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS.

Chomskyn hierarkia ja yhteysherkät kieliopit

Täydentäviä muistiinpanoja laskennan rajoista

(0 1) 010(0 1) Koska kieli on yksinkertainen, muodostetaan sen tunnistava epädeterministinen q 0 q 1 q 2 q3

Laskennan rajoja. Sisällys. Meta. Palataan torstaihin. Ratkeavuus. Meta. Universaalikoneet. Palataan torstaihin. Ratkeavuus.

2. Laskettavuusteoriaa

Pysähtymisongelman ratkeavuus [Sipser luku 4.2]

4. Tehtävässä halutaan todistaa seuraava ongelma ratkeamattomaksi:

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

Rajoittamattomat kieliopit (Unrestricted Grammars)

2. Laskettavuusteoriaa

Algoritmin määritelmä [Sipser luku 3.3]

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Turingin koneet. Sisällys. Aluksi. Turingin koneet. Turingin teesi. Aluksi. Turingin koneet. Turingin teesi

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 8. maaliskuuta 2012

Laskennan teoria (kevät 2006) Harjoitus 3, ratkaisuja

TKT20005 Laskennan mallit (syksy 2018) Kurssikoe, malliratkaisut

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

9.5. Turingin kone. Turingin koneen ohjeet. Turingin kone on järjestetty seitsikko

Täydentäviä muistiinpanoja Turingin koneiden vaihtoehdoista

δ : (Q {q acc, q rej }) (Γ k {, }) Q (Γ k {, }) {L, R}.

Testaa: Vertaa pinon merkkijono syötteeseen merkki kerrallaan. Jos löytyy ero, hylkää. Jos pino tyhjenee samaan aikaan, kun syöte loppuu, niin

Äärellisten automaattien ja säännöllisten kielten ekvivalenssi

uv n, v 1, ja uv i w A kaikilla

Turingin koneen laajennuksia

Muita vaativuusluokkia

Laskennan mallit (syksy 2009) Harjoitus 11, ratkaisuja

1. Universaaleja laskennan malleja

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 6. kesäkuuta 2013 TIETOTEKNIIKAN LAITOS. Pinoautomaatit.

Laskennan mallit (syksy 2010) Harjoitus 4, ratkaisuja

Säännölliset kielet. Sisällys. Säännölliset kielet. Säännölliset operaattorit. Säännölliset kielet

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 29. toukokuuta 2013

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 19. syyskuuta 2016

Säännöllisten kielten sulkeumaominaisuudet

Epädeterministisen Turingin koneen N laskentaa syötteellä x on usein hyödyllistä ajatella laskentapuuna

Automaatit. Muodolliset kielet

Pinoautomaatit. Pois kontekstittomuudesta

Ratkeavuus ja efektiivinen numeroituvuus

ongelma A voidaan ratkaista ongelman B avulla, joten jossain mielessä

ICS-C2000 Tietojenkäsittelyteoria. Tähän mennessä: säännölliset kielet. Säännöllisten kielten pumppauslemma M :=

Kertausta 1. kurssikokeeseen

ICS-C2000 Tietojenkäsittelyteoria

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. marraskuuta 2015

vaihtoehtoja TIEA241 Automaatit ja kieliopit, syksy 2016 Antti-Juhani Kaijanaho 13. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Yhteydettömän kieliopin jäsennysongelma

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 16. toukokuuta 2011

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 19. tammikuuta 2012

Chomskyn hierarkia. tyyppi 0 on juuri esitelty (ja esitellään kohta lisää) tyypit 2 ja 3 kurssilla Ohjelmoinnin ja laskennan perusmallit

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 20. lokakuuta 2016

ICS-C2000 Tietojenkäsittelyteoria

Hahmon etsiminen syotteesta (johdatteleva esimerkki)

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 16. marraskuuta 2015

Jos sekaannuksen vaaraa ei ole, samastamme säännöllisen lausekkeen ja sen esittämän kielen (eli kirjoitamme R vaikka tarkoitammekin L(R)).

M =(K, Σ, Γ,, s, F ) Σ ={a, b} Γ ={c, d} = {( (s, a, e), (s, cd) ), ( (s, e, e), (f, e) ), (f, e, d), (f, e)


Laskennan mallit (syksy 2010) Harjoitus 8, ratkaisuja

Muita universaaleja laskennan malleja

Vasen johto S AB ab ab esittää jäsennyspuun kasvattamista vasemmalta alkaen:

Laskennan teoria

T Syksy 2002 Tietojenkäsittelyteorian perusteet Harjoitus 8 Demonstraatiotehtävien ratkaisut

TIEA241 Automaatit ja kieliopit, kevät Antti-Juhani Kaijanaho. 26. tammikuuta 2012

Muunnelmia Turingin koneista sekä muita vaihtoehtoisia malleja

S BAB ABA A aas bba B bbs c

3SAT-ongelman NP-täydellisyys [HMU ]

Output. Input Automaton

T Syksy 2006 Tietojenkäsittelyteorian perusteet T Harjoitus 7 Demonstraatiotehtävien ratkaisut

Turingin koneet. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 7. joulukuuta 2015 TIETOTEKNIIKAN LAITOS.

C C. x 2. x 3 x 3. Lause 3SAT p m VC Todistus. Olk. φ = C 1 C 2 C m 3-cnf-kaava, jossa esiintyvät muuttujat. φ toteutuva:

Rekursiivinen Derives on periaatteessa aivan toimiva algoritmi, mutta erittäin tehoton. Jos tarkastellaan esim. kieliopinpätkää

1. Universaaleja laskennan malleja

Ongelma(t): Mikä on Turingin kone? Miten Turingin kone liittyy funktioihin ja algoritmeihin? Miten Turingin kone liittyy tietokoneisiin?

TIEA241 Automaatit ja kieliopit, kevät 2011 (IV) Antti-Juhani Kaijanaho. 31. maaliskuuta 2011

DFA:n käyttäytyminen ja säännölliset kielet

Laskennan teoria

Vaihtoehtoinen tapa määritellä funktioita f : N R on

Esimerkki 2.28: Tarkastellaan edellisen sivun ehdot (1) (3) toteuttavaa pinoautomaattia, jossa päätemerkit ovat a, b ja c ja pinoaakkoset d, e ja $:

Sisältö. ICS-C2000 Tietojenkäsittelyteoria. Kertausta edellisistä kerroista...

ICS-C2000 Tietojenkäsittelyteoria

Rekursio. Funktio f : N R määritellään yleensä antamalla lauseke funktion arvolle f (n). Vaihtoehtoinen tapa määritellä funktioita f : N R on

TIEA241 Automaatit ja kieliopit, kesä Antti-Juhani Kaijanaho. 26. kesäkuuta 2013

Pinoautomaatit. TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 6. lokakuuta 2016 TIETOTEKNIIKAN LAITOS

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Tarkastelemme ensin konkreettista esimerkkiä ja johdamme sitten yleisen säännön, joilla voidaan tietyissä tapauksissa todeta kielen ei-säännöllisyys.

Ei-yhteydettömät kielet [Sipser luku 2.3]

Laskennan teoria

6.1 Rekursiiviset palautukset

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 12. lokakuuta 2016

Transkriptio:

ICS-C2000 Tietojenkäsittelyteoria Luento 10: Lisää ratkeamattomuudesta Aalto-yliopisto Perustieteiden korkeakoulu Tietotekniikan laitos Kevät 2016

Aiheet: Pysähtymisongelma Epätyhjyysongelma Rekursiiviset palautukset Postin vastaavuusongelma (Sipserin kirjan luku 5.2) Materiaali: Orposen prujun luvut 6.5, 6.7 (alkuosa) sekä 6.9 6.10 (palautukset) 2/55

Mieleenpalautusta viime viikolta Esimerkki: Kielen {a k b k c k k 0} tunnistava Turingin kone /, L /, L B/B, R C/C, R a/a, R B/B, R a/a, R b/b, R q 0 q 1 q 2 q 5 q 4 a/a, R B/B, R A/A, R q 3 b/b, R C/C, R c/c, L C/C, L b/b, L B/B, L a/a, L Koneen laskenta syötteellä aabbcc: (q 0,aabbcc) (q 1,Aabbcc) (q 1,Aabbcc) (q 2,AaBbcc) (q 2,AaBbcc) (q 3,AaBbCc) (q 3,AaBbCc) (q 3,AaBbCc) (q 3,AaBbCc) (q 4,AaBbCc) (q 1,AABbCc) (q 1,AABbCc) (q 2,AABBCc) (q 2,AABBCc) (q 3,AABBCC) (q 3,AABBCC) (q 3,AABBCC) (q 3,AABBCC) (q 4,AABBCC) (q 5,AABBCC) (q 5,AABBCC) (q 5,AABBCC) (q 5,AABBCC ) (q acc,aabbcc ). 3/55

Churchin Turingin teesi: Mielivaltainen (riittävän vahva) laskulaite Turingin kone. Laskettavuusteoria: Tarkastellaan mitä Turingin koneilla voi ja erityisesti mitä ei voi laskea. Tärkeä erottelu: Pysähtyvät ja ei-pysähtyvät Turingin koneet. Määritelmä 6.1 Orposen prujussa Turingin kone M = (Q,Σ,Γ,δ,q 0,q acc,q rej ) on totaalinen, jos se pysähtyy kaikilla syötteillä. Formaali kieli A on rekursiivisesti numeroituva, jos se voidaan tunnistaa jollakin Turingin koneella, ja rekursiivinen, jos se voidaan tunnistaa jollakin totaalisella Turingin koneella. 4/55

Aakkoston {0, 1} universaalikieli U määritellään: U = {c M w Turingin kone M hyväksyy syötteen w} Vastaava päätösongelma: Annettuna (binääriaakkoston) Turingin kone M ja merkkijono w. Hyväksyykö M merkkijonon w? Kieli U on rekursiivisesti numeroituva (eli osittain ratkeava). Kielen U tunnistavia Turingin koneita sanotaan universaaleiksi Turingin koneiksi. Mutta kieli U ei ole rekursiivinen eli ratkeava... eli ei ole mitään Turingin konetta (tietokoneohjelmaa), joka pystyisi aina päättelemään sille annetusta Turing koneesta M ja tämän syötteestä w, hyväksyykö kone M syötteen w 5/55

Pysähtymisongelma 6/55

6.5 Turingin koneiden pysähtymisongelma Lause 6.9 Kieli H = {c M w M pysähtyy syötteellä w} on rekursiivisesti numeroituva, mutta ei rekursiivinen. Todistus Todetaan ensin, että kieli H on rekursiivisesti numeroituva. Lauseen 6.6 todistuksessa esitetystä universaalikoneesta M U on helppo muokata kone, joka syötteellä c M w simuloi koneen M laskentaa syötteellä w ja pysähtyy hyväksyvään lopputilaan, jos ja vain jos simuloitu laskenta ylipäätään pysähtyy. 7/55

Osoitetaan sitten, että kieli H ei ole rekursiivinen. Oletetaan nimittäin, että olisi H = L(M H ) jollakin totaalisella Turingin koneella M H. Oletetaan lisäksi, että kone M H pysähtyessään jättää nauhalle alkuperäisen syötteensä, mahdollisesti tyhjämerkeillä jatkettuna. Olkoon M U lauseen 6.6 todistuksessa konstruoitu universaalikone. Kielelle U voitaisiin nyt muodostaa totaalinen tunnistaja yhdistämällä koneet M H ja M U seuraavasti: cm w MH MU def U(m,w ) : wcopy = w i f not M_H(m,w ) : r e j e c t r e t u r n M_U(m, wcopy ) Lauseen 6.7 mukaan tällaista kielen U tunnistajakonetta ei kuitenkaan voi olla olemassa. Saatu ristiriita osoittaa, että H ei voi olla rekursiivinen. 8/55

Seuraus 6.10 Kieli H = {c M w M ei pysähdy syötteellä w} ei ole rekursiivisesti numeroituva. 9/55

Turingin koneiden epätyhjyysongelma 10/55

Tarkastellaan seuraavaa Turingin koneiden tunnistamien kielten epätyhjyysongelmaa Annettuna Turingin kone M. Hyväksyykö M yhtään syötemerkkijonoa? Ongelman esitys formaalina kielenä on NE = {c {0,1} L(M c ) /0} Lause 6.11 Kieli NE on rekursiivisesti numeroituva, mutta ei rekursiivinen. 11/55

Lause Todistetaan kahdessa osassa. Kieli NE on rekursiivisesti numeroituva. Todistus Todistetaan kieli rekursiivisesti numeroituvaksi muodostamalla sille tunnistajakone M NE. Kone M NE on helpointa suunnitella epädeterministisenä. Otetaan käyttöön seuraavat alikoneet: MOK testaa, onko annettu syöte kelvollinen Turingin koneen koodi M G kirjoittaa epädeterministisesti nauhalla jo olevan merkkijonon perään mielivaltaisen binäärijonon w 12/55

Muodostetaan M NE yhdistämällä koneet M OK, M G ja universaalikone M U seuraavasti: c MOK MG cw MU Idea epädeterministisenä Python -koodina: def NE(m) : i f not M_ok(m) : r e t u r n False w = choose_ string_ nondeterministically ( ) r e t u r n M_U(m,w) Selvästikin: c L(M NE ) c on kelvollinen Tk-koodi ja w s.e. cw U c on kelvollinen Tk-koodi ja w s.e. w L(M c ) L(M c ) /0. 13/55

Lause Kieli NE ei ole rekursiivinen. Todistus Oletetaan, että kielellä NE olisi totaalinen tunnistajakone M T NE ja muodostetaan sitä käyttäen totaalinen tunnistajakone M T U kielelle U (eli saadaan ristiriita) Konstruktio perustuu syötteiden koodaamiseen Turingin koneiden ohjelmavakioiksi Olkoon M jokin Turingin kone, jonka toimintaa syötteellä w = a 1 a 2...a k halutaan tutkia Merkitään M w :llä konetta, joka aina korvaa todellisen syötteensä merkkijonolla w ja toimii sitten kuten M: a/a,l a/a 1,R a/a 2,R a/a k,r a/,l /,R M 14/55

a/a,l a/a 1,R a/a 2,R a/a k,r a/,l /,R M Koneen M w toiminta ei siis riipu lainkaan sen todellisesta syötteestä, vaan se joko hyväksyy tai hylkää kaikki merkkijonot, sen mukaan miten M suhtautuu w:hen: { L(M w {0,1} ) = jos w L(M) /0 jos w / L(M) M w :tä vastaava python-ohjelma: def mw( x ) : # w i s a constant w = 0 1 0... 0 1 r e t u r n m(w) 15/55

c M w Olkoon sitten M ENCODE Turingin kone, joka saa syötteenään mielivaltaisen Turingin koneen M koodista c M ja binäärijonosta w muodostuvan jonon c M w ja jättää tuloksenaan nauhalle edellä kuvatun koneen M w koodin c M w: Python-domainissa: M ENCODE c M w def encode (m,w ) : i f not isvalidtm (m) : r e t u r n False r e t u r n astm( " " " def mw( x ) : w = " " " +w+ " " " r e t u r n " " " +m+ " " " (w) " " " ) Jos syöte ei ole muotoa cw, missä c on kelvollinen Turingin koneen koodi, kone M ENCODE päätyy hylkäävään lopputilaan. Kone M ENCODE operoi siis Turingin koneiden koodeilla. Annetun koneen M koodiin se lisää siirtymäviisikoita ( konekäskyjä ) ja muuttaa tilojen numerointia siten, että koodi tulee koneen M sijaan esittämään konetta M w. 16/55

Universaalikielelle U voitaisiin nyt koneet M ENCODE ja hypoteettinen M T NE seuraavalla tavalla yhdistämällä muodostaa totaalinen tunnistajakone MU T : cm w MENCODE M T NE def MTU(m,w ) : cm w mw = encode (m,w) i f mw == False : r e t u r n False r e t u r n MTNE(mw) Kone MU T on totaalinen, jos MT NE on, ja L(MT U ) = U, koska: c M w L(M T U ) c M w L(MT NE ) = NE L(Mw ) /0 w L(M). Mutta kieli U ei ole rekursiivinen, joten tällainen totaalinen tunnistajakone M T U ei ole mahdollinen. Saadusta ristiriidasta päätellään, että myöskään kielellä NE ei voi olla totaalista tunnistajaa M T NE. 17/55

Muita ratkeamattomuustuloksia 18/55

6.8 Muita ratkeamattomuustuloksia Lause 6.13 (Predikaattikalkyylin ratkeamattomuus; Church/Turing 1936) Ei ole olemassa algoritmia, joka ratkaisisi, onko annettu ensimmäisen kertaluvun predikaattikalkyylin kaava φ validi ( loogisesti tosi, todistuva predikaattikalkyylin aksioomista). Lause 6.14 ( Hilbertin 10. ongelma ; Matijasevitsh/Davis/Robinson/Putnam 1953 70) Ei ole olemassa algoritmia, joka ratkaisisi, onko annetulla kokonaislukukertoimisella polynomilla P(x 1,...,x n ) kokonaislukunollakohtia (so. jonoja (m 1,...,m n ) Z n, joilla P(m 1,...,m n ) = 0). Ongelma on ratkematon jo, kun n = 15 tai deg(p) = 4. 19/55

Postin vastaavuusongelma (engl. Post s Correspondence Problem): Voiko annetuista palikoista (joita voidaan kopioida rajattomasti) järjestää jono niin, että ylä- ja alariveillä on sama merkkijono? blocks= blocks= a ab baa aa ab bba aa bb bba. bb def solve(blocks):.... return res true. false bba bb ab aa bba bb a baa 20/55

Chomskyn hierarkia Kielioppien, niillä tuotettavien kielten ja vastaavien tunnistusautomaattien ryhmittely: Luokka 0: rajoittamattomat kieliopit / rekursiivisesti numeroituvat kielet / Turingin koneet. Luokka 1: yhteysherkät kieliopit / yhteysherkät kielet / lineaarisesti rajoitetut automaatit. Luokka 2: yhteydettömät kieliopit / yhteydettömät kielet / pinoautomaatit. Luokka 3: oikealle ja vasemmalle lineaariset (säännölliset) kieliopit / säännölliset kielet / äärelliset automaatit. 0 1 2 3 Ū U {a k b k c k k 0} {a k b k k 0} {a k k 0} äärelliset kielet 21/55

Eräiden kielioppiongelmien ratkeavuus, kun annettuna on kieliopit G ja G Chomskyn hierarkian tietyltä tasolta i ja merkkijono w. Taulukossa R ratkeava, E ei ratkeava, T aina totta. Luokka i: Ongelma: onko 3 2 1 0 w L(G)? R R R E L(G) = /0? R R E E L(G) = Σ? R E E E L(G) = L(G )? R E E E L(G) L(G )? R E E E L(G) L(G ) = /0? R E E E L(G) säännollinen? T E E E L(G) L(G ) tyyppiä i? T E T T L(G) tyyppiä i? T E T E 22/55

Rekursiiviset palautukset 23/55

Orposen prujun kappaleet 6.9 ja 6.10 joiltain osin Näytetään että Turingin koneilla voidaan laskea funktioiden arvoja (ei vain vastauksia ei/kyllä-kysymyksiin) ja palautuksiin perustuva tapa osoittaa ongelmia ratkeamattomiksi (eli kieliä ei-rekursiivisiksi) 24/55

Rekursiiviset funktiot Turingin koneen M = (Q,Σ,Γ,δ,q 0,q acc,q rej ) laskema osittaiskuvaus (t. -funktio) f M : Σ Γ määritellään: { u jos (q0,x) (q,uav) jollakin q {q acc,q rej },av Γ ; M f M (x) = määrittelemätön jos M ei pysähdy syötteellä x. Osittaisfunktio f : Σ A on osittaisrekursiivinen jos se voidaan laskea jollakin Turingin koneella ja (kokonais-)rekursiivinen, jos se voidaan laskea jollakin totaalisella Turingin koneella. Ekvivalentisti voitaisiin määritellä, että osittaisrekursiivifunktio f on rekursiivinen, jos sen arvo f (x) on määritelty kaikilla x. 25/55

Esimerkki: Turingin kone, joka laskee n bittisien binääriluvun (eniten merkitsevä bitti ensin) seuraajan (modulo 2 n ): 1/1,R 0/0,R q_0 /,L 1/0,L q_1 /,R 0/1,R 1/1,R 0/0,R q_2 /,L q_3 x/x,r acc Churchin Turingin teesin mukaisesti kaikki tietokoneilla laskettavissa olevat totaaliset funktiot ovat rekursiivisia 26/55

Rekursiiviset palautukset Formaali kieli A Σ voidaan palauttaa rekursiivisesti kieleen B Γ, merkitään A m B, jos on olemassa rekursiivinen funktio f : Σ Γ, jolla on ominaisuus: Graafisesti x A f (x) B, kaikilla x Σ. Σ Γ A B 27/55

Palautusten avulla voidaan ratkaista toisia kieliä toisten kielten algoritmien avulla Lause 6.16 (iv) Jos A m B ja B on rekursiivinen kieli, niin myös A on rekursiivinen kieli. Todistus Olkoon M B totaalinen Turingin kone, joka ratkaisee kielen B, ja M f totaalinen Turingin kone, joka laskee palautuksen f kielestä A kieleen B. Saamme kielen A ratkaisevan totaalisen Turingin koneen yhdistämällä koneet M f ja M B eli laskemalla ensin syötteelle w arvon f (w) koneella M f ja sitten ajamalla koneen M B syötteellä f (w). Yhdistetty kone on totaalinen ja hyväksyy syötteen w jos ja vain jos f (w) B eli w A. 28/55

Graafisesti kielen A tunnistava totaalinen Turingin kone M A voidaan esittää seuraavana lohkokaaviona, missä Mf on rekursiivisen palautuksen f laskeva totaalinen Turingin kone, ja MB on kielen B tunnistava totaalinen Turingin kone. M A x M f f(x) M B 29/55

Idea Python-kielellä: def solveb ( y ) : " " " Returns t r u e i f f y \ i n B. " " "... r e t u r n r e s u l t def f ( z ) : " " " Returns a s t r i n g z such t h a t z \ i n A <=> z \ i n B. " " "... r e t u r n r e s u l t def solvea ( x ) : " " " Returns t r u e i f f x \ i n A. " " " inputforb = f ( x ) r e t u r n solveb ( inputforb ) 30/55

Esimerkki: Päätösongelma FSM-EQ Annettuna kaksi aakkoston Σ äärellistä automaattia M 1 ja M 2. Ovatko näiden hyväksymät kielet samat? on ratkeava koska voimme minimoida automaatit ja katsoa, ovatko saadut automaatit isomorfiset. Myös päätösongelma Annettuna kaksi aakkoston Σ säännöllistä lauseketta r 1 ja r 2. Onko lausekkeen r 1 tuottama kieli lausekkeen r 2 kielen komplementti (eli L(r 1 ) = L(r 2 ))? on ratkeava, koska voimme palauttaa tämän ongelmaan FSM-EQ: Annettuna säännöllisten lausekkeiden pari (r 1,r 2 ) Palautus antaa parin (M 1,M 2 ), missä M 1 on lauseketta r 1 vastaava deterministinen automaatti ja M2 on lauseketta r 2 vastaavan deterministisen automaatin komplementti (hyväksyvät ja normaalit tilat vaihdettu) 31/55

Seuraus Palautusten avulla voidaan myös todistaa kieliä ratkeamattomiksi Jos A m B ja A on ratkeamaton kieli, niin myös B on ratkeamaton kieli. Todistus Annettuna siis: A m B ja A on ratkeamaton kieli. Oletaan, että B olisi ratkeava kieli. Tällöin Lemman 6.16 mukaan A olisi myös ratkeava kieli eli saadaan aikaan ristiriita. Täten B ei voi olla ratkeava kieli kun A m B ja A on ratkeamaton kieli Uuden kielen B näyttäminen ratkeamattomaksi: Valitaan ratkeamaton kieli A Näytetään, että A voidaan rekursiivisesti palauttaa kieleksi B Vedetään johtopäätös, että B on myös ratkeamaton 32/55

Esimerkki: Pysähtymisongelman osoittaminen ratkeamattomaksi palautusten avulla Palautetaan universaalikieli U pysähtymiskieleen H Otetaan mikä tahansa syöte c M w, eli Turingin kone M ja merkkijono w, jolle tahdotaan selvittää päteekö c M w U Tehdään nyt rekursiivisella palautusfunktiolla f syöte f (c M w) = c M w, eli Turingin kone M ja merkkijono w, siten että c M w U c M w H eli M hyväksyy syötteen w jos ja vain jos M pysähtyy syötteellä w Jos voisimme ratkaista ongelman Pysähtyykö M syötteellä w, voisimme ratkaista ongelman Hyväksyykö M syötteen w Koska kieli U ei ole rekursiivinen ja se on rekursiivisesti palautettavissa kieleen H, myöskään kieli H ei ole rekursiivinen 33/55

Rekursiivinen palautusfunktio f muodostaa M w1w2...wn Nyt koneen M, joka toimii kuten M paitsi, että hylkäävä lopputila on vaihdettu tilaksi, jossa suoritus jatkuu loputtomiin syötteen w kopioimalla syötteen w, eli w = w M hyväksyy syötteen w M pysähtyy syötteellä w M hylkää syötteen w M ei pysähdy syötteellä w M M f x/a, R M ei pysähdy syöttellä w M ei pysähdy syötteellä w M hyväksyy syötteen w jos ja vain jos M pysähtyy syötteellä w w1w2...wn 34/55

Esimerkki: Epätyhjyysongelman osoittaminen ratkeamattomaksi palautusten avulla Palautetaan universaalikieli U epätyhjyyskieleen NE Otetaan mikä tahansa syöte c M w, eli Turingin kone M ja merkkijono w, jolle tahdotaan selvittää päteekö c M w U Tehdään nyt rekursiivisella palautusfunktiolla f syöte f (c M w) = c M, eli Turingin kone M, siten että c M w U c M NE eli M hyväksyy syötteen w jos ja vain jos M hyväksyy jonkin syötteen Jos voisimme ratkaista ongelman Hyväksyykö M jonkin syötteen, voisimme ratkaista ongelman Hyväksyykö M syötteen w Koska kieli U ei ole rekursiivinen ja se on rekursiivisesti palautettavissa kieleen NE, myöskään kieli NE ei ole rekursiivinen 35/55

Rekursiivinen palautusfunktio f muodostaa koneen M, joka on samankaltainen kuin aiemmassa todistuksessamme: M kirjoittaa alussa merkkijonon w oman syötteensä päälle ja toimii sen jälkeen kuten M. a M w1w2...wn f M x/, R if x x/x, L if x M x/w1, R x/w2, R x/wn, R /, L /, R M hyväksyy syötteen w M hyväksyy kaikki syötteet M ei hyväksy syötettä w M ei hyväksy mitään syötettä M hyväksyy syötteen w jos ja vain jos M hyväksyy jonkin syötteen a Konetta M modattu niin, että se toimii symbolilla samoin kuin symbolilla 36/55

Postin vastaavuusongelma 37/55

Yksinkertaisesti määriteltävissä oleva ratkeamaton ongelma t Domino on merkkijonopari (t, b), graafisesti b Tässä t on dominon ylärivi ja b alarivi Annettuna äärellinen joukko P dominoja, vastaavuus on äärellinen sekvenssi D 1 D 2...D n dominoja tästä joukosta siten, että sekvenssin ylä- ja alariveille muostuu sama merkkijono HUOM: sama domino voi esiintyä useamman kerran vastaavuudessa! Esimerkki: { } b Dominojoukkolle ca, a ab, ca a, abc on olemassa vastaavuus c a b ca a abc. ab ca a ab c 38/55

Määritelmä Postin vastaavuusongelma (engl. Post Correspondence Problem) { } t Annettuna joukko P = 1 t,..., n dominoja. Onko dominoille b 1 b n vastaavuutta? Kielenä: PCP = {P P on joukko dominoja, joille on vastaavuus}. Esimerkki: { } b Dominojoukko ca, a ab, ca a, abc kuuluu kieleen PCP koska joukolle on olemassa vastaavuus. c a b ca a abc ab ca a ab c 39/55

Esimerkki: { } ab Dominojoukko aa, bba ei kuuluu kieleen PCP koska joukolle ei bb ole olemassa vastaavuutta. 40/55

Teoreema PCP on ratkeamaton kieli. Todistetaan kahdessa osassa: 1. Palautetaan ratkeamaton kieli U muunneltuun Postin vastaavuusongelmaan MPCP (määritellään myöhemmin) MPCP on ratkeamaton kieli. 2. Palautetaan ratkeamattomaksi osoitettu kieli MPCP kieleen PCP. PCP on myös ratkeamaton kieli. 41/55

Määritelmä: MPCP t Annettuna joukko P = { 1 t,..., n } dominoja ja aloitusdomino b 1 b n t 1 P. Onko dominoille vastaavuutta, joka alkaa aloitusdominolla? b 1 Lause U m MPCP. Todistus Luonnos, hieman tarkempi käsittely Sipserin kirjan luvussa 5.2 Annettuna siis kielen U instanssi c M w, eli Turingin kone M ja merkkijono w t Tehdään dominojoukko P 1 ja aloitusdomino P siten, että b 1 M hyväksyy merkkijono w jos ja vain jos joukolle P on vastaavuus, joka alkaa aloitusdominolla 42/55

Idea: koneen M laskenta (eli sekvenssi tilanteita) syötteellä w voidaan kuvata sekvenssinä merkkijonoja muotoa α 1 qα 2, missä α kuvaa lukupään vasemmalla puolella olevat merkit, q on koneen tila, ja β kuvaa lukupään oikealla puolella olevat merkit. Erotetaan nämä merkkijonot erikoissymbolilla # ja aloitetaan erikoismerkillä Lisäksi jatketaan merkkijonoa tilanteilla, joissa hyväksyvän tilan q acc vierestä voidaan poistaa yksi nauhasymboli kerrallaan ja vaaditaan, että lopussa tilanteena on vain yksittäinen tila q acc. 43/55

Esimerkki: Turingin koneen 1/1,R 0/0,R 1/0,L q_0 /,L q_1 0/1,L /,R 1/1,L 0/0,L /,R acc q_2 laskenta syötteellä 10 ylläkuvattuna merkkijonona: # q 0 10 # 1q 0 0 # 10q 0 # 1q 1 0 # q 2 11 #q 2 11 # q acc 11 # q acc 1 # q acc # q acc #q acc ## 44/55

Tehdään dominojoukko, jonka vastaavuuksia ovat vain ylläkuvatun kaltaiset merkkijonot Aloitusdomino sisältää koneen M alkutilanteen syötteellä w alarivillä Esimerkki: Edellä olevalle Turingin koneelle ja syötteelle 10 tehdään aloitusdomino # # q 0 10 # 45/55

46/55 Jotta voidaan kopioida lukupäästä kauempana olevat merkit alariville seuraajatilanteeseen, tehdään dominot muotoa x x kaikille nauhasymboleille ja välimerkille # Esimerkki: Edellä olevalle Turingin koneelle tehdään dominot 0 0 1 1 # #

Tehdään seuraavaksi dominoja, jotka saavat ylärivin vastaamaan alariviä ja samalla muodostavat tilanteen seuraajatilanteen alariville Jokaiselle koneen siirtymälle oikealle δ(q, a) = (r, b, R) tehdään qa qa domino ja siirtymälle δ(q, ) = (r,b,r) domino br br Esimerkki: Edellä olevalle Turingin koneelle tehdään dominot q 2 q 1 q 0 1 q 0 0 q acc q acc 1q 0 0q 0 47/55

Samoin siirtymille vasemmalle δ(q, a) = (r, b, L) tehdään cqa dominot, missä c on mikä tahansa merkki (pl., tämä on r cb turha tapaus) Esimerkki: Edellä olevalle Turingin koneelle tehdään dominot 0q 2 1 1q 2 1 q 2 1 0q 2 0 1q 2 0 q 2 0 0q 0 1q 0 q 0 q 2 01 q 2 11 q 2 1 q 2 00 q 2 10 q 2 0 q 1 0 q 1 1 q 1 0q 1 0 1q 1 0 q 1 0 0q 1 1 1q 1 1 q 1 1 q 2 01 q 2 11 q 2 1 q 1 00 q 1 10 q 1 0 48/55

Uudet tilanteet merkkijonon lopussa, joissa on jo saavutettu hyväksyvä tila ja poistetaan muut merkit, saadaan aikaan xq acc q acc x dominoilla muotoa ja, missä x on nauhasymboli q acc q acc Esimerkki: Edellä olevalle Turingin koneelle tehdään dominot q acc 0 q acc 1 q acc 0q acc q acc q acc 1q acc q acc q acc q acc q acc q acc 49/55

Lopuksi vaaditaan, että vastaavuusmerkkijono päättyy q acc ## hyväksyvän tilan tilanteeseen dominolla # Tämä on ainoa domino, joka voi korjata aloitusdominossa syntyneen epäsuhdan ylä- ja alarivien symbolien # lukumäärässä 50/55

Esimerkki: Edellä olevalle Turingin koneelle ja syötteelle 10 tehtiin siis seuraavat dominot: # q 2 q 1 q 0 1 q 0 0 0q 2 1 1q 2 1 q 2 1 # q 0 10 # q acc q acc 1q 0 0q 0 q 2 01 q 2 11 q 2 1 0q 2 0 1q 2 0 q 2 0 0q 0 1q 0 q 0 0q 1 0 1q 1 0 q 1 0 q 2 00 q 2 10 q 2 0 q 1 0 q 1 1 q 1 q 2 01 q 2 11 q 2 1 0q 1 1 1q 1 1 q 1 1 0 1 # 0q acc q acc 0 1q acc q acc 1 q 1 00 q 1 10 q 1 0 0 1 # q acc q acc q acc q acc q acc q acc q acc q acc q acc ## # 51/55

52/55 Esimerkki: Eräs vastaavuus: # # q 0 10 # q 0 1 1q 0 0 0 # # 1 1 q 0 0 0q 0 # # 1 1 0q 0 q 1 0 # # 1q 1 0 q 2 11 # # q 2 1 q 2 1 1 1 # # q 2 q acc 1 1 1 1 # # q acc 1 q acc 1 1 # # q acc 1 q acc # # q acc q acc # # q acc q acc # # q acc ## # Ylä- ja alaosien merkkijono on: # q 0 10 # 1q 0 0 # 10q 0 # 1q 1 0 # q 2 11 #q 2 11 # q acc 11 # q acc 1 # q acc # q acc #q acc ##

Lause Seuraavaksi pitää enää näyttää, kuinka MPCP-ongelman aloitusdominon vaatimuksesta päästään eroon, eli todistaa seuraava: MPCP m PCP. Todistus Olkoon u = u 1...u n ei-tyhjä sana (eli n 1). Määritellään seuraavat apusanat missä on uusi symboli. u = u 1 u 2... u n u = u 1 u 2... u n u = u 1 u 2... u n 53/55

{ } t Annettuna dominojoukko P = 1 t, 2 t,..., n b 1 b 2 b n t 1 aloitusdominolla, tehdään dominojoukko b 1 { } P t = 1 b 1, t 2 b 1..., t n b n, missä on uusi symboli ja mahdollistaa ylärivin viimeisen -symbolin mukaantuomisen. t 1 Selvästikin on nyt ainoa domino, joka voi aloittaa b 1 vastaavuuden... ja alkuperäistä vastaavuutta (ja vain niitä) vastaa uusi vastaavuus, jossa joka toinen symboli on. 54/55

Lisää algoritmeista ja palautuksista kursseilla T-79.4202 Principles of Algorithmic Techniques T-79.5103 Computational Complexity Theory 55/55