Neřešitelnost a nerozhodnutelnost

Rozměr: px
Začít zobrazení ze stránky:

Download "Neřešitelnost a nerozhodnutelnost"

Transkript

1 Neřešitelnost a nerozhodnutelnost Studijní materiál, M.Č. 0. Úvod 0.1. V tomto textu se pokusíme ukázat, že řada problémů, které jsou na první pohled velice jednoduché, není principiálně možné řešit pomocí algoritmů. Pokusíme se ukázat argument, že neexistuje algoritmus, který by danou úlohu vždy uspokojivě vyřešil. Prokázat, že nějaký problém algoritmicky řešitelný je, lze například tak, že napíšeme příslušný program. Důkaz neexistence je však mnohem obtížnější; není totiž možné přímo projít všechny možné programy (těch je samozřejmě nekonečně mnoho), a ověřit, že každý z nich naši úlohu aspoň v jednom případě vyřeší chybně. Proto budeme při našich úvahách většinou postupovat tak, že z předpokladu, že nějaký problém je algoritmicky řešitelný, odvodíme logický rozpor. Ukážeme tak, že předpoklad řešitelnosti daného problému je díky tomuto rozporu neudržitelný a učiníme závěr, že tento problém není možné algoritmicky řešit Churchova tese. Pracujeme s intuitivním výrazem, že nějaký problém je (ne)řešitelný algoritmicky. To však není přesné: přijmeme-li jako výpočetní model Turingův stroj, ukážeme pouze, že neexistuje žádný Turinguv stroj, který by měl požadované vlastnosti. Pak už se implicitně odvoláváme na tzv. Churchovu tesi, která říká, že principiálně všechny rozumné modely algoritmu jsou Turingovu stroji ekvivalentní. Tato tese je filosofická; dosud se však nepodařilo sestavit rozumný model algoritmu, který by uměl řešit i problémy, které nelze řešit pomocí Turingových strojů. Není znám žádný programovací jazyk, kterým by bylo možno řešit problémy, které nejsou řešitelné Turingovými stroji V této kapitole používáme slovo efektivnost jako synonymum pro algoritmickou řešitelnost. Nebudeme zkoumat, zdali některý problém lze vyřešit algoritmem rychle či pomalu; jediným kriteriem je, zdali zkoumaný problém lze vůbec pomocí algoritmu (Turingova stroje) řešit, či zda to principiálně není možné Implicitně přijmeme předpoklad potenciální neomezenosti, tedy, že ne- 1

2 budeme uvažovat žádné omezení na velikost zpracovávaných dat a možnou délku výpočtu programu. Lze jistě namítat, že v současné době mají počítače jen omezenou kapacitu paměti a omezený výpočetní čas, a tak že potenciálně libovolně velký problém nelze technicky zvládnout (i když z teoretického hlediska to možné je). Přijetí předpokladu, že počítač s potenciálně neomezenou pamětí a neomezeným výpočetním časem je možný (což odpovídá přijetí výpočetního modelu Turingových strojů, na které neklademe žádná omezení na délku pásky či délku výpočtu), nám umožní vybudovat myšlenkový aparát, pomocí kterého ukážeme, že řada problému je principiálně neřešitelných, a to i v situaci, kdybychom měli k disposici počítač se sebevětší pamětí či sebelepším výkonem. 1. Algoritmy a funkce 1.1. Zápisem f : N N míníme, že f(x) 1 je funkce, jejímž argumentem je přirozené číslo, které funkce f nějak přetransformuje na jiné přirozené číslo, obvykle označované y (přicemž pro některá x nemusí být hodnota f(x) definována). Odtud také zápis f(x) = y. Na funkci můžeme nahlížet jako na černou skříňku, která dostane na vstup číslo x, chvíli nějak počítá a pak vydá výstup y Poznámka. Čtenář je možná zvyklý pracovat spíše s funkcemi typu f : R R. S reálnými čísly je však velký problém: zatímco přirozených či racionálních čísel je pouze spočetně mnoho, reálných je nespočetně. Algoritmy pracují ne s čísly, nýbrž s jejich popisy. Popisem rozumíme nějakou konečně dlouhou posloupnost symbolů konečně dlouhých posloupností symbolů je však též jen spočetně mnoho. Reálná čísla jsou proto pro nás příliš složité objekty; většinu z nich nedokážeme žádným konečným způsobem vůbec popsat. Proto budeme pracovat výhradně s funkcemi, které počítají s přirozenými nebo racionálními čísly. 1 Někdy bývají takové funkce nazývány posloupnosti přirozených čísel. V tomto textu však budeme užívat termínu funkce. 2

3 1.3. Abychom mohli nahlédnou dovnitř intuitivního výrazu, že funkce nějak počítá, je třeba zodpovědět dvě otázky: jak jsou zadána vstupní data x, jaký má být formát výstupu y a jak popsat algoritmus, podle kterého výpočet probíhá Jak popsat x a y. Přirozená čísla jsou nám přístupná prostřednictvím jejich popisů. Čísla obvykle popisujeme pomocí konečných posloupností (tzv. slov), jejichž prvky pocházejí z množiny konečně mnoha symbolů (tzv. abecedy). Tak je přirozené číslo přístupné člověku i (abstraktnímu) výpočetnímu stroji. Číslo tak muže být zadáno např. jako konečná posloupnost symbolů (slovo) z abecedy {0, 1} ve svém dvojkovém zápisu či z abecedy {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} ve svém desítkovém zápisu Jak popsat algoritmus. V případě mnoha funkcí dokážeme algoritmus výpočtu popsat velmi jednoduše. Je-li dána např. funkce f(x) = x 2, je možné jej intuitivně popsat třeba takto: napsat si číslo x (které je zapsané např. v desítkové soustavě jako slovo nad abecedou {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}) dvakrát pod sebe a vysvětlit princip násobení, stejně jako jsme se v první třídě učili násobit na papíře. Výstupem y pak bude to, co nám vyšlo na posledním řádku : Tento příklad ukázal, že na některé funkce a možná, že na většinu funkcí, se kterými se čtenář setkává lze nahlížet jako na algoritmy; vždyť i např. vzorečky, kterými se zapisují elementární funkce, lze chápat coby algoritmus, jak počítat y, je-li na vstupu dáno konkrétní x. V našem případě je naprosto přirozené, abychom za výpočetní model přijali Turingův stroj (nebo jeho ekvivalentní modely, jako např. rekursivně spočetné gramatiky, Random Access Machines či jiné). Veškeré závěry o neřešitelnosti problémů je pak třeba chápat v kontextu Churchovy tese (0.2.). 3

4 2. Kódování konečných posloupností přirozenými čísly 2.1. Představme si tento model algoritmu: algoritmus dostane na vstup data, která jsou zapsána jako slovo z nějaké konečné abecedy Σ. Výstup je taktéž ve formě slova z abecedy Σ. Snadno nahlédneme, že lze jednoduchým způsobem nalézt korespondenci (tzv. kódování) mezi slovy nad abecedou Σ a přirozenými čísly splňující jednoznačnost v tomto smyslu: 1. různým slovům odpovídají různá přirozená čísla a naopak, různým přirozeným číslům odpovídají různá slova, 2. ze zápisu slova lze efektivně (tj. algoritmicky) nalézt odpovídající přirozené číslo a naopak, z přirozeného čísla lze efektivně nalézt slovo, které je v něm zakódováno Uvažme jednoduchý příklad. Je-li σ slovo nad abecedou {0, 1}, pak jeho kódem je číslo n, jehož dvojkový zápis je 1σ (tj. konkatenace symbolu 1 a slova σ). To znamená, že kódování by odpovídalo tabulce atd Díky této možnosti kódování je možné tvrzení program dostane na vstup slovo z abecedy {0, 1} a jeho výstupem je slovo z abecedy {0, 1} nahradit tvrzením program dostane na vstup přirozené číslo a jeho výstupem je přirozené číslo. Na program tak lze nahlížet jako na jistou funkci f : N N Je snadné též nahlédnout, že podobně lze uvažovat i v případě abeced, které mají více než dva symboly; rovněž se snadno zkonstruuje efektivní kódování slov přirozenými čísly Někdy je výhodné na program nahlížet např. jako na funkci f : N 2 N, tedy jako na program, který dostává na vstup dva argumenty (což může 4

5 být třeba program, který dvě vstupní čísla sčítá). Není to žádné omezení; vzhledem k tomu, že de facto program pracuje se zápisy čísel, je lhostejno, zdali dostane na vstup dvě slova σ a τ nad abecedou {0, 1} nebo jedno slovo σ τ nad abecedou {0, 1, }. Mnohá tvrzení budeme formulovat pro funkce jedné proměnné; bude-li třeba, zobecníme je i na funkce více proměnných. Pokud nějaký vztah platí pro funkce jedné proměnné, obvykle není těžké zformulovat i příslušné zobecnění na funkce více proměnných, i když ne vždy tak explicitně učiníme. Symbolem f(x) označíme funkci, která má jeden argument (tedy f : N N), symbolem f(x 1, x 2 ) funkci, která má dva argumenty (f : N 2 N) atd. Pokud se jedná o funkce, které počítají programy (Turingovy stroje), budeme stejné značení používat i pro tyto programy Obdobně lze pracovat i s funkcemi, které počítají nad racionálními čísly, neboť racionální číslo lze popsat pomocí znaménka a dvojice přirozených čísel. Bez další formalisace snadno nahlédneme, že např. číslo je možné popsat posloupností symbolů nad abecedou {0, 1,, } , kde je symbol pro záporné číslo, 1001 je dvojkový zápis čísla 9, 1000 je dvojkový zápis čísla 8 a je oddělovač ( = 9 8 ) V dalším textu budeme pracovat jen s funkcemi typu f : N n N. Budeme považovat kódování vstupů a výstupů za dané a nebudeme se jím již dále zabývat. 3. Ne vždy se výpočet zastaví 3.1. Snadno si lze představit program, který by v pascalovském kódu mohl vypadat repeat until false. Tento program je po spuštení ponekud autistický počítá do nekonečna. To se může stát nejen tomuto programu, ale i v případě jiných výpočtů Donedávna byla například otevřená slavná otázka o platnosti Fermatovy věty: existuje čtveřice přirozených čísel a, b, c a n, kde a, b, c 1, n 3, 5

