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