Rozhodnutelné a nerozhodnutelné problémy. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna / 49

Podobné dokumenty
Z. Sawa (VŠB-TUO) Teoretická informatika 11. prosince / 63

Teoretická informatika průběh výuky v semestru 1

Teoretická informatika průběh výuky v semestru 1

Složitost Filip Hlásek

NP-úplnost problému SAT

Třída PTIME a třída NPTIME. NP-úplnost.

(viztakéslidyktétopřednášce...) Poznámka. Neudělali jsme vše tak podrobně, jak je to v zápisu.

Třída PTIME a třída NPTIME. NP-úplnost.

Fakulta informačních technologií. Teoretická informatika

Postův korespondenční problém. Meze rozhodnutelnosti 2 p.1/13

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace

Výroková a predikátová logika - XIII

Algoritmy. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 15. dubna / 39

3. Třídy P a NP. Model výpočtu: Turingův stroj Rozhodovací problémy: třídy P a NP Optimalizační problémy: třídy PO a NPO MI-PAA

Automaty a gramatiky(bi-aag) Motivace. 1. Základní pojmy. 2 domácí úkoly po 6 bodech 3 testy za bodů celkem 40 bodů

11 VYPOČITATELNOST A VÝPOČTOVÁ SLOŽITOST

Algoritmy a výpočetní složitost

Algoritmus. Přesné znění definice algoritmu zní: Algoritmus je procedura proveditelná Turingovým strojem.

Regulární výrazy. Definice Množina regulárních výrazů nad abecedou Σ, označovaná RE(Σ), je definována induktivně takto:

Definice 7.2. Nejmenší přirozené číslo k, pro které je graf G k-obarvitelný, se nazývá chromatické číslo (barevnost) grafu G a značí se χ(g).

Třídy složitosti P a NP, NP-úplnost

PŘÍJMENÍ a JMÉNO: Login studenta: DATUM:

Výpočetní složitost I

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Složitost. Teoretická informatika Tomáš Foltýnek

Výroková a predikátová logika - XII

Formální jazyky a gramatiky Teorie programovacích jazyků

setup() { I = 0; } loop() { I = I + 1; }

ZÁKLADY PROGRAMOVÁNÍ. Mgr. Vladislav BEDNÁŘ , 5.1 a 5.2 8/14

Dynamické programování

Architektury počítačů a procesorů

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je

Definice 9.4. Nedeterministický algoritmus se v některých krocích může libovolně rozhodnout pro některé z několika možných různých pokračování.

Vlastnosti regulárních jazyků

Bezkontextové jazyky 2/3. Bezkontextové jazyky 2 p.1/27

Logika. 6. Axiomatický systém výrokové logiky

Princip funkce počítače

Formální jazyky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 2. března / 32

Naproti tomu gramatika je vlastně soupis pravidel, jak

TGH12 - Problém za milion dolarů

Bezkontextové gramatiky. Z. Sawa (VŠB-TUO) Úvod do teoretické informatiky 6. května / 49

Paralelní programování

Turingovy stroje. Teoretická informatika Tomáš Foltýnek

Týden 11. Přednáška. Teoretická informatika průběh výuky v semestru 1. Nejprve jsme dokončili témata zapsaná u minulé přednášky.

1 Nejkratší cesta grafem

Matematická logika. Miroslav Kolařík

AUTOMATY A GRAMATIKY

Algoritmus pro hledání nejkratší cesty orientovaným grafem

Výroková a predikátová logika - III

10. Složitost a výkon

Množinu všech slov nad abecedou Σ značíme Σ * Množinu všech neprázdných slov Σ + Jazyk nad abecedou Σ je libovolná množina slov nad Σ

Programovací jazyk Pascal

10. Techniky formální verifikace a validace

1 Linearní prostory nad komplexními čísly

Z. Sawa (VŠB-TUO) Teoretická informatika 5. listopadu / 43

Základy algoritmizace

Vyhledávání v textu. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Strojový kód. Instrukce počítače

/1: Teoretická informatika(ti) přednáška 4

ALGORITMY A DATOVÉ STRUKTURY

Problém obchodního cestujícího(tsp) Vstup: Množina n měst a vzdálenosti mezi nimi. Výstup: Nejkratší okružní cesta procházející všemi městy.