6 splňující a n + b n = c n? Jak je možné se pokusit tento problém vyřešit pomocí algoritmu? Třeba tak, že se budou postupně generovat všechny čtveřice přirozených čísel [a, b, c, n] s a, b, c 1, n 3, např. v pořadí [ ]; [ ], [ ], [ ], [ ]; [ ], [ ], [ ] atd., a pro každou se otestuje, zdali uvedená rovnost platí. 2 Výsledek je však nejistý: pokud taková čtveřice existuje (což nevíme), program skončí a dá na výstupu nalezenou čtveřici, zatímco pokud neexistuje, algoritmus bude počítat do nekonečna, tedy nikdy se nezastaví Poznámka. Fermatova věta je slavný problém. Pierre de Fermat ( 1665) si do svých zápisků udělal poznámku, že žádná přirozená čísla a, b, c 1, n 3 splňující rovnici a n + b n = c n neexistují a že našel hezký důkaz tohoto tvrzení, avšak okraj sešitu je příliš malý na to, aby jej zde zapsal. Více se v jeho pozůstalosti nenašlo. Tento problém trápil matematiky až do 90. let dvacátého století; důkaz neexistence těchto čísel dal až Wiles v roce Fermatova věta vstoupila do všeobecného povědomí. V díle HOMER 3 seriálu Simpsonovi se Homer Simpson propadl do trojrozměrného světa, kde kolem něj létala rovnost = Ta ovšem platí jen přibližně, shoda je pouze na devět číslic. V tomto díle kolem Homera létají i další zajímavé vztahy: např. P = NP, E = mc 2, Heisenbergova neurčitost a další Terminologie. Pokud se výpočet programu P nad vstupem x nezastaví, říkáme, že hodnota P (x) není definována, jinak také P (x) diverguje a píšeme P (x). Pokud naopak výpočet skončí (a na výstupu tedy bude nějaká 2 Všimněme si, že lze generovat postupně tyto čtveřice tak, že v uvedené posloupnosti se vyskytne každá čtveřice. Je to možné relisovat např. následujícím programem: (1) i := 6; (2) vygeneruj všechny čtveřice [a, b, c, n] s a, b, c 1 a n 3 takové, že a + b + c + n = i; (těch je jen konečně mnoho) (3) i := i + 1; (4) jdi na (2). V našem příkladu je čtveřice [ ] vygenerována řádkem (2) s i = 6, následující čtyři čtveřice řádkem (2) s i = 7 a následující tři čtveřice představují část výstupu řádku (2) s i = 8. 6

7 odpoveď y), pak říkáme, že P (x) konverguje a píšeme P (x). Pokud P (x) konverguje pro každé x, řekneme, že je totální Zápisem P (x) Q(x) se míní tvrzení: P (x) konverguje právě tehdy, když konverguje Q(x), a konvergujíli, potom se jejich hodnoty rovnají (tzv. podmíněná rovnost). Jinými slovy: buď jsou oba výrazy definovány a označují totéž číslo, anebo není definován ani jeden z nich Všimněme si též podstatné věci: jednu funkci lze počítat pomocí více programů. Například program program a program y := 2*x, y := 2*x y := x + x počítá tutéž funkci, vždy f(x) = 2x. Pokaždé je však program zapsán jinak; zápis programu představuje jinou posloupnost symbolů a formálně tedy jde o tři různé Turignovy stroje. Není těžké nahlédnout, že libovolnou funkci lze počítat pomocí nekonečně mnoha různých programů. Máme-li dva Turingovy stroje, které počítají funkce f a g, řekneme, že oba stroje počítají stejnou funkci, platí-li pro libovolné x f(x) g(x). 4. Kódování programů 4.1. Každý program je konečný objekt. Je-li napsán v nějakém programovacím jazyce, je jeho text konečně dlouhý. Taktéž Turingův stroj je konečný objekt: má konečnou abecedu, konečně mnoho stavů, konečně velkou tabulkou popsatelnou přechodovou funkci atd. Proto lze libovolný Turinguv stroj zapsat jako konečně dlouhou posloupnost symbolů z nějaké abecedy. A přesně podle idejí z kapitoly 2 lze posloupnosti popisující Turingovy stroje taktéž 7

8 efektivně kódovat pomocí přirozených čísel. Číslo, do kterého je zakódován Turingův stroj, nazveme Gödelovým číslem tohoto stroje Universální Turingův stroj 5.1. V praxi se často setkáváme s programy, které jako svá vstupní data dostávají zápisy jiných programů. Může jít o překladače, kompilátory, simulátory apod. Přesne takto pracuje universální Turinguv stroj U(e, x). Je-li e Gödelovým číslem nějakého Turingova stroje T, pak universální stroj U nejprve z čísla e rozkóduje slovo, které popisuje stroj T (tedy jeho abecedu, stavový prostor, přechodovou funkci atd.) a poté simuluje jeho výpočet nad vstupem x. Proto pro libovolné číslo x platí U(e, x) T (x). 6. Rekursivní a částečné rekursivní funkce 6.1 Zastavme se nyní nad pojmem funkce a způsobem jejího zadání detailněji. Funkci typu f : N N lze popsat jako jistou množinu F sestávající z dvojic přirozených čísel splňující, že neobsahuje žádné dvě dvojice [x 1, y 1 ], [x 2, y 2 ] s x 1 = x 2 a y 1 y 2. (Množině F se také někdy říká graf funkce f). Je-li [x, y] F, píšeme f(x) = y a říkáme: funkce f je pro vstup (argument) x definována a její funkční hodnota je y. Pokud pro dané x množina F neobsahuje žádnou dvojici tvaru [x, ], říkáme, že funkce f pro vstup (argument) x není definována. Definičním oborem funkce f rozumíme množinu dom(f) = {x : množina F obsahuje dvojici [x, ]}. Jestliže dom(f) = N, říkáme, že funkce f je totální. 3 Toto kódování musí splňovat podmínku, že každému Turingově stroji je jednoznečně přiřazeno přirozené číslo (tedy žádné dva různé Turingovy stroje nemají stejné Gödelovo číslo). Při konkrétní konstrukci kódování se však může stát, že některým přirozeným číslům nebude odpovídat žádný Turingův stroj principiálně v tom není žádný problém; těmto číslům stačí přiřadit např. nějaký triviální stroj (třeba takový, který vůbec nečte vstup a na výstup dává nulu). 8

9 6.2 Množina F může obsahovat nekonečně mnoho dvojic. Takovou nekonečnou množinu F nemůžeme napsat do konečné tabulky. Proto je přirozený jiný konečný popis množiny F : popíšeme algoritmus, který k danému x zkonstruuje y takové, že [x, y] F (z definice máme zaručeno, že existuje nanejvýš jedno takové y). Například: zápis y = x + 1 již dostatečně jasně popisuje algoritmus, který k danému x zkonstruuje y Otázkou je, zdali lze zkonstruovat algoritmus vždy, ať je množina F jakákoliv; uvidíme záhy, že to možné není Zavedeme proto několik užitečných pojmů. Všechny funkce, jejichž výpočet lze realisovat pomocí Turingova stroje, nazveme částečnými rekursivními funkcemi. Přesněji: funkce f je částečná rekursivní, jestliže existuje program (Turingův stroj) P (x) takový, že 1. kdykoliv je y = f(x) definováno, program P (x) skončí a na výstup zapíše y, 2. není-li f(x) definováno, program P (x) neskončí (počítá do nekonečna). Přirozeně přebereme již zavedenou terminologii: pro dané x symbol f(x) označuje, že hodnota funkce f(x) není definována a říkáme, že f(x) diverguje. Symbol f(x) naopak značí, že hodnota f(x) je definována a říkáme, že f(x) konverguje Poznámka. Slovo rekursivní zde znamená, že funkce je vyčíslitelná Turingovým strojem; slovo částečná označuje, že nemusí být definována pro všechna přirozená čísla, tj. že může pro některé vstupy divergovat Jestliže výpočet částečné rekursivní funce f(x) pro libovolné x skončí, znamená to, že definičním oborem funkce f je celá množina přirozených čísel. Tyto funkce nazveme totálně rekursivní funkce nebo jen krátce rekursivní funkce Příklad. Všechny běžné funkce nad přirozenými čísly jsou rekursivní: např. sčítání, násobení, mocniny. Rekursivní je i tzv. věžičková (též Ackermannova) funkce A: A(1) = 2, A(2) = 2 2 2, A(3) = 2 22, A(4) = 2 222, A(5) = 2 222, atd. Jiným příkladem může být funkce splňující f(x) = 0, je-li x sudé, a f(x) = 1, je-li x liché. 9

10 6.8. Rekursivní funkce mají jednu podstatnou vlastnost: máme zaručeno, že výpočet nad libovolným vstupem někdy skončí. Zatímco v případě částečných rekursivních funkcí tuto jistotu nemáme, neboť při zadání x na vstup nevíme, zdali nebude Turingův stroj počítat do nekonečna Pro Turingovy stroje jsme zavedli pojem Gödelova čísla je to přirozené číslo, které je danému stroji jednoznačně přiřazeno a z nějž lze Turingův stroj (program) efektivně dekódovat. Protože rekursivní i částečné rekursivní funkce jsou zavedeny pomocí Turingových strojů, budeme hovořit i o Gödelových číslech rekursivních a částečných rekursivních funkcí Přirozeně budeme také hovořit o rekursivních a částečných rekursivních funkcích více promenných. Zobecnění je přímočaré: jedná se o funkce, které vyčíslují Turingovy stroje, které dostávají na vstup více proměnných, jak jsme diskutovali v části 2.5. Budeme přirozeně hovořit i o jejich Gödelových číslech Fuknce, které jsou rekursivní nebo částecné rekursivní, jsou hezké v tomto smyslu: jsou popsatelné pomocí algoritmů (tak, jak jsme částečné rekursivní a rekursivní funkce zavedli). Již na tomto místě je vidět, že naprostou většinu funkcí prostřednictvím algoritmu nelze popsat: všech funkcí typu f : N N je nespočetně mnoho, zatímco algoritmů (tedy: konečných popisů) je pouze spočetně mnoho. V dalším textu uvidíme, že existují i na první pohled velice jednoduché funkce, které nelze vyčíslovat pomocí algoritmů. I přesto, že většina funkcí, se kterými se v životě setkáme, je rekursivní, ukážeme, že ve skutečnosti jsou možnosti algoritmů velice omezené. 7. Universální funkce 7.1. Následující tvrzení je jednoduché, avšak velmi užitečné. Přímo plyne z existence universálních Turingových strojů: Tvrzení o universálních funkcích. Existuje universální částečná rekursivní funkce ψ 1 (e, x) pro třídu částečných rekursivních funkcí jedné proměnné. Tedy, je-li e Gödelovo číslo částečné rekursivní funkce f(x), pak pro všechna x platí ψ 1 (e, x) f(x). 10

