F I Nerozhodnutel nost IB110 1 / 28 Put the right kind of software into a computer, and it will do whatever you want it to. There may be limits on what you can do with the machines themselves, but there are no limits on what you can do with software. Time Magazin, April 198^ 2/28 Nerozhodnutelné problémy Otázka • existujú algoritmické problémy, ktoré sú prakticky neriešitelné? • je to len otázka dostatočne dlhého času, výkonného hardwaru resp. sofistikovaných algoritmov ??? • alebo existujú problémy, ktoré sú principiálne neriešiteľné ??? 3/28 Nerozhodnutelné problémy Pravidlá • uvažujeme algoritmické problémy (tj. problémy určené svojou množinou vstupných inštancií a požadovaným vzťahom medzi vstupom a výstupom) • problémy s nekonečnou množinou vstupných inštancií (v opačnom prípade pre problém vždy existuje algoritmus založený na vymenovaní všetkých vstupov a k ním príslušných výstupov) • algoritmus = program zapísaný v programovacom jazyku vyššej úrovne Nerozhodnutelné problémy Príklad - domino Vstup (konečná) množina T typov dlaždíc s farebnými hranami Otázka je možné dlaždicami pokryť ľubovoľne veľkú plochu tak, aby sa dlaždice vždy dotýkali hranami rovnakej farby? z každého typu je k dispozícii neobmedzený počet dlaždíc Nerozhodnutelné problémy Príklad - domino, inštancia 1 B ^ riešením inštancie 1 je "Áno" 6/28 Nerozhodnutelné problémy Príklad - domino, inštancia 2 b a riešením inštancie 2 je "Nie" 7/28 Nerozhodnutelne problémy Nerozhodnutelne problémy Definícia Problém, pre ktorý neexistuje žiaden algoritmus, sa nazýva nerozhodnutelný (algoritmicky neriešiteľný). prakticky riešiteľné problémy prakticky neriešiteľné problémy nerozhodnutelne problémy Nerozhodnutelné problémy Príklad - domino Fakt Problém domina je nerozhodnutelný • "zdroj" nerozhodnutelnosti • ekvivalencia s problémom pokrytia nekonečnej plochy • periodicita riešenia • je dôvodom potenciálne nekonečný počet možností? • dominový had a jeho varianty 9/28 Nerozhodnutelné problémy Príklad - Postov korešpondečný problém (PKP) Vstup dva zoznamy slov X = (xi,.. . x„) a Y = (yi,.. . y„) Otázka existuje konečná postupnost indexov taká, že spojením príslušných slov zoznamu X vznikne rovnaké slovo ako spojením príslušných slov zoznamu Y? 1 2 3 4 5 X Y abb bbab a aa bab ab baba aa aba a riešením inštancie je "Ano", príkladom postupnosti je 2, 1, 1, 4, 1, 5 1 2 3 4 5 X bb a bab baba aba Y bab aa ab aa a nesením istancie je nie I Nerozhodnuteľné problémy Príklad - ekvivalencia a verifikácia programov Ekvivalencia Vstup dva programovacie jazyky vyššej úrovne, ktorých syntax je daná syntaktickým diagramom alebo v BNF Otázka sú množiny syntakticky správnych programov pre oba jazyky zhodné? Verifikácia Vstup popis algoritmického problému a program v programovacom jazyku vyššej úrovne Otázka rieši program daný problém? (tj. odpoveď je "Áno" ak pre každú vstupnú inštanciu problému sa výpočet programu zastaví a dá správnu odpoveď) Pre oba problémy závisí nerozhodnuté!nosi na voľbe programovacieho jazyka resp. na voľbe jazyka pre popis algoritmického problému. Pre bežné jazyku sú oba problémy nerozhodnuteľné. 11 / 28 Nerozhodnutelné problémy Príklad - problém zastavenia Uvažujme algoritmy A a B s množinou vstupných inštancií N Algoritmus A while X^ldoX^X-2od return X Algoritmus B while X ŕ 1 do if X je sudé do X <- X/2 if X je liché do X <- 3X + 1 od return X Algoritmus A pre sudé čísla neskončí. O algoritme B nieje známe, či skončí pre všetky vstupné inštancie. Nerozhodnutelné problémy Príklad - problém zastavenia Vstup program R v programovacom jazyku L vyššej úrovne a množina vstupných inštancií programu R Otázka zastaví sa výpočet R pre každú vstupnú inštanciu? Problém zastavenia je nerozhodnuteľný. Notácia: R(x) j označuje, že výpočet R na x skončí; symbol R(x) j označuje, že neskončí. Nerozhodnutelne problémy Riceova veta Rozhodnuteľnosť je výnimka, ktorá potvrdzuje pravidlo Zaujíma nás netriviálna vlastnosť programu, ktorá je (1) pravdivá pre niektoré a nepravdivá pre ostane programy (2) nieje viazaná na syntax programu, ale vzťahuje sa k problému, ktorý program rieši. Riceova veta Všetky netriviálne vlastnosti programov sú nerozhodnutelne. Príklady: je výstupom programu vždy "Áno"?, zastaví program pre každý vstup? Metóda diagonalizácie Dôkaz nerozhodnutelnosti Analógia s dôkazom NP-úplnosti (1) dokážeme nerozhodnuteľnosť nejakého problému (2) nerozhodnuteľnosť ďalších problémov dokazujeme metódou redukcie V prípade nerozhodnutelnosti použijeme redukciu, ktorá nemusí byt polynomiálně časovo ohraničená. 15 / 28 Metóda diagonalizácie Redukcia Redukcia Pre dané dva rozhodovacie problémy Pi a P2; redukcia je algoritmus A ktorý vstupnú inštanciu X problému Pi transformuje na vstupnú inštanciu Y problému P2 takú, že riešením X je "Áno" vtedy a len vtedy, ak riešením Y je tiež "Áno". 16 / 28 Metóda diagonalizácie Redukcia - príklad redukcia problému zastavenia na problém verifikácie 17 / 28 I Metóda diagonalizácie Redukcia a dôkaz nerozhodnuteľnosti Fakt Ak P\ sa redukuje Pi a P\ je nerozhodnuteľný, tak aj Pi je nerozhodnuteľný. Predpokladajme, že P2 je rozhodnutelný a že B je algoritmus, ktorý ho rieši. Pomocou B skonštruujeme algoritmus pre P\. Konretne, vstupnú inštanciu X problému P\ prevedieme pomcou algoritmu redukcie na vstupnú inštanciu Y problému Pi- Použijeme algoritmus B a nájdeme riešenie Y. Ak riešením Y je "Áno" tak riešením X je tiež "Áno". Ak riešením Y je "Nie" tak riešením X je tiež "Nie". To je ale spor s predpokladom, že P\ je nerozhodnuteľný. 18 / 28 Metóda diagonalizácie Nerozhodnuteľnosť problému zastavenia Tvrdenie Neexistuje program v L, ktorý pre ľubovoľnú dvojicu (R, X) (R je syntakticky správny program v L a X je symbol reťazcov), dá na výstup "Áno" práve ak výpočet R pre vstup X skončí po konečnom počte krokov a dá na výstup "Nie" v opačnom prípade. Neexistenciu programu požadovaných vlastností dokážeme sporom. 19 / 28 I Metóda diagonalizácie Nerozhodnuteľnosť problému zastavenia Predpokladajme, že existuje program požadovaných vlastností, nazvime ho Q. Skonštruujeme nový program v jazyku L, nazvime ho S, nasledovne: O vstupom programu S je syntakticky správny program W v jazyku L Q program S prečíta W a vytvorí kópiu W O 5 aktivuje program Q so vstupom (W, W) (volaním Q ako procedúry) O výpočet Q na vstupe (W, W) skončí (z predpokladu o vlastnostiach Q) a vráti S odpoveď ("Áno" alebo "Nie"). O ak Q skončí s odpoveďou "Áno", tak S vstúpi do nekonečného cyklu (jeho výpočet sa lezastaví) © ak Q skončíš odpoveďou "Nie", tak S dá na výstup "Áno". 20 / 28 Metóda diagonalizácie Nerozhodnuteľnosť problému zastavenia - spor Z konštruckie programu S je zrejmé, že S sa pre každý vstup W zastaví (s odpoveďou "Áno") alebo jeho výpočet cyklí donekonečna. Uvážme výpočet S na vstupe W = S. S aktivuje program Q na vstupe (S, S) (bod 3). Podľa predpokladu Q zastaví. Sú dve možnosti: O Q skončíš odpoveďou "Anc" (tj. áno, program S sa na vstupe S zastaví); v takomto prípade ale S vstúpi do nekonečného cyklu. Dostávame spor. O Q skončíš odpoveďou "Nie" (tj. nie, program S sa na vstupe S nezastaví); v takomto prípade ale S dá odpverf "Áno". Opäť dostávame spor. 21 / 28 Metóda diagonalizácie Metóda diagonalizácie • Georg Cantor • obecná metóda, postavená na princípe rozdielnych kardinalít 9 dôkaz, že reálnych čísel je viac ako racionálnych; dolné odhady zložitosti problémov, ... 22 / 28 I Čiastočne rozhodnutelné problémy a stupne nerozhodnuteľnosti Konečné certifikáty pre nerozhodnuteľné problémy Analógia s NP-úplnými problémami. V prípade nerozhodnuteľných problémov požadujeme od certifikátov len konečnosť a existenciu algoritmu ktorý overí, či daný reťazec je certifikátom. PKP certifikátom odpovede "Áno" je konkrétna, konečná postupnosť indexov; ľahko overíme, či daná postupnosť indexov má požadovanú vlastnosť problém zastavenia certifikátom je samotný konečný výpočet; jednoducho overíme, či daná postupnosť krokov je korektným výpočtom programu na vstupe. hadové domino certifikátom je postupnosť dlaždíc a spôsob ich skladania domino certikát existuje pre odpoveď nie. Certifikátom je konečná plocha E. Pretože E je konečný a počet typov dlaždíc je tiež konečný, dokážeme overiť, že E sa nedá pokryť (preveríme všetky možnosti). I Čiastočne rozhodnutelné problémy a stupne nerozhodnuteľnosti Čiastočne rozhodnutelné problémy Všetky predchádzajúce problémy mali certifikát přejeden typ odpovede; hovoríme o tzv. jednosmernom cerfikáte. Definícia Nerozhodnutelne problémy, ktoré majú jednosmerný certifikát, sa nazývajú čiastočne rozhodnutelné. Čiastočne rozhodnutelné problémy majú algoritmus, ktorý je korektný pre jeden typ vstupných inštancií (tj. buď pre vstupy s odpoveďou "Áno", alebo pre vstupy s odpoveďou "Nie"). Algoritmus systematicky overuje všetky konečné reťazce, či sú certifikátom daného vstupu. Čiastočne rozhodnutelné problémy a stupne nerozhodnuteľnosti Dvojsmerné certifikáty • môže nastať situácia, keď pre daný problém máme certifikát ako pre odpoveď "Áno", tak aj (iný) certifikát pre odpoveď "Nie" (hovoríme o tzv. dvojcestnom certifikáte)? • príklad: problém Hamiltonovského cyklu. Certifikátom pre "Áno" vstup je permutácia vcholov (jednoducho overíme, či tvorí Hamiltonovský cyklus). Certifikátom pre "Nie" vstup sú všetky permutácie vrcholov (jednoducho overíme, že žiadna permutácia netvorí Hamiltonovský cyklus). Fakt Ak problém má dvojcestný certifikát, tak je rozhodnutelný. Algoritmus systematicky a striedavo overuje všetky konečné reťazce či sú certifikátom pre daný vstup. Konečnosť je zaručená, pretože každý vstup má svoj certifikát. Čiastočne rozhodnutelné problémy a stupne nerozhodnuteľnosti Ešte ťažšie problémy? • všetky čiastočne rozhodnutelné problémy sú vzájomne redukovatelne (analógia s NP-úplnými problémami, tkroé sú polynomiálně ekvivalentne) • existujú problémy, ktoré sú ťažšie než NP-úplné; platí analógia aj pre čiastočne rozhodnutelné problémy? problém verifikácie existuje redukcia problému zastavenia na problém verifikácie; opačná redukcia ??? úplný problém zastavenia (je výpočet programu konečný pre všetky vstupné inštancie?) Existuje redukcia problému zastavenia na úplný problém zastavenia; opačná redukcia ??? Problém verifikácie ani úplný problém zastavenia nemajú certifikáty I Čiastočne rozhodnutelné problémy a stupne nerozhodnuteľnosti Stupne nerozhodnuteľnosti • analogicky ako rozhodnutelné problémy môžeme zoskupiť do rôznych zložitostných tried, tak aj nerozhodnutelne problémy tvoria úrovne podľa stupňa nerozhodnuteľnosti • každá úroveň obsahuje problémy, ktoré sú ešte ťažšie než problémy predchádzajúcej úrovne • prvé dve úrovne hierarchie tvoria čiastočne rozhodnutelné a nerozhodnutelne problémy • ďalšie úrovne označujeme súhrnne ako vysoko nerozhodnutelne problémy I Čiastočne rozhodnutelné problémy a stupne nerozhodnuteľnosti Vysoko nerozhodnuteľné problémy - príklad modifikácia problému domina kde požadujeme, aby v nekonečnom pokrytí bola vopred specifikovaná dlaždica použitá nekonečne veľa krát 28 / 28