PROGRAMOVACÍ JAZYKY A PŘEKLADAČE LL SYNTAKTICKÁ ANALÝZA DOKONČENÍ, IMPLEMENTACE.

Výpočetní složitost algoritmů

Od Turingových strojů k P=NP

Principy indukce a rekursivní algoritmy

1 Lineární prostory a podprostory

Algoritmy a výpočetní složitost

YZTI - poznámky ke složitosti

Bezkontextové jazyky. Bezkontextové jazyky 1 p.1/39

Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Doporučené příklady k Teorii množin, LS 2018/2019

Složitost algoritmů. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava

Program a životní cyklus programu

Algoritmizace. Jiří Vyskočil, Marko Genyg-Berezovskyj 2010

Matematická analýza pro informatiky I. Limita funkce

Algoritmizace a programování

Výroková logika. Teoretická informatika Tomáš Foltýnek

Vektorové podprostory, lineární nezávislost, báze, dimenze a souřadnice

Úvod do programovacích jazyků (Java)

i=1 Přímka a úsečka. Body, které leží na přímce procházející body a a b můžeme zapsat pomocí parametrické rovnice

Úvod do informatiky. Miroslav Kolařík

Výroková a predikátová logika - V

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Funkce, elementární funkce.

Týden 14. Přednáška. Teoretická informatika průběh výuky v semestru 1. PSPACE, NPSPACE, PSPACE-úplnost

Pumping lemma - podstata problému. Automaty a gramatiky(bi-aag) Pumping lemma - problem resolution. Pumping lemma - podstata problému

= je prostý orientovaný graf., formálně c ( u, v) 0. dva speciální uzly: zdrojový uzel s a cílový uzel t. Dále budeme bez

4. NP-úplné (NPC) a NP-těžké (NPH) problémy

Úvod do teoretické informatiky(2017/2018) cvičení 11 1

Bezkontextové jazyky 3/3. Bezkontextové jazyky 3 p.1/27

Základní pojmy. Program: Algoritmus zapsaný v programovacím jazyce, který řeší nějaký konkrétní úkol. Jedná se o posloupnost instrukcí.

Automaty a gramatiky(bi-aag) Formální překlady. 5. Překladové konečné automaty. h(ε) = ε, h(xa) = h(x)h(a), x, x T, a T.

Konstrukce relace. Postupně konstruujeme na množině všech stavů Q relace i,

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Výroková a predikátová logika - XIV

Algoritmizace. 1. Úvod. Algoritmus

Výroková a predikátová logika - II

Implementace LL(1) překladů

8. Laboratoř: Aritmetika a řídicí struktury programu

Formální jazyky a automaty Petr Šimeček

Transkript:

Rozhodnutelné a nerozhodnutelné problémy M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 1/ 49

Co je to algoritmus? Algoritmus Algoritmus je mechanický postup skládající se z nějakých jednoduchých elementárních kroků, který pro nějaký zadaný vstup vyprodukuje nějaký výstup. Algoritmus může být zadán: slovním popisem v přirozeném jazyce pseudokódem jako počítačový program v nějakém programovacím jazyce jako hardwarový obvod... Algoritmy slouží k řešení různých problémů. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 2/ 49

Problémy Problém V zadání problému musí být určeno: co je množinou možných vstupů co je množinou možných výstupů jakýjevztahmezivstupyavýstupy vstupy výstupy M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 3/ 49

Příklady problémů Problém Třídění Vstup:Sekvenceprvkůa 1,a 2,...,a n. Výstup:Prvkysekvencea 1,a 2,...,a n seřazenéodnejmenšíhopo největší. Příklad: Vstup:8,13,3,10,1,4 Výstup:1,3,4,8,10,13 Poznámka: Konkrétní vstup nějakého problému se nazývá instance problému. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 4/ 49

Příklady problému Problém Hledánínejkratšícestyv(neorientovaném)grafu Vstup:NeorientovanýgrafG=(V,E)sohodnocenímhran,a dvojicevrcholůu,v V. Výstup:Nejkratšícestazvrcholuudovrcholuv. Příklad: u 12 9 14 7 13 10 12 17 11 v 10 11 6 9 10 8 M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 5/ 49