11 Funkce ψ 1 (e, x) je vlastně universální Turingův stroj z čísla e rozkóduje stroj, který je v něm zakódován, a simuluje jeho výpočet nad číslem x Podobně lze toto tvrzení rozšířit i na universální funkce pro třídu částečných rekursivních funkcí dvou, tří, čtyř či více proměnných: Existují universální částečné rekursivní funkce pro třídu částečných rekursivních funkcí n proměnných. Tedy, je-li e Gödelovo číslo částečné rekursivní funkce f(x 1, x 2,..., x n ), pak pro všechna x 1, x 2,..., x n platí ψ n (e, x 1, x 2,..., x n ) f(x 1, x 2,..., x n ) Zdůrazněme podstatný fakt: protože funkce ψ n počítají Turingovy stroje, jsou tyto funkce samy částečné rekursivní. Mimo jiné to znamená, že tyto funkce mají svá Gödelova čísla. 8. Efektivní a neefektivní popis funkcí 8.1. Příklad. V části jsme uvedli, že možnosti algoritmů při vyčíslování funkcí jsou velmi omezené. Uveďme zde jednoduchý příklad. Uvažme funkci f, která je popsána množinou dvojic přirozených čísel { ψ1 (x, x) + 1, je-li ψ F = {[x, y] : x N a y = 1 (x, x), 0 jinak 4 }. To je korektní popis funkce f. Z definice je tato funkce totální. Snadno však ukážeme, že nemůže být rekursivní. Kdyby byla rekursivní, mohli bychom vzít její Gödelovo číslo e a dostali bychom, že f(e) ψ 1 (e, e) f(e) + 1, což není možné. (Tato podmíněná rovnost by měla smysl pouze tehdy, pokud by výraz f(e) nebyl definován. Funkce f však byla zavedena jako totální.). Rovněž bychom mohli argumentovat takto: funkce f se od každé částečné 4 Hodnoty 0 funkce nabývá, jestliže (a) x není číslem žádné částečné rekursivní funkce anebo (b) x je číslem částečné rekursivní funkce a tato funkce na vstupu x diverguje. 11

12 rekursivní funkce liší. Pokud částečná rekursivní funkce s Gödelovým číslem x na vstupu x diverguje, musí být odlišná od f, neboť pro toto x je f(x) = 0. Pokud funkce s číslem x na vstupu x konverguje, musí být také odlišná od f, neboť pro toto x se jejich funkční hodnoty f(x) a ψ 1 (x, x) liší o jedničku. Proto se funkce f liší od všech částečných rekursivních funkcí. (Tato funkce bývá někdy nazývána jako tzv. diagonálně nerekursivní funkce) Podali jsme tzv. neefektivní popis funkce f. Ačkoliv jsme funkci f zadali pomocí množiny F, je tento popis z výpočetního hlediska natolik složitý, že žádný algoritmus nedokáže k danému x spočítat f(x). (Kdyby takový algoritmus existoval, byla by f rekursivní funkcí, což není.) Námi daný popis množiny není algoritmického typu; nedává návod, jak k danému x zkonstruovat f(x) Metoda, kterou jsme v tomto příkladu prokázali neexistenci jistého objektu, se obvykle nazývá diagonalisace. Uvidíme, že diagonalisace je podstatou mnohých výsledků o neřešitelnosti a nerozhodnutelnosti. 9. Kleeneho normální forma 9.1. Následující úvaha nám ukáže, že v jistém kontextu neexistuje rozdíl mezi vstupními daty a vlastním programem. Již víme, že jak program (Turingův stroj), tak i jeho vstupní data lze zapsat jako slovo v nějaké abecedě, a toto slovo lze zakódovat do přirozeného čísla. Proč by tedy měl mezi nimi být nějaký významný rozdíl? Tvrzení o substituci. Existuje rekursivní funkce s 1 (e, x) taková, že pro libovolná e, x 1 a x 2 platí ψ 1 (s 1 (e, x 1 ), x 2 ) ψ 2 (e, x 1, x 2 ) Uvědomme si, co funkce s 1 vlastně počítá. Předně si všimněme, že e zde vystupuje jako Gödelovo číslo částečné rekursivní funkce se dvěma proměnnými x 1 a x 2. Kdybychom si příslušný program, který počítá funkci s číslem e, představili v pascalském tvaru, mohl by mít například následující podobu: 12

13 function e(x1, x2: natural number) : natural number;... begin... z := x1 + x p := -x2 * x end; Je-li y = s 1 (e, x 1 ), pak y je Gödelovým číslem programu, který vznikne z programu s Gödelovým číslem e tak, aby platilo ψ 1 (s 1 (e, x 1 ), x 2 ) ψ 2 (e, x 1, x 2 ). Toho lze dosáhnout třeba tak, že se všechny odkazy na vstupní proměnnou x 1 v programu e nahradí její aktuální hodnotou. Takže například program s Gödelovým číslem y = s 1 (e, 9) by přibližně mohl vypadat takto: function y(x2: natural number) : natural number;... begin... z := 9 + x p := -x2 * end; Zhruba lze říci, že funkce s 1 (e, x 1 ) počítá tak, že nejprve vezme program s číslem e, rozkóduje jej, a všechny symbolické odkazy na vstupní parametr x 1 nahradí aktuální hodnotou x 1 jako konstantou. Výsledný program zpět zakóduje do přirozeného čísla. Odtud také označení funkce s funkce substituční Že je funkce s 1 rekursivní, je evidentní: např. v části 9.2. jsme podali neformální návod, jak funkci s 1 spočítat. Čtenář nechť jako cvičení funkci s 1 naprogramuje Nyní už snadno nahlédneme jednoduché zobecnění substitučního principu. 13

14 Existují rekursivní funkce s m (e, x 1, x 2,..., x m ) takové, že pro libovolná e, x 1, x 2,..., x m a 1 m < n platí ψ n m (s m (e, x 1, x 2,..., x m ), x m+1, x m+2,..., x n ) ψ n (e, x 1, x 2,..., x n ). Uvedené tvrzení o existenci substitučních funkcí bývá nazýváno jako Kleeneho věta o normální formě nebo též tzv. s-m-n věta (podle původního Kleeneho značení). 10. Problém zastavení (problém ukončení, halting problem) Uvažme, že máme daný program (Turingův stroj) počítající funkci f, jejíž Gödelovo číslo je e, a jeho vstup x. Máme rozhodnout, zdali f(x) nebo f(x), tedy, zdali výpočet funkce f nad vstupem x skončí nebo nikoliv. Máme možnost program spustit ale počítá-li již dlouho, jak máme usoudit, že už neskončí nikdy? Ukazuje se, že tento problém je obecně algoritmicky neřešitelný. Halting problem. Neexistuje žádný algoritmus 5, který by na svůj vstup dostal číslo programu e, jeho vstupní data x a po konečně mnoha krocích výpočtu rozhodl, zdali program s číslem e nad vstupem x svůj výpočet skončí či nikoliv Halting problem bychom také mohli formulovat takto: neexistuje žádná rekursivní funkce g definovaná předpisem (i) g(e, x) 1, je-li ψ 1 (e, x), a (ii) g(e, x) 0, je-li ψ 1 (e, x) Než ukážeme, proč je halting problem algoritmicky neřešitelný, všimněme si následujícího faktu. 5 Připomeňme: slova neexistuje žádný algoritmus je třeba chápat jako neexistuje Turingův stroj a odvolat se na Churchovu tesi. 14

15 Můžeme sestavit jednoduchou částečnou rekursivní funkci t: function t(e, x:natural number) : natural number; begin (1) rozkóduj Turingův stroj e; (2) simuluj jeho výpočet nad vstupem x; (3) odpověz 1; end; Tato částečná rekursivní funkce odpoví 1, jestliže stroj s číslem e skončí; pokud neskončí, řádek (2) bude trvat do nekonečna a řádek (3) se nikdy neprovede. Znamená to, že funkce t dá správnou odpověď (interpretujemeli odpověď 1 jako ano, program se zastaví ), jestliže program s číslem e nad vstupem x skončí. Tato jednoduchá funkce tak splňuje podmínku (i) z definice g. To nám napovídá, že problém bude ve splnění podmínky (ii). Bližší náhled nám dá kapitola Abychom nahlédli, proč halting problém není algoritmicky řešitelný, předpokládejme, že se podaří sestavit rekursivní funkci (program) g(e, x) takovou, že g(e, x) 1, jestliže ψ 1 (e, x), a g(e, x) 0, jestliže ψ 1 (e, x). Pak také snadno sestavíme funkci (program) h takovou, že platí h(e, x), právě když ψ 1 (e, x). Program h počítá tak, že volá funkci g a ptá se, zdali ψ 1 (e, x) konverguje. Protože funkce g je podle předpokladu rekursivní, její volání skončí po konečně mnoha krocích. Pokud bude odpověď 1, program h přejde do nekonečného cyklu (typu repeat until false) a tedy nikdy neskončí. Pokud naopak obdrží odpověď 0, skončí (nyní pro nás není podstatné, co dá na výstup). Protože poslední ekvivalence platí pro libovolná e a x, musí platit též pro e = x: h(x, x), právě když ψ 1 (x, x). Funkce h(x, x) je částečnou rekursivní funkcí jedné proměnné; nechť její Gödelovo číslo je x 0. Platí proto h(x, x) ψ 1 (x 0, x). 15

16 Potom by pro volbu x = x 0 platilo což je jinými slovy h(x 0, x 0 ), právě když ψ 1 (x 0, x 0 ), ψ 1 (x 0, x 0 ), právě když ψ 1 (x 0, x 0 ). To samozřejmě není možné program nemůže konvergovat, právě když diverguje. Náš předpoklad, že je možné sestavit rekursivní funkci g(e, x), vede k logickému sporu V části jsme sestavili částečnou rekursivní funkci t, která je zúžením 6 funkce g. Uvedený spor nás však vede k závěru, že funkce g nemůže být rekursivní, a tudíž částečnou rekursivní funkci t nelze rozšířit 7 na rekursivní funkci g. Pokud tedy budeme mít program, který počítá nějaké rozšíření funkce t, nutně existuje nějaký vstup, na kterém musí divergovat Z uvedené úvahy plyne závěr, který často budeme využívat v dalším textu: neexistuje algoritmus, který by rozhodoval, zdali ψ 1 (x, x) konverguje či diverguje. Funkce jedné proměnné g (x) = g(x, x) není rekursivní. Zopakujme znovu argument z Kdyby g byla rekursivní, sestavíme snadno program h(x) takový, že h(x) právě když ψ 1 (x, x). Vezmeme-li Gödelovo číslo x 0 funkce h, máme h(x) ψ 1 (x 0, x). Protože h(x), právě když ψ 1 (x, x), platí také: ψ 1 (x 0, x) právě když ψ 1 (x, x). Protože tato ekvivalence platí pro libovolné x, musí platit i pro x = x 0, a tak dostáváme spor: ψ 1 (x 0, x 0 ) právě když ψ 1 (x 0, x 0 ) Lze ukázat i více: je-li G(x) libovolné rozšírení funkce g (x), pak lze efektivně (tj. pomocí algoritmu) najít vstup x 0 takový, pro který G(x 0 ). Našli jsme tedy příklad částečné rekursivní funkce, kterou nelze rozšířit na funkci rekursivní, a dokonce lze algoritmicky hledat body, na kterých rozšiřování selhává V dalším textu uvidíme, že některé další problémy jsou algoritmicky neřešitelné. Patří mezi ně mimo jiné i následující: rozhodnout, zdali dva programy (Turingovy stroje) počítají stejnou funkci, 6 To znamená: dom(t) dom(g) a kdykoliv je t(e, x) definováno, platí t(e, x) = g(e, x). 7 Rozšíření je opakem zúžení: g je rozšířením t, je-li t zúžením g. 16

17 rozhodnout, zdali se daný program (Turingův stroj) zastaví nad konečně mnoha vstupy, rozhodnout, zdali daná funkce je rekursivní, rozhodnout, zdali daná formule jazyka aritmetiky je dokazatelná (např. v Peanově aritmetice), rozhodnout, zdali daná rovnice tvaru p(x 1, x 2,..., x n ) = 0, kde p je polynom s celočíselnými koeficienty, má řešení v oboru celých čísel, rozhodnout, zdali daná množina přirozených čísel je prázdná, rozhodnout, zdali daná bezkontextová gramatika je LL gramatikou, rozhodnout, zdali průnik jazyků generovaných dvěma bezkontextovými gramatikami je prázdný, rozhodnout, zdali daná kontextová gramatika generuje prázdný jazyk, rozhodnout, zdali daná bezkontextová gramatika generuje jazyk obsahující všechna slova příslušné abecedy, rozhodnout, zdali jazyk generovaný bezkontextovou gramatikou je regulární. 11. Rekursivní množiny Množinu přirozených čísel A nazveme rekursivní množinou, je-li její chakakteristická funkce rekursivní. Připomeňme, že charakteristická funkce množiny je funkce χ A (x) = 1, je-li x A, a χ A (x) = 0, je-li x A. Přeloženo do jazyka algoritmů to znamená, že o příslušnosti do množiny dokážeme rozhodovat pomocí algoritmu. Přesněji: existuje algoritmus takový, že pro libovolné x skončí a na výstup zapíše, zdali x je či není prvkem množiny. 17

18 11.2. Příklad. Množina sudých čísel je rekursivní. Množina prvočísel je rekursivní. Prázdná množina je rekursivní. Každá konečná množina je rekursivní, neboť lze napsat konečný seznam jejích prvků Již mnohokrát jsme nahlédli, že veškeré konečné objekty je možné kódovat přirozenými čísly. V případě množin čísel objektů, které mají jistou vlastnost, též můžeme zkoumat, jsou-li rekursivní či nikoliv. Například množina čísel, které jsou kódy tautologií výrokové logiky, je rekursivní: snadno si představíme algoritmus, který o dané formuli výrokové logiky rozhodne, je-li tautologií či nikoliv (například tak, že zkusí dosadit všechna možná ohodnocení výrokových promenných důležité je, že v každé formuli se těchto proměnných vyskytuje jen konečně mnoho) Příklad. Množina K = {x : ψ 1 (x, x) } není rekursivní. Kdyby byla rekursivní, musel by existovat algoritmus, který rozhoduje o tom, zdali dané číslo x do množiny patří; to by však byl algoritmus, který by řešil halting problem, a takový algoritmus neexistuje. Podobně například množina dvojic přirozených čísel ze stejného důvodu není rekursivní. K = {[e, x] : ψ 1 (e, x) } 12. Rekursivně spočetné množiny Množinu přirozených čísel A nazveme rekursivně spočetnou, jestliže je definičním oborem nějaké částečné rekursivní funkce. Rekursivně spočetné množiny jsou tedy množiny čísel, na kterých konvergují částečné rekursivní funkce. Například množina čísel K = {x : ψ 1 (x, x) } je rekursivně spočetná, neboť funkce ψ 1 (x, x) je částečná rekursivní (ale víme, že K není rekursivní) Každá rekursivní množina je samozřejmě i rekursivně spočetná. Je-li totiž W rekursivní množina, máme její rekursivní charakteristickou funkci 18

19 χ W (x). Snadno pak sestavíme částečnou rekursivní funkci (program) f takovou, že platí f(x), jestliže x W, a f(x), jestliže x W (na příslušnost x W se stačí zeptat rekursivní funkce χ W (x) a program případně poslat do nekonečného cyklu). Je zřejmé, že množina W je definičním oborem částecné rekursivní funkce f, a proto je rekursivně spočetná. Dostali jsme tak: třída rekursivních množin třída rekursivně spočetných množin Rekursivně spočetné množiny jsou z algoritmického hlediska složitejší než množiny rekursivní: zatímco v případě rekursivní množiny jsme schopni efektivně rozhodovat o každém x, zdali do množiny patří nebo ne, v případě rekursivně spočetných množin je tento problém obtížnější. Máme například rozhodnout, zdali číslo x patří do množiny K. Množina K je zadána jako definiční obor částečné rekursivní funkce ψ 1 (x, x) a je tedy rekursivně spočetná. Máme-li rozhodnout, zdali dané x patří do K, můžeme spustit program ψ 1 (x, x) a čekat: pokud se zastaví, víme, že x K. Program se však zastavit nemusí. V konečném čase (tj. po konečném počtu kroků) tak neobdržíme informaci, že x K. Protože však K není rekursivní, principiálně neexistuje žádná chytřejší metoda, jak informaci x K získat Poznámka. Intuitivně bychom mohli například očekávat, že na základě popisu algoritmu (částečné rekursivní funkce s číslem e) je možné nějak určit, jak dlouho bude nad daným vstupem x počítat; nebo alespoň najít rekursivní horní mez h takovou, že jestliže ψ 1 (e, x) konverguje, pak konverguje nanejvýš za h(e, x) kroků 8. To ovšem není možné kdyby taková funkce h byla rekursivní, mohli bychom opět řešit halting problem tak, že spustíme výpočet ψ 1 (e, x), počkáme nanejvýš h(e, x) kroků, a pokud do té doby výpočet neskončí, prohlásíme, že ψ 1 (e, x) diverguje. To by byl rekursivní postup, který by řešil halting problem. 8 Krokem zde myslíme přechod z jedné konfigurace Turingova stroje do konfigurace následující. 19

20 Někdy bývá tento výsledek formulován tak, že neexistují rekursivní majoranty (horní odhady) na počet kroků výpočtu částečných rekursivních funkcí. Znamená to, že u některých programů principiálně nedokážeme ani odhadnout, jak dlouho budou nad daným vstupem počítat Je přirozené zavést Gödelova čísla rekursivně spočetných množin. Je-li množina W definičním oborem částečné rekursivní funkce s číslem e, nazveme ji e-tou rekursivně spočetnou množinou a označíme symbolem W e Halting problem je pak možné reformulovat jako problém rozhodnout, zdali pro dané e platí e W e nebo e W e. Množina W e je definována jako definiční obor funkce s číslem e, a tak platí A tedy Je též vidět, že x W e, právě když ψ 1 (e, x). e W e, právě když ψ 1 (e, e). e W e, právě když e K. Halting problem je proto možné ekvivalentne formulovat jako problém rozhodnout, zdali pro dané e platí ψ 1 (e, e), zdali e W e či je-li e K. Všechny tyto formulace jsou rovnocenné. 13. Enumerovatelnost rekursivně spočetných množin Již víme, že v případě rekursivně spočetné množiny obecně nelze rozhodnout, zdali dané x je jejím prvkem. Je však možné vytvořit algoritmickou proceduru, která bude na výstup postupně psát všechny prvky dané rekursivně spočetné množiny. Takový postup se někdy nazývá exhaustace hledáme-li prvek množiny, postupně probíráme všechny její prvky a čekáme, zdali se hledaný prvek objeví na výstupu. Bohužel se opět může stát, že v případě, kdy hledaný prvek do množiny nepatří, budeme čekat nekonečně dlouho. 20

21 13.2. Nechť W je rekursivně spočetná množina, která je definičním oborem částečné rekursivní funkce, kterou počítá Turingův stroj T. Následující procedura postupně generuje všechny prvky množiny W : (1) i := 0; (2) for j := 0 to i do (3) simuluj výpočet T nad vstupem j po dobu i kroků (pokud konverguje po méně než i krocích, jdi na řádek (4)); (4) if výpočet T konverguje nanejvýš po i krocích then napiš číslo j na výstup; (5) end for (6) i := i + 1; (7) jdi na (2) Poznámka. Samozřejmě lze namítnout, že tato procedura bude dávat některé prvky množiny W opakovaně; není však težké si představit, že všechna doposud nalezená čísla se zapamatují v nějakém seznamu (po konečně mnoha krocích je vždy nalezeno jen konečně mnoho čísel) a na výstup se číslo zapíše pouze tehdy, není-li obsaženo v tomto seznamu Procedura počítá takto: například pro i = 2 zkouší, zdali po dvou (nebo méně) krocích konverguje stroj T nad vstupy 0, 1, 2. Pro i = 3 zkouší, zdali po třech (nebo méně) krocích konverguje stroj T nad vstupy 0, 1, 2, 3. Pro i = 4 zkouší, zdali po čtyřech (nebo méně) krocích konverguje stroj T nad vstupy 0, 1, 2, 3, 4. A tak dále. Je zřejmé, že je-li dané x prvkem W, musí stroj T nad vstupem x skončit po nějakém počtu kroků, řekněme s. Potom naše procedura číslo x zapíše na výstup nejpozději v cyklu odpovídajícímu i = max(x, s) Tato vlastnost, že prvky rekursivně spočetných množin lze postupně generovat, se nazývá enumerovatelnost. Lze ukázat, že všechny množiny, které lze popsaným způsobem enumerovat, jsou rekursivně spočetné. Uvažujme takto: mějme proceduru P, která enumeruje prvky nějaké množiny W. Napišme program (částečnou rekursivní funkci) f(x) takovou, že spustí program P a čeká, až se na jeho výstupu objeví číslo x. Jakmile se objeví, program f ukončí enumeraci P a skončí (na výstup dá třeba nulu). Množina W je definičním oborem částečné rekursivní funkce f, a proto je rekursivně spočetná Poznámka. Objev nerekursivních rekursivně spočetných množin vzbudil ve své době velký ohlas. Jsou to množiny, jejichž prvky dokážeme pomocí 21

22 algoritmu enumerovat, avšak neexistuje žádný algoritmus, který by rozhodoval o příslušnosti daného prvku do množiny Na druhou stranu je evidentní, že rekursivně spočetné množiny obecně nelze enumerovat rostoucím způsobem, tj. nejprve zapsat na výstup nejmenší prvek, pak druhý nejmenší atd. Vezměme například množinu K. Ta je rekursivně spočetná a je nekonečná 9. Kdyby bylo možné její prvky enumerovat rostoucím způsobem, musela by množina K být rekursivní. Uvažme: kdybychom se ptali, zda dané x je prvkem množiny K, stačilo by spustit hypotetický algoritmus, který enumeruje prvky K rostoucím způsobem. Jakmile by se na výstupu ocitlo nějaké y > x (a to se určitě ocitne, neboť K je nekonečná), mohli bychom enumeraci ukončit a měli bychom jistotu, že x K. Takovým způsobem bychom opět mohli řešit halting problem popsaný postup je rekursivní. Proto nexistuje algoritmus, který by dokázal prvky rekursivně spočetných množin enumerovat jako rostoucí posloupnost. 14. Obsahuje rekursivní množina jedničku? Rekursivní množiny jsou (velice) jednoduché. Máme-li k disposici Gödelovo číslo charakteristické funkce množiny A, dokážeme o libovolném x rozhodnout, je-li prvkem A či nikoliv. Ukážeme však, že rekursivní množiny lze zadat i způsobem, který nám do značné míry komplikuje život: rekursivní množinu lze zadat tak, že nedokážeme algoritmicky rozpoznat či zkonstruovat její charakteristickou funkci Příklad. Uvažme částečnou rekursivní funkci f takovou, že f(t, x), právě když t K a zároveň x = 1. Program, který vyčísluje funkci f, je velmi jednoduchý: procedure f(t, x : natural number); begin if x 1 then přejdi do nekonečného cyklu else enumeruj prvky K a nalezneš-li číslo t, ukonči enumeraci a skonči; end; 9 Množina K musí být nekonečná. Kdyby byla konečná, byla by rekursivní, což není. 22

23 Funkce f je částečná rekursivní funkce dvou proměnných. Označme e její Gödelovo číslo. Platí t K a zároveň x = 1 f(t, x) ψ 2 (e, t, x) ψ 1 (s 1 (e, t), x). právě když právě když právě když Na t nahlížejme jako na parametr. Jak vypadá rekursivně spočetná množina s číslem s 1 (e, t)? W s1 (e,t) = {x : ψ 1 (s 1 (e, t), x) } = {x : t K a zároveň x = 1} = = { {1}, je-li t K,, je-li t K. Ať je hodnota parametru t libovolná, je množina W s1 (e,t) rekursivní buď je prázdná, anebo obsahuje jediný prvek, jedničku. Vidíme však, že rozhodnout, zdali 1 W s1 (e,t), nelze algoritmicky. Kdyby totiž existovala procedura, která rozhoduje o náležení 1 do množiny W s1 (e,t), mohli bychom ji volat pro různé hodnoty parametru t a měli bychom tak rekursivní algoritmický postup řešící halting problem. Takový ovšem neexistuje Ukázali jsme příklad, kdy máme zadánu rekursivní množinu, avšak nemáme k disposici její charakteristickou funkci. Tato charakteristická funkce bezpochyby existuje; neexistuje však algoritmus, který by ji (její Gödelovo číslo) nalezl. (Přesněji: neexistuje algoritmus, který by rozhodoval, zdali dané číslo d je charakteristickou funkcí rekursivní množiny W s1 (e,t)). A tudíž, ačkoliv je množina W s1 (e,t) rekursivní, neexistuje algoritmus, který by rozhodl, zdali 1 je jejím prvkem. 15. Postův princip Postův princip dává do vztahu rekursivní a rekursivně spočetné množiny: 23

24 Množina je W rekursivní, právě když obě množiny W a co-w jsou rekursivně spočetné. (Množinu co-w nazýváme doplňkem množiny W ; obsahuje všechna přirozená čísla, která nepatří do množiny W ) Rozeberme obě implikace. Je-li množina W rekursivní, dokážeme o náležení i nenáležení prvku do této množiny rozhodovat algoritmicky. Je proto samozřejmě ona sama i její doplněk rekursivní, tím spíše rekursivně spočetné. Je-li množina W i její doplněk co-w rekursivně spočetný, znamená to, že je možné prvky W i jejího doplňku enumerovat. Abychom ukázali, že množina W je rekursivní, je třeba popsat algoritmus, který o libovolném x v konečném čase rozhodne, zdali x W nebo nikoliv. To je však snadné: spusťme vedle sebe 10 dvě procedury, jedna bude enumerovat prvky W a druhá prvky co-w. Je zřejmé, že po konečně mnoha krocích výpočtu se číslo x musí objevit na výstupu jedné z procedur (protože jinam než do W nebo co-w číslo x patřit nemůže). Podle toho lze odpovědět, zdali x W (jestliže se x objevilo na výstupu procedury enumerující prvky W ) nebo x W (jestliže se x objevilo na výstupu procedury enumerující co-w ). Tak jsme popsali rekursivní charakteristickou funkci množiny W Již víme, že množina K = {x : ψ 1 (x, x) } je rekursivně spočetná, avšak není rekursivní. Díky Postově principu můžeme nyní ukázat: Doplněk K, tedy množina není rekursivně spočetná. co-k = {x : ψ 1 (x, x) } Kdyby co-k byla rekursivně spočetná, pak by podle Postova principu musela být množina K rekursivní (neboť by K i co-k byly rekursivně spočetné), což není. Vidíme tedy příklad množiny, která je v jistém smyslu algoritmicky dosti neuchopitelná. Lze například ukázat, že prvky množiny co-k nelze enumerovat Postův princip lze reformulovat i takto: není-li množina co-w rekur- 10 Slova spustit dvě procedury vedle sebe lze nahlédnout třeba tak, že oba programy budou pracovat střídavě: sudé kroky výpočetního času se přidělí první proceduře, liché kroky druhé proceduře. 24

25 sivně spočetná, pak W nemůže být rekursivní Podobně se chovají i další množiny: například množina (kódů) formulí, které nejsou dokazatelné v aritmetice, není rekursivně spočetná. 16. Pevné body částečných rekursivních funkcí O pevných bodech funkcí se hovoří zejména v základních kursech matematické analýzy. Jednoduchou motivací je následující Fakt. Libovolná funkce f : R R, která je spojitá a která zobrazuje interval 0, 1 na interval 0, 1, má pevný bod. (Pevný bod je x 0 takové, že f(x 0 ) = x 0 ). Různé modifikace této myšlenky se uplatňují např. při řešení soustav diferenciálních rovnic. V teorii algoritmů lze také ukázat, že částečné rekursivní funkce mají své pevné body Pevným bodem částečné rekursivní funkce f rozumíme číslo x 0 takové, že pro libovolné x platí ψ 1 (x 0, x) ψ 1 (f(x 0 ), x). To znamená, že program s číslem x 0 a program s číslem f(x 0 ) počítá stejnou funkci. (Ačkoliv se může jednat o dva různé programy v části 3.5. jsme upozornili, že jednu funkci lze počítat nekonečne mnoha různými programy. To, že jsou dva programy různé, zde znamená, že se jedná o dva formálně odlišné Turingovy stroje) Tvrzení o pevném bodě (nazýváno též tvrzením o rekursi) pro funkce jedné promenné říká: Každá částečná rekursivní funkce jedné proměnné má pevný bod Abychom nahlédli toto tvrzení, vezměme libovolnou částečnou rekursivní funkci f; popíšeme konstrukci jejího pevného bodu. Uvažme funkci f(s 1 (z, z)). Připomeňme, že s 1 je substituční funkce z kapitoly 9; víme již, že je rekursivní. Funkce f(s 1 (z, z)) je částecná rekursivní funkce (neboť vznikla složením částečné rekursivní funkce s funkcí rekursivní) jedné proměnné z. Nechť nyní je e Gödelovo číslo částečné rekursivní funkce dvou 25

26 proměnných ψ 1 (f(s 1 (z, z)), x) 11. Proto pro libovolné x platí ψ 1 (f(s 1 (z, z)), x) ψ 2 (e, z, x). Opětovným použitím substituční funkce dostaneme ψ 2 (e, z, x) ψ 1 (s 1 (e, z), x). Spojením obou podmíněných rovností máme ψ 1 (f(s 1 (z, z)), x) ψ 1 (s 1 (e, z), x). Uvedená podmíněná rovnost platí pro libovolné z. Platí tedy i pro konkrétní volbu z = e: ψ 1 (f(s 1 (e, e)), x) ψ 1 (s 1 (e, e), x) a odtud již vidíme, že pevným bodem je číslo x 0 = s 1 (e, e), neboť pak pro libovolné x platí ψ 1 (f(x 0 ), x) ψ 1 (x 0, x) Dokonce vidíme více, než tvrdí věta o rekursi: nejen, že pevný bod existuje, ale je možné jej i algoritmicky najít. Jinými slovy: z kódu funkce f je možné algoritmicky sestrojit číslo x 0 = s 1 (e, e), neboť algoritmicky lze najít číslo e, které je kódem funkce dvou promenných ψ 1 (f(s 1 (z, z)), x), a dosadit jej do rekursivní funkce s Aplikace pevných bodů: Riceho princip V tomto odstavci ukážeme, že algoritmicky rozhodovat, zdali dva programy počítají stejnou funkci, není možné. Tento výsledek bývá nazýván jako Riceho princip Připomeňme opět, že jednu částečnou rekursivní funkci lze počítat pomocí nekonečně mnoha programů (formálně odlišných Turingových strojů). Je-li f libovolná částečná rekursivní funkce, pak množina F = {e : f(x) ψ 1 (e, x)} 11 To je funkce, která simuluje výpočet funkce s číslem f(s 1 (z, z)) nad vstupem x. 26

27 je množina všech Gödelových čísel Turingových stroju, které počítají funkci f. Protože každou částečnou rekursivní funkci lze počítat pomocí nekonečně mnoha programů (formálně odlišných Turingových strojů, viz 3.6.), je množina F nekonečná Riceho princip tvrdí, že množina F není rekursivní. Tedy, není možno algoritmicky rozhodovat, zdali dva Turingovy stroje počítají stejnou funkci. Jinými slovy, ze zápisu dvou programu není možné algoritmicky rozhodnout, zdali oba se chovají nad libovolným vstupem stejně Abychom nahlédli, že množina F není rekursivní, pokusme se odvodit z předpokladu její rekursivity logický rozpor. Zvolme dvě čísla a a b taková, že a F a b F. Kdyby množina F byla rekursivní, snadno sestavíme program (rekursivní funkci) g(x) takový, že g(x) b, kdykoliv x F a g(x) a, kdykoliv x F. Protože uvažujeme, že F je rekursivní, bude funkce g rekursivní. Funkce g však má svůj pevný bod x 0, a tedy funkce s čísly x 0 i g(x 0 ) jsou stejné; proto buď obě čísla x 0 i g(x 0 ) musí patřit do množiny F, anebo ani jedno z nich. Uvažme: (1) Jestliže x 0 F, pak g(x 0 ) = b. Číslo b bylo zvoleno tak, že b F. Tedy z předpokladu, že x 0 F plyne, že g(x 0 ) F. Avšak obě čísla, x 0 i g(x 0 ), jsou čísla stejné funkce, a proto by musela obě ležet uvitř F nebo obě mimo F. (2) Jestliže x 0 F, pak g(x 0 ) = a. Číslo a bylo zvoleno tak, že a F. Tedy z předpokladu, že x 0 F plyne, že g(x 0 ) F. Opět dostáváme stejný rozpor: obě čísla, x 0 i g(x 0 ), jsou čísla stejné funkce, a proto by musela obě ležet uvitř F nebo obě mimo F. Vidíme, že předpoklad rekursivity množiny F a z ní vyplývající možnost zkonstruovat funkci g vede ke sporu. Musíme tedy učinit závěr, že množina F není rekursivní Kdyby množina F rekursivní byla, mohli bychom učinit následující úvahu: máme dva programy fa g a ptáme se, zdali oba počítají stejnou 27

28 funkci, zda tedy pro libovolné x platí f(x) g(x). Můžeme zkonstruovat množinu F kódů funkce f a ptát se, zdali číslo funkce g patří do množiny F. Pokud by množina F byla rekursivní, měli bychom zaručeno, že od její charakteristické funkce obdržíme odpověď. Dokázali bychom tak rozhodovat o ekvivalenci programů. Díky tomu, že F není rekursivní, však vidíme, že to principiálně není možné. 18. Nerozlišitelnost rekursivních a částečných rekursivních funkcí V této kapitole ukážeme, že neexistuje algoritmus, který by rozhodoval, zdali daná částečná rekursivní funkce s Gödelovým číslem e má za definiční obor množinu všech přirozených čísel (tj. zdali je totální). Jinými slovy: neexistuje algoritmus, který by o programu rozhodl, zdali se pro každý vstup zastaví. Ješte jinak: neexistuje algoritmus, který by o dané částečné rekursivní funkci rozhodl, je-li rekursivní. V tomto smyslu jsou rekursivní a částečné rekursivní funkce od sebe nerozlišitelné. (V kapitole 25 uvidíme o tomto problému více.) Kdybychom uměli rozhodovat, zdali daný program s číslem e se zastaví pro každý vstup, pak by množina byla rekursivní. T ot = {e : funkce ψ 1 (e, x) je totální} Zvolme číslo a T ot a číslo b T ot (tedy b co-t ot). Protože předpokládáme, že množina T ot je rekursivní, můžeme sestavit rekursivní funkci g(x) b, kdykoliv x T ot a g(x) a, kdykoliv x T ot. (Program g(x) počítá tak, že volá χ T ot (x) a obdrží-li odpověď 1, skončí a na výstup dá b; obdrží-li odpověď 0, skončí a na výstup dá a). Označme x 0 pevný bod funkce g(x). To znamená, že programy s číslem x 0 a g(x 0 ) počítají stejnou funkci; proto musí obě tato čísla patřit do množiny T ot anebo obě patřit do množiny co-t ot. 28

29 (1) Jestliže x 0 T ot, pak g(x 0 ) = b. Číslo b však bylo záměrně zvoleno tak, že b co-t ot. Proto dostáváme, že z x 0 T ot plyne g(x 0 ) T ot, což není možné, protože se nemůže stát, že by jedno z čísel x 0 a g(x 0 ) = b patřilo do množiny T ot a druhé nikoliv. (2) Jestliže x 0 T ot, pak g(x 0 ) = a. Číslo a však bylo záměrně zvoleno tak, že a T ot. Proto dostáváme, že z x 0 T ot plyne g(x 0 ) T ot, což není možné, protože stejně jako v prvním případě se nemůže stát, že by jedno z čísel x 0 a g(x 0 ) = a patřilo do množiny T ot a druhé nikoliv. Předpoklad rekursivity množiny T ot vede k logickému sporu. Proto množina T ot není rekursivní. Není tudíž možné algoritmicky rozhodnout, zdali daný program skončí nad libovolným vstupem, či naopak nad některým vstupem bude počítat věčně. 19. Aritmetika Nahlédli jsme, že konečné objekty v našem případě konečné posloupnosti symbolů a algoritmy je možné kódovat pomocí přirozených čísel. Lze proto očekávat, že i teorie algoritmů bude úzce souviset s tou partií matematiky a formální logiky, která se zabývá přirozenými čísly: s aritmetikou Aritmetikou budeme obecně rozumět teorii, která svá tvrzení formuluje v predikátové logice pomocí výrokových spojek (, &,,, ), predikátů rovnosti = a nerovnosti, kvantifikátorů a, obsahuje symbol pro konstantu 0 a symbol s pro následující číslo (např. s(0) je jednička) a dále pak symboly pro dvě základní operace nad přirozenými čísly: + pro sčítání a pro násobení (a příp. další symboly, jako např. závorky). Pokud bude třeba, obohatíme jazyk aritmetiky o symboly pro další predikáty Budeme předpokládat, že aritmetika obsahuje základní axiomy, které určují obvyklé chování sčítání a násobení. Takovým teoriím se říká teorie základní aritmetické síly. Z kursu predikátové logiky připomeňme nejznámější příklady: Robinsonovu aritmetiku RA a Peanovu aritmetiku PA Připomeňme též, že Peanova aritmetika vznikne z Robinosovy aritmetiky přidáním schematu indukce pro všechny typy formulí s jednou volnou proměnnou. 29

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

Více

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

Výroková a predikátová logika - XIII Výroková a predikátová logika - XIII Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XIII ZS 2013/2014 1 / 13 Úvod Algoritmická (ne)rozhodnutelnost Které

Více

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R...

Kapitola 1. Úvod. 1.1 Značení. 1.2 Výroky - opakování. N... přirozená čísla (1, 2, 3,...). Q... racionální čísla ( p, kde p Z a q N) R... Kapitola 1 Úvod 1.1 Značení N... přirozená čísla (1, 2, 3,...). Z... celá čísla ( 3, 2, 1, 0, 1, 2,...). Q... racionální čísla ( p, kde p Z a q N) q R... reálná čísla C... komplexní čísla 1.2 Výroky -

Více

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška třetí Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní matematika

Více

Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty.

Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty. Zpracoval: hypspave@fel.cvut.cz 7. Matematická indukce a rekurse. Řešení rekurentních (diferenčních) rovnic s konstantními koeficienty. (A7B01MCS) I. Matematická indukce a rekurse. Indukční principy patří

Více

Matematická analýza pro informatiky I. Limita funkce

Matematická analýza pro informatiky I. Limita funkce Matematická analýza pro informatiky I. 5. přednáška Limita funkce Jan Tomeček tomecek@inf.upol.cz http://aix-slx.upol.cz/ tomecek/index Univerzita Palackého v Olomouci 18. března 2011 Jan Tomeček, tomecek@inf.upol.cz

Více

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

AUTOMATY A GRAMATIKY. Pavel Surynek. Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně spočetné jazyky Kódování, enumerace AUTOMATY A 11 GRAMATIKY Pavel Surynek Univerzita Karlova v Praze Matematicko-fyzikální fakulta Katedra teoretické informatiky a matematické logiky Kontextové uzávěrové vlastnosti Turingův stroj Rekurzivně

Více

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti Kapitola 5 Vektorové prostory V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti operací sčítání a násobení

Více

Kapitola Základní množinové pojmy Princip rovnosti. Dvě množiny S a T jsou si rovny (píšeme S = T ) prvek T je také prvkem S.

Kapitola Základní množinové pojmy Princip rovnosti. Dvě množiny S a T jsou si rovny (píšeme S = T ) prvek T je také prvkem S. 1 Kapitola 1 Množiny 11 Základní množinové pojmy Pojem množiny nedefinujeme, pouze připomínáme, že množina je souhrn, nebo soubor navzájem rozlišitelných objektů, kterým říkáme prvky 111 Princip rovnosti

Více

Základní pojmy matematické logiky

Základní pojmy matematické logiky KAPITOLA 1 Základní pojmy matematické logiky Matematická logika se zabývá studiem výroků, jejich vytváření a jejich pravdivostí. Základním kamenem výrokové logiky jsou výroky. 1. Výroková logika Co je

Více

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu

Místo pojmu výroková formule budeme používat zkráceně jen formule. Při jejich zápisu VÝROKOVÁ LOGIKA Matematická logika se zabývá studiem výroků, jejich vytváření a jejich pravdivostí. Základním kamenem výrokové logiky jsou výroky. Co je výrok nedefinujejme, pouze si řekneme, co si pod

Více

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

Výroková a predikátová logika - XII Výroková a predikátová logika - XII Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XII ZS 2015/2016 1 / 15 Algebraické teorie Základní algebraické teorie

Více

Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice

Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice Greenova funkce pro dvoubodové okrajové úlohy pro obyčejné diferenciální rovnice Jan Tomeček Tento stručný text si klade za cíl co nejrychlejší uvedení do teorie Greenových funkcí pro obyčejné diferenciální

Více

Základy teorie množin

Základy teorie množin 1 Základy teorie množin Z minula: 1. Cantorovu větu (x P(x)) 2. základní vlastnosti disjunktního sjednocení, kartézského součinu a množinové mocniny (z hlediska relací, ) 3. vztah P(a) a 2 4. větu (2 a

Více

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1

Negativní informace. Petr Štěpánek. S použitím materiálu M.Gelfonda a V. Lifschitze. Logické programování 15 1 Negativní informace Petr Štěpánek S použitím materiálu M.Gelfonda a V. Lifschitze 2009 Logické programování 15 1 Negace jako neúspěch Motivace: Tvrzení p (atomická formule) neplatí, jestliže nelze odvodit

Více

1 Lineární prostory a podprostory

1 Lineární prostory a podprostory Lineární prostory a podprostory Přečtěte si: Učebnice AKLA, kapitola první, podkapitoly. až.4 včetně. Cvičení. Které z následujících množin jsou lineárními prostory s přirozenými definicemi operací?. C

Více

Matematická analýza pro informatiky I. Limita posloupnosti (I)

Matematická analýza pro informatiky I. Limita posloupnosti (I) Matematická analýza pro informatiky I. 3. přednáška Limita posloupnosti (I) Jan Tomeček tomecek@inf.upol.cz http://aix-slx.upol.cz/ tomecek/index Univerzita Palackého v Olomouci 25. února 2011 tomecek@inf.upol.cz

Více

0.1 Úvod do matematické analýzy

0.1 Úvod do matematické analýzy Matematika I (KMI/PMATE) 1 0.1 Úvod do matematické analýzy 0.1.1 Limita a spojitost funkce Lineární funkce Lineární funkce je jedna z nejjednodušších a možná i nejpoužívanějších funkcí. f(x) = kx + q D(f)

Více

Přednáška 3: Limita a spojitost

Přednáška 3: Limita a spojitost 3 / 1 / 17, 1:38 Přednáška 3: Limita a spojitost Limita funkce Nejdříve je potřeba upřesnit pojmy, které přesněji popisují (topologickou) strukturu množiny reálných čísel, a to zejména pojem okolí 31 Definice

Více

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

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2015/2016 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2015/2016 1 / 18 Základní syntax Jazyk Výroková logika je logikou

Více

Vlastnosti regulárních jazyků

Vlastnosti regulárních jazyků Vlastnosti regulárních jazyků Podobně jako u dalších tříd jazyků budeme nyní zkoumat následující vlastnosti regulárních jazyků: vlastnosti strukturální, vlastnosti uzávěrové a rozhodnutelné problémy pro

Více

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

doplněk, zřetězení, Kleeneho operaci a reverzi. Ukážeme ještě další operace s jazyky, na které je 28 [181105-1236 ] 2.7 Další uzávěrové vlastnosti třídy regulárních jazyků Z předchozích přednášek víme, že třída regulárních jazyků je uzavřena na sjednocení, průnik, doplněk, zřetězení, Kleeneho operaci

Více

Úvod do informatiky. Miroslav Kolařík

Úvod do informatiky. Miroslav Kolařík Úvod do informatiky přednáška první Miroslav Kolařík Zpracováno dle učebního textu prof. Bělohlávka: Úvod do informatiky, KMI UPOL, Olomouc 2008. Obsah 1 Co a k čemu je logika? 2 Výroky a logické spojky

Více

Pomocný text. Polynomy

Pomocný text. Polynomy Pomocný text Polynomy Tato série bude o polynomech a to zejména o polynomech jedné proměnné (pokud nebude uvedeno explicitně, že jde o polynom více proměnných). Formálně je někdy polynom jedné proměnné

Více

PŘEDNÁŠKA 2 POSLOUPNOSTI

PŘEDNÁŠKA 2 POSLOUPNOSTI PŘEDNÁŠKA 2 POSLOUPNOSTI 2.1 Zobrazení 2 Definice 1. Uvažujme libovolné neprázdné množiny A, B. Zobrazení množiny A do množiny B je definováno jako množina F uspořádaných dvojic (x, y A B, kde ke každému

Více

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy...

Polynomy. Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1.1 Teorie Zavedení polynomů Operace s polynomy... Polynomy Obsah Mgr. Veronika Švandová a Mgr. Zdeněk Kříž, Ph. D. 1 Základní vlastnosti polynomů 2 1.1 Teorie........................................... 2 1.1.1 Zavedení polynomů................................

Více

1 Linearní prostory nad komplexními čísly

1 Linearní prostory nad komplexními čísly 1 Linearní prostory nad komplexními čísly V této přednášce budeme hledat kořeny polynomů, které se dále budou moci vyskytovat jako složky vektorů nebo matic Vzhledem k tomu, že kořeny polynomu (i reálného)

Více

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

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2013/2014 1 / 20 Základní syntax Jazyk Výroková logika je logikou

Více

Matematika III. Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská. Ústav matematiky

Matematika III. Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská. Ústav matematiky Matematika III Řady Miroslava Dubcová, Daniel Turzík, Drahoslava Janovská Ústav matematiky Přednášky ZS 202-203 Obsah Číselné řady. Součet nekonečné řady. Kritéria konvergence 2 Funkční řady. Bodová konvergence.

Více

Principy indukce a rekursivní algoritmy

Principy indukce a rekursivní algoritmy Principy indukce a rekursivní algoritmy Jiří Velebil: A7B01MCS 19. září 2011: Indukce 1/20 Příklad Místností rozměru n budeme rozumět šachovnici rozměru 2 n 2 n, ze které je jedno (libovolné) pole vyjmuto.

Více

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

Třída PTIME a třída NPTIME. NP-úplnost. VAS - Přednáška 9 Úvod ke kursu. Složitost algoritmu. Model RAM. Odhady složitosti. Metoda rozděl a panuj. Greedy algoritmy. Metoda dynamického programování. Problémy, třídy složitosti problémů, horní

Více

NP-úplnost problému SAT

NP-úplnost problému SAT Problém SAT je definován následovně: SAT(splnitelnost booleovských formulí) Vstup: Booleovská formule ϕ. Otázka: Je ϕ splnitelná? Příklad: Formule ϕ 1 =x 1 ( x 2 x 3 )jesplnitelná: např.přiohodnocení ν,kde[x

Více

Základy matematické analýzy

Základy matematické analýzy Základy matematické analýzy Spojitost funkce Ing. Tomáš Kalvoda, Ph.D. 1, Ing. Daniel Vašata 2 1 tomas.kalvoda@fit.cvut.cz 2 daniel.vasata@fit.cvut.cz Katedra aplikované matematiky Fakulta informačních

Více

Matematická analýza 1

Matematická analýza 1 Matematická analýza 1 ZS 2019-20 Miroslav Zelený 1. Logika, množiny a základní číselné obory 2. Limita posloupnosti 3. Limita a spojitost funkce 4. Elementární funkce 5. Derivace 6. Taylorův polynom Návod

Více

Principy indukce a rekurentní rovnice

Principy indukce a rekurentní rovnice Principy indukce a rekurentní rovnice Jiří Velebil: X01DML 22. října 2010: Indukce 1/15 Příklad Místností rozměru n budeme rozumět šachovnici rozměru 2 n 2 n, ze které je jedno (libovolné) pole vyjmuto.

Více

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

Pojem algoritmus. doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Pojem algoritmus doc. Mgr. Jiří Dvorský, Ph.D. Katedra informatiky Fakulta elektrotechniky a informatiky VŠB TU Ostrava Prezentace ke dni 12. září 2016 Jiří Dvorský (VŠB TUO) Pojem algoritmus 54 / 344

Více

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

FIT ČVUT MI-LOM Lineární optimalizace a metody. Dualita. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti FIT ČVUT MI-LOM Lineární optimalizace a metody Dualita Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti Michal Černý, 2011 FIT ČVUT, MI-LOM, M. Černý, 2011: Dualita 2/5 Dualita Evropský

Více

Dnešní látka Variačně formulované okrajové úlohy zúplnění prostoru funkcí. Lineární zobrazení.

Dnešní látka Variačně formulované okrajové úlohy zúplnění prostoru funkcí. Lineární zobrazení. Předmět: MA4 Dnešní látka Variačně formulované okrajové úlohy zúplnění prostoru funkcí. Lineární zobrazení. Literatura: Kapitola 2 a)-c) a kapitola 4 a)-c) ze skript Karel Rektorys: Matematika 43, ČVUT,

Více

9 Kolmost vektorových podprostorů

9 Kolmost vektorových podprostorů 9 Kolmost vektorových podprostorů Od kolmosti dvou vektorů nyní přejdeme ke kolmosti dvou vektorových podprostorů. Budeme se zabývat otázkou, kdy jsou dva vektorové podprostory na sebe kolmé a jak to poznáme.

Více

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

Výroková a predikátová logika - III Výroková a predikátová logika - III Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - III ZS 2017/2018 1 / 16 2-SAT 2-SAT Výrok je v k-cnf, je-li v CNF a

Více

Matematická logika. Miroslav Kolařík

Matematická logika. Miroslav Kolařík Matematická logika přednáška šestá Miroslav Kolařík Zpracováno dle textu R. Bělohlávka: Matematická logika poznámky k přednáškám, 2004. a dle učebního textu R. Bělohlávka a V. Vychodila: Diskrétní matematika

Více

FREDHOLMOVA ALTERNATIVA

FREDHOLMOVA ALTERNATIVA FREDHOLMOVA ALTERNATIVA Pavel Jirásek 1 Abstrakt. V tomto článku se snažíme shrnout dosavadní výsledky týkající se Fredholmovy alternativy (FA). Postupně zmíníme FA na prostorech konečné dimenze, FA pro

Více

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech

Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech Texty k přednáškám z MMAN3: 4. Funkce a zobrazení v euklidovských prostorech 1. července 2008 1 Funkce v R n Definice 1 Necht n N a D R n. Reálnou funkcí v R n (reálnou funkcí n proměnných) rozumíme zobrazení

Více

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie.

Pro každé formule α, β, γ, δ platí: Pro každé formule α, β, γ platí: Poznámka: Platí právě tehdy, když je tautologie. Zpracoval: hypspave@fel.cvut.cz 5. Výroková logika, formule výrokové logiky a jejich pravdivostní ohodnocení, splnitelné formule, tautologie, kontradikce, sémantický důsledek, tautologicky ekvivalentní

Více

Lineární algebra : Polynomy

Lineární algebra : Polynomy Lineární algebra : Polynomy (2. přednáška) František Štampach, Karel Klouda LS 2013/2014 vytvořeno: 15. dubna 2014, 11:21 1 2 2.1 Značení a těleso komplexních čísel Značení N := {1, 2, 3... }... množina

Více

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace

Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace RELACE Pojem binární relace patří mezi nejzákladnější matematické pojmy. Binární relace slouží k vyjádření vztahů mezi prvky nějakých množin. Vztahy mohou být různé povahy. Patří sem vztah býti potomkem,

Více

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s Kapitola 13 Kvadratické formy Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru f(x 1,..., x n ) = a ij x i x j, kde koeficienty a ij T. j=i Kvadratická forma v n proměnných

Více

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady.

Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady. Číselné řady Definice (Posloupnost částečných součtů číselné řady). Nechť je číselná posloupnost. Pro všechna položme. Posloupnost nazýváme posloupnost částečných součtů řady. Definice (Součet číselné

Více

PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim.

PRIMITIVNÍ FUNKCE. Primitivní funkce primitivní funkce. geometrický popis integrály 1 integrály 2 spojité funkce konstrukce prim. PRIMITIVNÍ FUNKCE V předchozích částech byly zkoumány derivace funkcí a hlavním tématem byly funkce, které derivace mají. V této kapitole se budou zkoumat funkce, které naopak jsou derivacemi jiných funkcí

Více

Je založen na pojmu derivace funkce a její užití. Z předchozího studia je třeba si zopakovat a orientovat se v pojmech: funkce, D(f), g 2 : y =

Je založen na pojmu derivace funkce a její užití. Z předchozího studia je třeba si zopakovat a orientovat se v pojmech: funkce, D(f), g 2 : y = 0.1 Diferenciální počet Je částí infinitezimálního počtu, což je souhrnný název pro diferenciální a integrální počet. Je založen na pojmu derivace funkce a její užití. Z předchozího studia je třeba si

Více

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE

PRIMITIVNÍ FUNKCE DEFINICE A MOTIVACE PIMITIVNÍ FUNKCE V předchozích částech byly zkoumány derivace funkcí a hlavním tématem byly funkce, které derivace mají. V této kapitole se budou zkoumat funkce, které naopak jsou derivacemi jiných funkcí

Více

Příklad z učebnice matematiky pro základní školu:

Příklad z učebnice matematiky pro základní školu: Příklad z učebnice matematiky pro základní školu: Součet trojnásobku neznámého čísla zvětšeného o dva a dvojnásobku neznámého čísla zmenšeného o pět se rovná čtyřnásobku neznámého čísla zvětšeného o jedna.

Více

Algebraické struktury s jednou binární operací

Algebraické struktury s jednou binární operací 16 Kapitola 1 Algebraické struktury s jednou binární operací 1.1 1. Grupoid, pologrupa, monoid a grupa Chtěli by jste vědět, co jsou to algebraické struktury s jednou binární operací? No tak to si musíte

Více

5. Lokální, vázané a globální extrémy

5. Lokální, vázané a globální extrémy 5 Lokální, vázané a globální extrémy Studijní text Lokální extrémy 5 Lokální, vázané a globální extrémy Definice 51 Řekneme, že f : R n R má v bodě a Df: 1 lokální maximum, když Ka, δ Df tak, že x Ka,

Více

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují 1. u + v = v + u, u, v V 2. (u + v) + w = u + (v + w),

Více

Matematika (KMI/PMATE)

Matematika (KMI/PMATE) Matematika (KMI/PMATE) Přednáška druhá aneb Úvod do matematické analýzy Limita a spojitost funkce Matematika (KMI/PMATE) 1 / 30 Osnova přednášky lineární funkce y = kx + q definice lineární funkce význam

Více

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0).

Výroková logika II. Negace. Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0). Výroková logika II Negace Již víme, že negace je změna pravdivostní hodnoty výroku (0 1; 1 0). Na konkrétních příkladech si ukážeme, jak se dají výroky negovat. Obecně se výrok dá negovat tak, že před

