Řešené otázky NTIN090/ČRF2TS
Z ωικι.matfyz.cz
Věta ( ČRF ⇒ TS ): $ h $ je ČRF $ n $ proměnných ⇒ $ h $ je Turingovsky vyčíslitelná
- 💡 Přesněji, existuje Turingův stroj $ M_h $ takový, že pro každou $ n $-tici přirozených čísel $ x_1, x_2, \dots, x_n $ platí
- $ M_h((x_1)_B\#(x_2)_B\#\dots\# (x_n)_B)\downarrow\Leftrightarrow h(x_1, x_2, \dots, x_n)\downarrow $
- a platí-li $ h(x_1, x_2, \dots, x_n)\downarrow=y $, potom výpočet Turingova stroje $ M_h $ vydá na výstupu řetězec $ (y)_B $.
- Dk (zakladni funkce vycislim; substituci provedu paralelne na nekolika paskach; prim. rekurzi delam pocitadlem cyklu; minimalizaci taky)
- definujeme TS pro základní funkce a operátory pro odvození $ h $:
- Základní fce
- nulová funkce $ o(x)=0 $
- ekvivalentní této operaci na TS: smaže celou pásku a zapíše 0
- následník $ s(x) $
- implementuje přičtení 1 k bin.číslu
- projekce $ I^j_n (x_1,..,x_n) $
- smaže prvních $ j-1 $ bloků
- přeskočí $ j $ (na něj děláme projekci)
- smaže zbytek
- vrátí se na jediný nesmazaný $ j $
- nulová funkce $ o(x)=0 $
- Operátory
- substituce $ S_n^m $ pomocí 3 páskového TS $ M_h $:
- kde: $ h(x_1,...,x_n) ≃ f(g_1(x_1,...,x_n),...,g_m(x_1,...,x_n)) $
- na 1. pásce je vstup
- postupne simulujeme stroje $ M_{gi} $ na 2. pásce (vždy jí smažeme a zkopírumeme na ní 1.), výsledky prekopirujeme na konec 3. (💡 oddělovač #)
- na 3. pasce pustime stroj $ M_f $ (výsledek pak bude na 3. pásce)
- primitivní rekurze $ R_n $ pomocí 3 páskového TS $ M_h $ (for-cyklus):
- kde: $ h(0, x_2, ..., x_n) ≃ f(x_2, ..., x_n) $
- $ h(i+1, x_2, ..., x_n) ≃ g(i, h(i,x_2,...,x_n), x_2,..., x_n) $
- (init-for-cyklu):
- na 1. pásce je vstup, na 2.pásce 0 (čítač pro for)
- na 3. je 1. bez prvního čísla a pak na ní pustíme $ M_f $
- (for-cyklus): dokud je číslo na 2. < číslo na začátku 1. ($ x_1 $)
- 2.pásku zkopírujem před výsledek na 3. a na konec zkopirujem 1. (bez prvního čísla)
- na 3. pasce pustime stroj $ M_g $
- výsledek je pak na 3. pásce
- minimalizace $ M_n(\mathbf{f})=\mathbf{h} $ pomocí 2 páskového TS $ M_h $ (while-cyklus):
- $ \mathbf{h}(x_1,...,x_n)\downarrow ≃ min \{ y|\mathbf{f}(x_1,...,x_n,y)\downarrow = 0 \quad a \quad \forall z< y: \mathbf{f}(x_1,...,x_n,z)\downarrow \ne 0\} $
- na 1. pásce je vstup + #0 (čítač pro while)
- (while-cyklus): dokud simulace $ M_f $ na 2.pásce nevrátí 0
- smaz 2. a nahraj naní 1. pásku s čítačem+1
- nasimuluj $ M_f $ na 2.
- čítač y zapiš na 1.
- kde: $ h(x_1,...,x_n) ≃ f(g_1(x_1,...,x_n),...,g_m(x_1,...,x_n)) $
- Základní fce