Další příklady problémů Problém Prvočíselnost Vstup: Přirozené číslo n. Výstup: Ano pokud je n prvočíslo, Ne v opačném případě. Poznámka:Přirozenéčíslonjeprvočíslo,pokudjevětšínež1aje dělitelnébezezbytkupouzečísly1an. Prvníchněkolikprvočísel:2,3,5,7,11,13,17,19,23,29,31,... M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 6/ 49

Rozhodovací problémy Situace, kdy množina výstupů je {Ano, Ne} je poměrně častá. Takovým problémům se říká rozhodovací problémy. Rozhodovací problémy většinou specifikujeme tak, že místo popisu toho, co je výstupem, uvedeme otázku. Příklad: Problém Prvočíselnost Vstup: Přirozené číslo n. Otázka: Je n prvočíslo? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 7/ 49

Optimalizační problémy Dalším speciálním případem jsou tzv. optimalizační problémy. Optimalizační problém je problém, kde je úkolem vybrat z nějaké množiny přípustných řešení takové řešení, které je v nějakém ohledu optimální. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 8/ 49

Optimalizační problémy Dalším speciálním případem jsou tzv. optimalizační problémy. Optimalizační problém je problém, kde je úkolem vybrat z nějaké množiny přípustných řešení takové řešení, které je v nějakém ohledu optimální. Příklad:Vproblémy Hledánínejkratšícestyvgrafu jemnožinavšech přípustných řešení tvořena všemi cestami z vrcholu u do vrcholu v. Kritériem, podle kterého cesty hodnotíme, je délka cesty. 12 9 7 12 17 14 u v 13 10 11 10 11 6 9 10 8 M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 8/ 49

Řešení problémů Řešení problému Algoritmus korektně řeší daný problém, když: 1 Se pro libovolný vstup daného problému(libovolnou vstupní instanci) po konečném počtu kroků zastaví. 2 Vyprodukuje výstup z množiny možných výstupů, který vyhovuje podmínkám uvedeným v zadání problému. Pro jeden problém může existovat celá řada algoritmů, které jej korektně řeší. Poznámka: Množina vstupních instancí bývá typicky nekonečná. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 9/ 49

Kódování vstupu a výstupu Většinou předpokládáme, že vstupy i výstupy jsou kódovány jako slova v nějaké abecedě Σ. Příklad:Napříkladuproblému Třídění bychommohlizvolitjako abeceduσ={0,1,2,3,4,5,6,7,8,9,,}. Vstupem by pak mohlo být například slovo 826,13,3901,101,128,562 a výstupem slovo 13,101,128,562,826,3901 M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 10/ 49

Kódování vstupu a výstupu Poznámka:NekaždéslovozeΣ musíreprezentovatnějakývstup. Kódování bychom ale měli zvolit tak, abychom byli schopni snadno poznat ta slova, která nějaký vstup reprezentují. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 11/ 49

Kódování vstupu a výstupu Příklad: Pokud je vstupem nějakého problému například graf, můžeme ho reprezentovat jako seznam vrcholů a hran: Například následující graf 1 2 5 3 4 můžeme reprezentovat jako slovo (1,2,3,4,5),((1,2),(2,4),(4,3),(3,1),(1,1),(2,5),(4,5),(4,1)) vabeceděσ={0,1,2,3,4,5,6,7,8,9,,,(,)}. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 12/ 49

Kódování vstupu a výstupu Můžeme se omezit na případ, kdy jsou vstupy i výstupy kódovány jako slovavabecedě {0,1}(tj.jakosekvencebitů). Symboly jakékoli jiné abecedy lze reprezentovat jako sekvence bitů. Příklad:Abeceda {a,b,c,d,e,f,g} a 001 b 010 c 011 d 100 e 101 f 110 g 111 Slovo defb můžeme reprezentovat jako 100101110010. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 13/ 49

Funkce realizovaná algoritmem Můžeme tedy říct, že každý algoritmus realizuje výpočet hodnot nějaké funkce f:σ Σ kdeσ={0,1}. Alternativně se také na algoritmy můžeme dívat tak, že realizují výpočet nějaké funkce f: N N kde N={0,1,2,3,...}jemnožinapřirozenýchčísel,neboťnakaždou sekvenci bitů se můžeme dívat jako na zápis čísla v binární soustavě. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 14/ 49