Více

Okruh č.3: Sémantický výklad predikátové logiky

Okruh č.3: Sémantický výklad predikátové logiky Okruh č.3: Sémantický výklad predikátové logiky Predikátová logika 1.řádu formalizuje úsudky o vlastnostech předmětů a vztazích mezi předměty pevně dané předmětné oblasti (univerza). Nebudeme se zabývat

Více

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů?

Kolik existuje různých stromů na pevně dané n-prvkové množině vrcholů? Kapitola 9 Matice a počet koster Graf (orientovaný i neorientovaný) lze popsat maticí, a to hned několika různými způsoby. Tématem této kapitoly jsou incidenční matice orientovaných grafů a souvislosti

Více

Formální systém výrokové logiky

Formální systém výrokové logiky Formální systém výrokové logiky 1.Jazyk výrokové logiky Nechť P = {p,q,r, } je neprázdná množina symbolů, které nazýváme prvotní formule. Symboly jazyka L P výrokové logiky jsou : a) prvky množiny P, b)

Více

Těleso racionálních funkcí

Těleso racionálních funkcí Těleso racionálních funkcí Poznámka. V minulém semestru jsme libovolnému oboru integrity sestrojili podílové těleso. Pro libovolné těleso R je okruh polynomů R[x] oborem integrity, máme tedy podílové těleso

