Neřešitelnost a nerozhodnutelnost
|
|
- Miroslav Čermák
- před 6 lety
- Počet zobrazení:
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 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ý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é
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 -
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
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ří
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
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 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í
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
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
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ý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
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í
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
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
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
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
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)
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ý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
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
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
Ú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
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é
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
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ů................................
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ý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
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.
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.
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í
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
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
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
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.
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
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ý
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,
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ý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
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
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
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í
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í
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
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,
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
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é
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í
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
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í
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.
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
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,
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),
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ý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
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
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
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)
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ý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)
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
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
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ý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í
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
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)
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ří
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
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...
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
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
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
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ý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ý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é
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 =
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
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
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é
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é
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.
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
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ě
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
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
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ší
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
[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,
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,
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í
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é
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.
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é,
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ý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
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ň
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