Funkce realizovaná algoritmem Funkce f:σ Σ resp. f: N N realizovaná nějakým algoritmem nemusí být nutně totální, může být částečná. Hodnota f(x) není definovaná například v případě, že se daný algoritmus pro vstup x nikdy nezastaví. Poznámka:Funkcef:A Bjetotální,jestližehodnotaf(x)je definovanáprolibovolnéx A,ačástečná,jestližeproněkteráx A nemusí být hodnota f(x) definovaná. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 15/ 49

Algoritmy a problémy Stejnějakonaalgoritmyinaproblémysemůžemedívatjakonafunkce typu: f:σ Σ resp. f: N N Jestližealgoritmusrealizujenějakoufunkcif,řekneme,žetento algoritmus řeší problém popsaný funkcí f, jestliže se pro libovolný vstup x zastavístím,že f(x)=f (x) M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 16/ 49

Rozhodovací problémy a jazyky Na rozhodovací problémy můžeme pohlížet jako na jazyky. Jazyk odpovídající danému rozhodovacímu problému je množina těch slov zeσ,kteráreprezentujítyvstupy,proněžjeodpověďano. Příklad:JazykLtvořenýtěmislovyze {0,1},kterájsoubinárním zápisem nějakého prvočísla. Například101 L,ale110 L. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 17/ 49

Rozhodovací problémy Často se při zkoumání algoritmů a problému omezujeme jen na rozhodovací problémy. Není to však na úkor obecnosti, neboť libovolný obecný problém možné vhodným způsobem přeformulovat jako rozhodovací problém, s tím, že když najdeme algoritmus, který by řešil tento rozhodovací problém, tak bychom snadno sestrojili algoritmus, který by řešil původní problém, a naopak. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 18/ 49

Rozhodovací problémy Pokud například máme problém P, kde: vstupyjsouprvkyznějakémnožinyx výstupyjsouslovaz{0,1} můžeme tento problém přeformulovat jako následující rozhodovací problém: Problém Vstup:Prvekx Xačíslok. Otázka:Kdyžzjevýstup,kterýodpovídávstupuxproblémuP,má k-týbitslovazhodnotu1? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 19/ 49

Algoritmicky řešitelné problémy Předpokládejme, že máme dán nějaký problém P. Jestliže existuje nějaký algoritmus, který řeší problém P, pak říkáme, že problém P je algoritmicky řešitelný. Jestliže P je rozhodovací problém a jestliže existuje nějaký algoritmus, který problém P řeší, pak říkáme, že problém P je rozhodnutelný. Když chceme ukázat, že problém P je algoritmicky řešitelný, stačí ukázat nějaký algoritmus, který ho řeší(a případně ukázat, že daný algoritmus problém P skutečně řeší). M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 20/ 49

Algoritmicky řešitelné problémy U mnohých problémů je na první pohled zřejmé, že jsou algoritmicky řešitelné, jako třeba: Třídění Hledání nejkratší cesty v grafu Prvočíselnost kde stačí probrat všechny možnosti(kterých je ve všech těchto případech konečně mnoho), i když takový triviální algoritmus založený na řešení hrubou silou nemusí být zrovna efektivní. Na druhou stranu existuje celá řada problémů, u kterých to tak jasné není. Najít algoritmus a dokázat, že řeší daný problém, může být velmi netriviální úkol. Algoritmus, který by řešil daný problém, nemusí vůbec existovat. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 21/ 49

Nutnostupřesněnípojmu algoritmus Dosavadní definice pojmu algoritmus byla poněkud vágní. Pokud bychom pro nějaký problém chtěli ukázat, že neexistuje algoritmus, který by daný problém řešil, tak by to s takovouto neurčitou definicí pojmu algoritmus asi nešlo. Intuitivně chápeme, co by měl mít algoritmus za vlastnosti: Měl by se skládat z jednoduchých kroků, které je možno vykonávat mechanicky,bezporozuměníproblému. Objekty, se kterými algoritmus pracuje, i prováděné operace by měly být konečné. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 22/ 49

Algoritmus realizovaný počítačem Například program v libovolném programovacím jazyce dané vlastnosti zcela jistě má. Ať už je program napsán v jakémkoliv programovacím jazyce, jsou jeho instrukce nakonec prováděny na hardwaru nějakého konkrétního počítače na úrovni instrukcí procesoru. Je tedy jasné, že každý program v každém programovacím jazyce bychom mohli zapsat jako program tvořený pouze instrukcemi strojového kódu nějakého procesoru. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 23/ 49