Více

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

Výroková a predikátová logika - IV Výroková a predikátová logika - IV Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - IV ZS 2018/2019 1 / 17 Tablo metoda Tablo Tablo - příklady F (((p q)

Více

Rovnice se separovanými proměnnými

Rovnice se separovanými proměnnými Rovnice se separovanými proměnnými V této kapitole se budeme zabývat následující diferenciální rovnicí: y = g(y)f(x), (1) kde f a g jsou reálné funkce reálné proměnné. Tato rovnice se nazývá rovnice se

Více

Operace s maticemi. 19. února 2018

Operace s maticemi. 19. února 2018 Operace s maticemi Přednáška druhá 19. února 2018 Obsah 1 Operace s maticemi 2 Hodnost matice (opakování) 3 Regulární matice 4 Inverzní matice 5 Determinant matice Matice Definice (Matice). Reálná matice

Více

Riemannův určitý integrál

Riemannův určitý integrál Riemannův určitý integrál 1. Motivační příklad Příklad (Motivační příklad pro zavedení Riemannova integrálu). Nechť,. Vypočtěme obsah vybarvené oblasti ohraničené grafem funkce, osou a svislými přímkami

Více

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

Výroková a predikátová logika - IX Výroková a predikátová logika - IX Petr Gregor KTIML MFF UK ZS 2013/2014 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - IX ZS 2013/2014 1 / 15 Korektnost a úplnost Důsledky Vlastnosti teorií

Více

1 Mnohočleny a algebraické rovnice

1 Mnohočleny a algebraické rovnice 1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem

Více

5.3. Implicitní funkce a její derivace

5.3. Implicitní funkce a její derivace Výklad Podívejme se na následující problém. Uvažujme množinu M bodů [x,y] R 2, které splňují rovnici F(x, y) = 0, M = {[x,y] D F F(x,y) = 0}, kde z = F(x,y) je nějaká funkce dvou proměnných. Je-li F(x,y)

Více

1 Pravdivost formulí v interpretaci a daném ohodnocení

1 Pravdivost formulí v interpretaci a daném ohodnocení 1 Pravdivost formulí v interpretaci a daném ohodnocení Než uvedeme konkrétní příklady, zopakujme si definici interpretace, ohodnocení a pravdivosti. Necht L je nějaký jazyk. Interpretaci U, jazyka L tvoří

Více

Limita a spojitost funkce

Limita a spojitost funkce Přednáška 5 Limita a spojitost funkce V této přednášce se konečně dostaneme k diferenciálnímu počtu funkce jedné reálné proměnné. Diferenciální počet se v podstatě zabývá lokálním chováním funkce v daném

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice

8.3). S ohledem na jednoduchost a názornost je výhodné seznámit se s touto Základní pojmy a vztahy. Definice 9. Lineární diferenciální rovnice 2. řádu Cíle Diferenciální rovnice, v nichž hledaná funkce vystupuje ve druhé či vyšší derivaci, nazýváme diferenciálními rovnicemi druhého a vyššího řádu. Analogicky

Více

1 Řešení soustav lineárních rovnic

1 Řešení soustav lineárních rovnic 1 Řešení soustav lineárních rovnic 1.1 Lineární rovnice Lineární rovnicí o n neznámých x 1,x 2,..., x n s reálnými koeficienty rozumíme rovnici ve tvaru a 1 x 1 + a 2 x 2 +... + a n x n = b, (1) kde koeficienty

Více

Predikátová logika. Teoretická informatika Tomáš Foltýnek

Predikátová logika. Teoretická informatika Tomáš Foltýnek Predikátová logika Teoretická informatika Tomáš Foltýnek foltynek@pef.mendelu.cz strana 2 Opakování z minulé přednášky Z čeho se skládá jazyk výrokové logiky? Jaká jsou schémata pro axiomy VL? Formulujte

Více

Limita a spojitost funkce. 3.1 Úvod. Definice: [MA1-18:P3.1]

Limita a spojitost funkce. 3.1 Úvod. Definice: [MA1-18:P3.1] KAPITOLA 3: Limita a spojitost funkce [MA-8:P3.] 3. Úvod Necht je funkce f definována alespoň na nějakém prstencovém okolí bodu 0 R. Číslo a R je itou funkce f v bodě 0, jestliže pro každé okolí Ua) bodu