Činnost počítače Typická architektura naprosté většiny počítačů vypadá následovně: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IP flags MEM R1 R2 R3 R4 R5 R6 R7 R8 CPU Počítač má paměť skládající se z velkého množství paměťových buněk. Každá buňka může obsahovat číslo určité velikosti, typicky 1 byte (8bitů),tj.číslovrozsahu0..255. Buňky jsou očíslovány. Číslo buňky se nazývá její adresa. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 24/ 49

Činnost počítače Typická architektura naprosté většiny počítačů vypadá následovně: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IP flags MEM R1 R2 R3 R4 R5 R6 R7 R8 CPU Instrukce jsou uloženy v paměti(každá instrukce má svůj číselný kód) a jsou sekvenčně vykonávány procesorem. Procesor udržuje tzv. čítač instrukcí IP, který obsahuje adresu aktuálně prováděné instrukce. Procesor načte instrukci z adresy určené IP, zvětší IP o délku načtené instrukce a provede danou instrukci. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 24/ 49

Činnost počítače Typická architektura naprosté většiny počítačů vypadá následovně: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 IP flags MEM R1 R2 R3 R4 R5 R6 R7 R8 CPU Procesor obsahuje několik registrů pevné délky(např. 32 nebo 64bitů). Většina operací je prováděna na registrech. Procesor obsahuje příznaky(flags), které umožňují testovat výsledek poslední operace(např. přetečení, jestli je výsledek nula apod.) M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 24/ 49

Činnost počítače Typické instrukce: Načtení obsahu paměťové buňky(resp. několika po sobě jdoucích buněk) do některého registru(load). Uložení obsahu registru do některé paměťové buňky(resp. několika po sobě jdoucích buněk)(store). Poznámka: Adresa buňky je buď přímá(tj. je přímo součástí instrukce) nebo nepřímá(uložená v některém registru, případně spočítaná z obsahu jednoho nebo několika registrů). Načtení obsahu jednoho registru do jiného registru(mov). Aritmetické instrukce(add, SUB, MUL, DIV, NEG, CMP, INC, DEC,...). Logickéinstrukce(AND,OR,XOR,NOT,...). Bitovéposunyarotace(SHL,SHR,...) M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 25/ 49

Činnost počítače Typické instrukce(pokračování): Nepodmíněný skok(jmp). Poznámka: Adresa skoku může být přímá nebo nepřímá. Podmíněnéskoky(JZERO,JGTZ,...). Volání podprogramů(call, RET). Různé speciální instrukce práce se vstupem a výstupem, obsluha přerušení, mody činnosti procesoru, řízení přístupu do paměti (stránkování) apod. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 26/ 49

Činnost počítače Příklad: Instrukce zapsaná ve vyšším programovacím jazyce jako x=y+2 může být realizována následující sekvencí instrukcí určitého (hypotetického) procesoru: LOAD 0x001b7c42,R5 ADD $2,R5 STORE R5,0x001b7c38 Poznámka: Předpokládáme, že proměnná x je uložena na adrese 0x001b7c38 a proměnná y na adrese 0x001b7c42. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 27/ 49

Stroj RAM Stroj RAM(Random Access Machine) je idealizovaný model počítače. Rozdíly oproti skutečnému počítači: Velikost paměti není omezena(adresa může být libovolné přirozené číslo). Velikost obsahu jednotlivých buněk není omezena(buňka může obsahovat libovolné celé číslo). Čte data sekvenčně ze vstupu, který je tvořen sekvencí celých čísel. Ze vstupu lze pouze číst. Zapisuje data sekvenčně na výstup, který je tvořen sekvencí celých čísel. Na výstup je možné pouze zapisovat. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 28/ 49

Stroj RAM a Turingův stroj Každý program v každém jazyce by mohl být realizován jako program stroje RAM. Není složité(i když je to trochu pracné) si rozmyslet, že libovolný algoritmus prováděný strojem RAM je možné realizovat také Turingovým strojem. Turingův stroj je schopen realizovat libovolný algoritmus, který by bylo možné zapsat jako program v nějakém programovacím jazyce. Poznámka: Turingův stroj pracuje se slovy nad nějakou abecedou, zatímco stroj RAM s čísly. Čísla ale můžeme zapisovat jako sekvence symbolů a naopak symboly nějaké abecedy můžeme zapisovat jako čísla. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 29/ 49