Více

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

Výroková a predikátová logika - XIV Výroková a predikátová logika - XIV Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XIV ZS 2018/2019 1 / 20 Nerozhodnutelnost Úvod Rekurzivní a rekurzivně

Více

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

Výroková a predikátová logika - XII Výroková a predikátová logika - XII Petr Gregor KTIML MFF UK ZS 2018/2019 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - XII ZS 2018/2019 1 / 15 Rezoluční metoda v PL Rezoluční důkaz Obecné

Více

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že

p 2 q , tj. 2q 2 = p 2. Tedy p 2 je sudé číslo, což ale znamená, že KAPITOLA 1: Reálná čísla [MA1-18:P1.1] 1.1. Číselné množiny Přirozená čísla... N = {1,, 3,...} nula... 0, N 0 = {0, 1,, 3,...} = N {0} Celá čísla... Z = {0, 1, 1,,, 3,...} Racionální čísla... { p } Q =

Více

1. MATEMATICKÁ LOGIKA A MNOŽINY

1. MATEMATICKÁ LOGIKA A MNOŽINY . MATEMATICKÁ LOGIKA A MNOŽINY Průvodce studiem V následující kapitole si připomeneme některé význačné poznatky z matematické logiky a teorie množin, tvořící základ množinově logického aparátu. S celou

Více

5 Orientované grafy, Toky v sítích

5 Orientované grafy, Toky v sítích Petr Hliněný, FI MU Brno, 205 / 9 FI: IB000: Toky v sítích 5 Orientované grafy, Toky v sítích Nyní se budeme zabývat typem sít ových úloh, ve kterých není podstatná délka hran a spojení, nýbž jejich propustnost

Více

Diskrétní matematika 1. týden

Diskrétní matematika 1. týden Diskrétní matematika 1. týden Elementární teorie čísel dělitelnost Jan Slovák Masarykova univerzita Fakulta informatiky jaro 2015 Obsah přednášky 1 Problémy teorie čísel 2 Dělitelnost 3 Společní dělitelé

Více

Limita a spojitost funkce a zobrazení jedné reálné proměnné

Limita a spojitost funkce a zobrazení jedné reálné proměnné Přednáška 4 Limita a spojitost funkce a zobrazení jedné reálné proměnné V několika následujících přednáškách budeme studovat zobrazení jedné reálné proměnné f : X Y, kde X R a Y R k. Protože pro každé

Více

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek

Unární je také spojka negace. pro je operace binární - příkladem může být funkce se signaturou. Binární je velká většina logických spojek Otázka 06 - Y01MLO Zadání Predikátová logika, formule predikátové logiky, sentence, interpretace jazyka predikátové logiky, splnitelné sentence, tautologie, kontradikce, tautologicky ekvivalentní formule.