Churchova-Turingova teze Churchova-Turingova teze Každý algoritmus je možné realizovat nějakým Turingovým strojem. Nenítověta,kteroubybylomožnodokázatvmatematickémsmyslu není formálně definováno, co je to algoritmus. Tezi formulovali nezávisle na sobě v polovině 30. let 20. století Alan Turing a Alonzo Church. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 30/ 49

Churchova-Turingova teze Ve stejné době bylo navrženo několik různých formalismů zachycujících pojem algoritmus: Turingovy stroje(alan Turing) lambda kalkulus(alonzo Church) rekurzivní funkce(stephan Kleene) produkční systémy(emil Post)... Dále můžeme uvést: Libovolný(obecný) programovací jazyk. Všechny tyto modely jsou ekvivalentní z hlediska algoritmů, které jsou schopny realizovat. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 31/ 49

Algoritmicky neřešitelné problémy Problém, který není algoritmicky řešitelný je algoritmicky neřešitelný. Rozhodovací problém, který není rozhodnutelný je nerozhodnutelný. Příklad: Následující problém zvaný Problém zastavení(halting problem) je nerozhodnutelný: Halting problem Vstup:PopisTuringovastrojeMaslovow. Otázka: Zastaví se stroj M po nějakém konečném počtu kroků, pokuddostanejakosvůjvstupslovow? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 32/ 49

Halting problem Alternativně bychom ho mohli formulovat třeba takto: Halting problem Vstup:ZdrojovýkódprogramuPvjazyceC,vstupnídatax. Otázka: Zastaví se program P po nějakém konečném počtu kroků, pokud dostane jako vstup data x? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 33/ 49

Halting problem Předpokládejme, že by existoval nějaký program, který by rozhodoval Halting problem. Mohli bychom tedy vytvořit podprogram H, deklarovaný jako kdeh(p,x)vrátí: boolean H(String kod, String vstup) truepokudseprogrampzastavíprovstupx, falsepokudseprogrampnezastavíprovstupx. Poznámka: Řekněme, že podprogram H(P, x) by vracel false v případě, že P není syntakticky správný kód programu. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 34/ 49

Halting problem S použitím podprogramu H bychom vytvořili program D, který bude provádět následující kroky: Načte svůj vstup do proměnné x typu String. Zavolá podprogram H(x, x). Pokud podprogram H vrátil true, skočí do nekonečné smyčky loop: goto loop Vpřípadě,žeHvrátilfalse,programDseukončí. Co udělá program D, pokud mu předložíme jako vstup jeho vlastní kód? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 35/ 49

Halting problem PokudDdostanejakovstupsvůjvlastníkód,taksebuďzastavínebo nezastaví. PokudseDzastaví,takH(D,D)vrátítrueaDskočídonekonečné smyčky. Spor! PokudseDnezastaví,takH(D,D)vrátífalseaDsezastaví.Spor! V obou případech dospějeme ke sporu a další možnost není. Nemůže tedy platit předpoklad, že H řeší Halting problem. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 36/ 49

Bonusový příklad V předchozím příkladě jsme měli případ, kdy program zpracovával svůj vlastní kód. To není nic neobvyklého, například překladač může překládat svůj vlastní kód. Uvažujme ale opačný případ: Chceme vytvořit program, který naopak svůj vlastní kód vydá jako výstup. Úkol: Napište program ve vašem oblíbeném programovacím jazyce, který vypíše(například na standardní výstup) svůj vlastní zdrojový kód, přičemž ale: Nesmí číst data ze žádného externího zdroje(disku, klávesnice apod.). Nesmí být prázdný. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 37/ 49

Bonusový příklad Idea řešení: Vypiš následující text dvakrát za sebou, podruhé ho uzavři do úvozovek: Vypiš následující text dvakrát za sebou, podruhé ho uzavři do úvozovek: M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 38/ 49

Bonusový příklad Tuto konstrukci je možné použít k alternativnímu důkazu nerozhodnutelnosti Halting problému: Předpokládáme, že H(p, x) řešící HP existuje. Vytvoříme program, který: Do proměnné p si nageneruje svůj vlastní kód. ZavoláH(p,x),kdexjejehovlastnívstup. Pokud H(p, x) vrátí true, skočí do nekonečné smyčky, v opačném případě se zastaví. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 39/ 49