Více

Kongruence na množině celých čísel

Kongruence na množině celých čísel 121 Kapitola 4 Kongruence na množině celých čísel 4.1 Relace kongruence na množině celých čísel Vraťme se k úvahám o dělení se zbytkem. Na základní škole jsme se naučili, že když podělíme číslo 11 číslem

Více

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA.

TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA. TOPOLOGIE A TEORIE KATEGORIÍ (2017/2018) 4. PREDNÁŠKA - SOUČIN PROSTORŮ A TICHONOVOVA VĚTA. PAVEL RŮŽIČKA 4.1. (Kvazi)kompaktnost a sub-báze. Buď (Q, ) uspořádaná množina. Řetězcem v Q budeme rozumět lineárně

Více

1 Mnohočleny a algebraické rovnice

1 Mnohočleny a algebraické rovnice 1 Mnohočleny a algebraické rovnice 1.1 Pojem mnohočlenu (polynomu) Připomeňme, že výrazům typu a 2 x 2 + a 1 x + a 0 říkáme kvadratický trojčlen, když a 2 0. Číslům a 0, a 1, a 2 říkáme koeficienty a písmenem

Více

Zavedení a vlastnosti reálných čísel

Zavedení a vlastnosti reálných čísel Zavedení a vlastnosti reálných čísel jsou základním kamenem matematické analýzy. Konstrukce reálných čísel sice není náplní matematické analýzy, ale množina reálných čísel R je pro matematickou analýzu

Více

Modely Herbrandovské interpretace

Modely Herbrandovské interpretace Modely Herbrandovské interpretace Petr Štěpánek S využitím materialu Krysztofa R. Apta 2006 Logické programování 8 1 Uvedli jsme termové interpretace a termové modely pro logické programy a také nejmenší

Více

Cvičení ke kursu Vyčíslitelnost

Cvičení ke kursu Vyčíslitelnost Cvičení ke kursu Vyčíslitelnost (23. prosince 2017) 1. Odvoďte funkci [x, y, z] x y z ze základních funkcí pomocí operace. 2. Dokažte, že relace nesoudělnosti je 0. Dokažte, že grafy funkcí Mod a Div jsou

Více

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu. Polynomy Polynom je možno definovat dvěma způsoby: jako reálnou nebo komplexní funkci, jejichž hodnoty jsou dány jistým vzorcem, jako ten vzorec samotný. [1] První způsob zavedení polynomu BI-LIN, polynomy,

Více

15. Moduly. a platí (p + q)(x) = p(x) + q(x), 1(X) = id. Vzniká tak struktura P [x]-modulu na V.

15. Moduly. a platí (p + q)(x) = p(x) + q(x), 1(X) = id. Vzniká tak struktura P [x]-modulu na V. Učební texty k přednášce ALGEBRAICKÉ STRUKTURY Michal Marvan, Matematický ústav Slezská univerzita v Opavě 15. Moduly Definice. Bud R okruh, bud M množina na níž jsou zadány binární operace + : M M M,

Více

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

Třídy složitosti P a NP, NP-úplnost Třídy složitosti P a NP, NP-úplnost Cíle přednášky: 1. Definovat, za jakých okolností můžeme problém považovat za efektivně algoritmicky řešitelný. 2. Charakterizovat určitou skupinu úloh, pro které není

Více

Dijkstrův algoritmus

Dijkstrův algoritmus Dijkstrův algoritmus Hledání nejkratší cesty v nezáporně hranově ohodnoceném grafu Necht je dán orientovaný graf G = (V, H) a funkce, která každé hraně h = (u, v) H přiřadí nezáporné reálné číslo označované

Více

Obyčejnými diferenciálními rovnicemi (ODR) budeme nazývat rovnice, ve kterých

Obyčejnými diferenciálními rovnicemi (ODR) budeme nazývat rovnice, ve kterých Obyčejné diferenciální rovnice Obyčejnými diferenciálními rovnicemi (ODR) budeme nazývat rovnice, ve kterých se vyskytují derivace neznámé funkce jedné reálné proměnné. Příklad. Bud dána funkce f : R R.

Více

Pravděpodobnost a statistika

Pravděpodobnost a statistika Pravděpodobnost a statistika 1 Náhodné pokusy a náhodné jevy Činnostem, jejichž výsledek není jednoznačně určen podmínkami, za kterých probíhají, a které jsou (alespoň teoreticky) neomezeně opakovatelné,

Více

13. přednáška 13. ledna k B(z k) = lim. A(z) = M(z) m 1. z m.

13. přednáška 13. ledna k B(z k) = lim. A(z) = M(z) m 1. z m. 13. přednáška 13. ledna 2010 Důkaz. M = n=0 a nz n a N = n=0 b nz n tedy buďte dvě mocninné řady, které se jako funkce shodují svými hodnotami na nějaké prosté posloupnosti bodů z k C konvergující k nule.

Více

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

Výroková a predikátová logika - II Výroková a predikátová logika - II Petr Gregor KTIML MFF UK ZS 2017/2018 Petr Gregor (KTIML MFF UK) Výroková a predikátová logika - II ZS 2017/2018 1 / 17 Předběžnosti Základní pojmy n-ární relace a funkce

Více

Báze a dimenze vektorových prostorů

Báze a dimenze vektorových prostorů Báze a dimenze vektorových prostorů Buď (V, +, ) vektorový prostor nad tělesem (T, +, ). Nechť u 1, u 2,..., u n je konečná posloupnost vektorů z V. Existují-li prvky s 1, s 2,..., s n T, z nichž alespoň

Více

Naproti tomu gramatika je vlastně soupis pravidel, jak

Naproti tomu gramatika je vlastně soupis pravidel, jak 1 Kapitola 1 Úvod V přednášce se zaměříme hlavně na konečný popis obecně nekonečných množin řetězců symbolů dané množiny A. Prvkům množiny A budeme říkat písmena, řetězcům (konečným posloupnostem) písmen

Více