Další nerozhodnutelné problémy S jedním příkladem nerozhodnutelného problému už jsme se setkali: Problém Vstup:BezkontextovégramatikyG 1 ag 2. Otázka:JeL(G 1 )=L(G 2 )? případně Problém Vstup: Bezkontextová gramatika G generující jazyk nad abecedou Σ. Otázka:JeL(G)=Σ? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 40/ 49

Redukce mezi problémy Pokud máme o nějakém(rozhodovacím) problému dokázáno, že je nerozhodnutelný, můžeme ukázat nerozhodnutelnost dalších problémů pomocí tzv. redukcí. Řekněme, že A a B jsou rozhodovací problémy. Redukce problému A na problém B je algoritmus P, který: Dostane jako vstup instanci problému A(označme ji x). Jako svůj výstup(označme jej P(x)) vyprodukuje instanci problému B. Platí x A P(x) B tj.provstupxjevproblémuaodpověďanoprávětehdy,kdyžpro vstupp(x)jevproblémubodpověďano. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 41/ 49

Redukce mezi problémy Řekněme, že existuje redukce P problému A na problém B. Pokud by problém B byl rozhodnutelný, pak i problém A je rozhodnutelný. ŘešeníproblémuAprovstupx: ZavolámePsevstupemx,vrátínámhodnotuP(x). Zavoláme algoritmus řešící problém B se vstupem P(x). Hodnotu, kterou nám vrátí vypíšeme jako výsledek. Jezřejmé,žepokudAjenerozhodnutelný,takBnemůžebýt rozhodnutelný. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 42/ 49

Další nerozhodnutelné problémy Redukcí z Halting problému se dá ukázat nerozhodnutelnost celé řady problémů, které se týkají ověřování chování programů: Vydá daný program pro nějaký vstup odpověď Ano? Zastaví se daný program pro libovolný vstup? Dávají dva dané programy pro stejné vstupy stejný výstup?... M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 43/ 49

Další nerozhodnutelné problémy Vstupem je množina typů kachliček, jako třeba: Otázka je, zda je možné použitím daných typů kachliček pokrýt každou libovolně velkou konečnou plochu tak, aby všechny kachličky spolu sousedily stejnými barvami. Poznámka: Můžeme předpokládat, že máme v zásobě neomezené množství kachliček všech typů. Kachličky není dovoleno otáčet. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 44/ 49

Další nerozhodnutelné problémy M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 45/ 49

Další nerozhodnutelné problémy Vstupem je množina typů kartiček, jako třeba: abb a bab baba aba bbab aa ab aa a Otázka je, zda je možné z těchto typů kartiček vytvořit neprázdnou konečnou posloupnost, kde zřetězením slov nahoře i dole vznikne totéž slovo. Každý typ kartičky je možné používat opakovaně. a abb abb baba abb aba aa bbab bbab aa bbab a Nahoře i dole vznikne slovo aabbabbbabaabbaba. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 46/ 49

Další nerozhodnutelné problémy Redukcí z předchozího problému se dá snadno ukázat nerozhodnutelnost některých dalších problémů z oblasti bezkontextových gramatik: Problém Vstup:BezkontextovégramatikyG 1 ag 2. Otázka:JeL(G 1 ) L(G 2 )=? Problém Vstup: Bezkontextová gramatika G. Otázka: Je G nejednoznačná? M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 47/ 49

Další nerozhodnutelné problémy Problém Vstup: Uzavřená aritmetická formule vytvořená ze symbolů +,, =,,,,,,(,),proměnnýchaceločíselnýchkonstant. Otázka: Je tato formule pravdivá v oboru přirozených čísel? Příklad vstupu: x y z((x y=z) (y+5=x)) Poznámka: Úzce souvisí s Gödelovou větou o neúplnosti. M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 48/ 49

Rozhodnutelný problém Následující na první pohled velice podobný problém je rozhodnutelný: Problém Vstup: Uzavřená aritmetická formule vytvořená ze symbolů +, =,,,,,,(,),proměnnýchaceločíselnýchkonstant. Otázka: Je tato formule pravdivá v oboru přirozených čísel? Příklad vstupu: x y z((x+y=z) (y+5=x)) M. Kot, Z. Sawa (VŠB-TU Ostrava) Úvod do teoretické informatiky 24. dubna 2007 49/ 49