{{TIN065 Prednášky}}
Opakovanie
Už vieme, že relativizované programy, teda ČRFály, sa dajú očíslovať. Máme tiež regularizačnú funkciu \rho
, ktorá zo všeobecnej rekurzívne spočítateľnej množiny vyrobí ČRFál, a to dokonca tak, že W_{\rho(z)} \subseteq W_z
a tiež \Phi_z = W_{\rho(z)}
. A ešte sme si zopakovali, čo to znamená, že množina A je B-rekurzívna.
Teraz si ešte povieme, čo to znamená, že A je B-rekurzívne spočítateľná množina (rekurzívne spočítateľná vzhľadom k B). Nejde o nič iné ako o to, že množina A je doménou nejakej B-ČRF. Formálnejšie: množina A je B-rekurzívne spočítateľná, ak A = dom(\Phi_z(B))
pre nejaké z.
Taktiež si zavedieme označenia: W_{z}^B
a W_{z, s}^B
. W_z^B = dom(\Phi_z(B)) = \{y: \Phi_z(B)(y)\downarrow\}
teda označuje definičný obor funkcie \Phi_z(B)
. Podobne W_{z, s}^B
označuje konečnú množinu tých y
, o ktorých je možné rozhodnúť, či sú prvkami W_{z}^B
, za nanajvýš s
krokov.
O vzťahu \leq_T
Pozorovania:
#Vzťah \leq_T
je reflexívny a tranzitívny.
#Ak A je rekurzívna množina, tak A\leq_T B
pre každé B.
#Ak A \leq_T B
a B je rekurzívna, tak aj A je rekurzívna.
Pozorovania sú viac menej zrejmé. Keďže pri \leq_T
sa jedná o programy, tak budeme jednotlivé vlastnosti ukazovať pomocou programov (čo je iste pochopiteľnejšie, ako formálne pomocou trojíc <\sigma, x, y>
).
To, že je \leq_T
reflexívne (A \leq_T A
) je jasné, lebo ak máme množinu A ako orákulum, tak vieme triviálne zistiť, či je niečo prvkom množiny A - stačí sa raz spýtať orákula. Pre dôkaz tranzitívnosti nech A \leq_T B
a B \leq_T C
. Chceme zistiť, či A \leq_T C
. Teda pre dané x
chceme program, ktorý zistí, či x \in A
, pričom má k dispozícii iba funkciu is_in_C
, teda iba orákulum C. Vieme, že ak by sme mohli použiť funkciu is_in_B
, teda orákulum B, tak potom takýto program existuje (predpoklad A \leq_T B
). Tento program využijeme a namiesto volania nepovolenej funkcie is_in_B
dáme volanie podprogramu, ktorý počíta C_B
iba pomocou orákula C, teda iba pomocou funkcie is_in_C
.
Druhé pozorovanie je podobne triviálne. Ak vieme A charakterizovať bez orákula, teda ak existuje ORF f taká, že (\forall x)(C_A(x) = f(x))
, tak s akýmkoľvek orákulom B to vieme tiež (a tohoto orákula sa nemusíme vôbec na nič pýtať).
Tretie pozorovanie iba hovorí, že za predpokladu, že množinu B vieme rozhodovať, čiže existuje ORF g taká, že (\forall x)(C_B(x) = g(x))
, tak ak by nejaká B-ČRF chcela použiť množinu B ako orákulum, potom vlastne žiadne orákulum nepotrebujeme. Je to preto, lebo keď sa budeme potrebovať spýtať, či x \in B
, tak to môžeme zistiť priamym výpočtom (pomocou existujúcej ORF g) a nemusíme využiť orákulum. A tým pádom je možné celú množinu A rozhodovať bez orákula. Inak povedané, majme program na rozhodovanie A, ktorý používa orákulovu funkciu is_in_B
. Túto funkciu len nahradíme podprogramom, ktorý počíta C_B
bez akéhokoľvek orákula a získame tak program, ktorý rozhoduje množinu A bez využitia orákula.
Ekvivalencia \equiv_T
a [[wen:Turing degree|T-stupne]]
Keď mám \leq_T
, tak je jednoduché zadefinovať reláciu \equiv_T
.
A \equiv_T B
ak platí A \leq_T B
& B \leq_T A
. A \equiv_T B
je zrejme ekvivalencia a pre ekvivalenciu vieme vyrobiť triedy ekvivalencie. Jedna trieda ekvivalencie potom reprezentuje algoritmicky rovnako zložité množiny. Jednotlivé triedy ekvivalencie \equiv_T
sa označujú malým písmenom, pod ktorým je vlnovka (v TeXu snáď \underset{\widetilde}{a}
, na tejto Wiki \[a]
) a nazývajú sa "stupne nerozhodnuteľnosti" (degrees of <b>un</b>solvability). Lepším pojmom sú T-stupne, pretože pre rôzne typy prevoditeľností môžeme rovnakým spôsobom vytvoriť ekvivalencie a ich príslušné triedy nazvať 1-stupne, m-stupne, tt-stupne, wtt-stupne a podobne.
Stupeň \[\emptyset]
(trieda ekvivalencie \equiv_T
reprezentovaná prázdnou množinou) sú práve všetky rekurzívne množiny. Ak máme množinu A, tak \[a] = \[a]_T = deg_T(A) = \{B: B \equiv_T A\}
je T-stupeň obsahujúci množinu A.
Pomocou usporiadania \leq_T
na jednotlivých množinách môžeme na triedach ekvivalencie \equiv_T
zaviesť čiastočné usporiadanie \leq
. Formálne ho definujeme takto: \[A] \leq \[B]
ak platí A \leq_T B
pre ľubovoľné A \in \[A]
a B \in \[B]
. Je jasné, že \[\emptyset] \leq \[B]
pre každé B. Vyplýva to z druhého bodu pozorovania vyššie.
Mierna odbočka: Ak by sme uvažovali <Teorie%20množin> všetkých množín (pozor, nejedná sa o množinu), tak si ich môžeme rozdeliť podľa našej ekvivalencie \leq_T
a zistíme, že jediný T-stupeň, ktorý môžeme algoritmicky rozhodnúť je práve \[\emptyset]
. Všetky ostatné stupne sú nerekurzívne, takže algoritmicky nerozhodnuteľné. No a práve preto sa tomu hovorí stupne <b>ne</b>rozhodnuteľnosti.
Očíslovanie
ČRF vieme očíslovať dvoma spôsobmi. Prvý z nich sa bral na <Vyčíslitelnost%20I>: \{\varphi_e\}_{e \in N}
. My si ale tiež môžeme zobrať numeráciu \{\Phi_e(\emptyset)\}_{e \in N}
, ktorá predstavuje ČRFály, do ktorých vložíme iba rekurzívne orákulum. Vieme, že takto vzniknuté funkcie sú rekurzívne izomorfné s ČRF, teda máme preklad z čísel numerácie \{\varphi_e\}_{e \in N}
na čísla numerácie \{\Phi_e(\emptyset)\}_{e \in N}
. To znamená, že existuje rekurzívna permutácia p
taká, že \varphi_e = \Phi_{p(e)}(\emptyset)
. Potom môžeme práve všetky rekurzívne spočítateľné množiny reprezentovať ako \{W_z^\emptyset\}_{z \in N}
.
Tento prístup k funkciám a k množinám je univerzálnejší, a preto budeme radšej písať \Phi_e(\emptyset)
ako \phi_e
. Poznámka: Ak by sme používali iba \Phi_e(B)
pre B \leq_T \emptyset
(teda ČRFály len s rekurzívnou množinou), dostaneme <Vyčíslitelnost%20I>.
s-m-n veta
Zadefinujeme si, čo je to funkcia viacerých premenných. Je to funkcia jednej premennej, kde dosadíme kód usporiadanej n-tice premenných: \Phi_z(B)(x_1, x_2, \dots, x_n) \simeq \Phi_z(B)(<x_1, x_2, \dots, x_n>)
.
<b>Veta:</b><em>(relativizovaná s-m-n veta)</em> Nech \Phi_z(B)
je univerzálna B-ČRF. Platí s-m-n veta: Existuje PRF \bar{s_m}
m + 1
premenných taká, že platí:\Phi_z(B)(y_1, y_2, \dots, y_m, x_1, x_2, \dots, x_n) \simeq \Phi_{\bar{s_m}(z, y_1, y_2, \dots, y_m)}(B)(x_1, x_2, \dots, x_n)
.
<b>Dôkaz:</b> V pôvodnej verzii pre \phi_z
sa s_{m(z, y_1, y_2, \dots, y_m)}
dalo predstaviť ako triviálny program, ktorý hovoril: Keď dostaneš na vstupe z
a (y_1, y_2, \dots, y_n)
, tak spusti \varphi_z(y_1, y_2, \dots, y_m, x_1, x_2, \dots, x_n)
. A našťastie aj v relativizovanom prípade tento postup funguje. Tým, že do programu pridáme prípadné otázky na orákulum B sa nič nezmení.
Trochu formálnejšie: pomocou pôvodnej s-m-n vety. Zavedieme pomocnú ČRF \alpha
definovanú takto:
\alpha(z,x,w)\downarrow \iff (w = <\sigma,y,t>
& <\sigma,<x,y>,t> \in W_{\rho(z)})
Táto ČRF \alpha
je definovaná (konverguje), ak w
je kód trojice, ktorá "počíta s fixovanou premennou x". Ináč povedané je to vtedy, ak po pridaní hodnoty x k vstupu y do trojice w, táto nová upravená trojica je prvkom ČRFálu s indexom z. Nech ČRF \alpha
má index e v pôvodnej numerácii \{\varphi_e\}_{e \in N}
. Použijeme na ňu nerelativizovanú (inú zatiaľ nemáme :) ) verziu s-m-n vety pre dve premenné: \alpha(z,x,w) \simeq \varphi_{s_{2}(e,z,x)}(w) \simeq \varphi_{\beta(z,x)}(w)
. Definičný obor takto definovanej funkcie \varphi_{\beta(z,x)}(w)
tvoria všetky trojice <\sigma,y,t>
z pôvodného ČRFálu \Phi_z
, ktoré "počítajú s x". Inak povedané, ak pomocou W_{\beta(z,x)}
definujeme ČRFál, potom ten zo vstupu y (a množiny B) spočíta t práve vtedy, ak pôvodný ČRFál (vytvorený z W_{z}
) zo vstupu <x,y>
(a množiny B) spočíta t. A to je presne to, čo chceme od s-m-n vety.
ČRFál \Phi_z
, na ktorý sme aplikovali s-m-n vetu, bol reprezentovaný regulárnou množinou trojíc W_{\rho(z)}
. Spôsob, akým sme zostrojili množinu W_{\beta(z,x)}
nám zaručuje, že aj ona je regulárna (platí W_{\rho(\beta(z,x))} = W_{\beta(z,x)}
), a teda aj ona korektne definuje nový hľadaný ČRFál bez potreby použitia funkcie \rho
.
\Phi_{z}(B)(x,y) \simeq \Phi_{\beta(z,x)}(B)(y)
Pomocou ČRF \alpha
sme teda odvodili PRF \beta
, ktorá v relativizovanej s-m-n vete hraje úlohu funkcie s_m
z nerelativizovanej verzie.
Poznámka: s-m-n veta platí absolútne: Existuje \bar{s_m}
také, že pre pre každé B a pre každý číselný vstup y, x platí \Phi_z(B)(y, x) \simeq \Phi_{\bar{s_m}(z, y)}(B)(x)
. Tiež sa hovorí, že platí uniformne alebo "stejnoměrně" (inšpirácia analýzou je asi zrejmá).
<Vyčíslitelnost%20I> sa nám celkom jednoducho relativizuje. Z ČRF sme si vyrobili B-ČRF a ČRFály, s-m-n veta viac menej ostáva, a tiež vieme relativizovať aj Postovu vetu: A je B-rekurzívna (A \leq_T B
) práve vtedy, ak A aj \overline{A}
sú B-rekurzívne spočítateľné (B-RSM). A vieme tiež relativizovať generovanie: A je B-rekurzívne spočítateľná práve vtedy ak existuje prostá (a asi aj úseková) B-ČRF f
, ktorá generuje množinu A. A teraz prichádzame k relativizácii halting problému (operácii skoku).
Operácia skoku
Už vieme, že nerelativizovaný halting problém je nerozhodnuteľný, teda nedokážeme o každom programe rozhodnúť, či sa nad daným vstupom zastaví alebo nie. Množina, ktorá halting problém reprezentuje je K = \{x : \varphi_x(x)\downarrow\}
a vieme, že nie je rekurzívna ale rekurzívne spočítateľná. Táto množina reprezentuje halting problém vzhľadom k T-stupňu \[\emptyset]
, teda vzhľadom k rekurzívnym množinám. My si teraz ukážeme postup, akým sa dá vytvoriť množina reprezentujúca halting problém vzhľadom k najmenšiemu T-stupňu \[a]
, ktorý obsahuje množinu A.
<b>Definícia:</b> (operácia skoku/relativizovaný halting problém). Pre množinu A definujeme množinu A'= \{x: \Phi_x(A)(x)\downarrow\} = \{x: x \in W_x^A\}
. Ide teda o podobnú definíciu akou boli definované množiny K = \{x: \varphi_x(x)\downarrow\} = \{x: x \in W_x\}
a s ňou ekvivalentná K_0 = \{<x,y>: x \in W_y\})
.
Množina A' sa nazýva skok (jump) množiny A.
Pôvodnú množinu K = \{x: x \in W_x\}
môžeme pomocou operácie skoku definovať takto: K = \emptyset'
, pretože platí: \emptyset' = \{x: x \in W_x^{\emptyset}\} = \{x: x \in W_x\} = K
, čo vyplýva z: W_x \equiv W_x^{\emptyset}
. Teda rekurzívne orákulum nám nepomôže a množina W_x^{\emptyset}
je stále rekurzívne spočítateľná. Zápis W_x \equiv W_x^{\emptyset}
znamená, že množina W_x
je rekurzívne izomorfná s množinou W_x^{\emptyset}
a vraj sa to dá jednoducho dokázať.
Skok je množinová operácia z A
do A'
. A'
je relativizovaný halting problém. Prirodzeným zovšeobecnením operácie skoku je jej opakované použitie - môžeme ju totiž iterovať:
Definícia:
*A^0 = A
(nultý skok neskáče)
*A^{(n+1)} = (A^{(n)})'
Vraj sa takto dá postupovať aj na \omega_0
a ďalej, ale to by chcelo trošku lepšie vedieť <Teorie%20množin>.
A na koniec prednášky už len znenie jednej vety, ktorá operáciu skoku charakterizuje: #A' je A-rekurzívne spočítateľná. (obdoba toho, že K je rekurzívne spočítateľná)
#A' nie je A-rekurzívna, \overline{A'}
nie je A-rekurzívne spočítateľná. (obdoba toho istého pre K a \overline{K}
).
#B je A-rekurzívne spočítateľná práve vtedy, ak platí B \leq_1 A'
. (obdoba toho, že K je 1-úplná).
#Ak A je B-rekurzívne spočítateľná a B \leq_T C
, tak A je C-rekurzívne spočítateľná. Pozor, nemýliť si, medzi ktorými dvoma je aký vzťah v predpokladoch!
#A \leq_T B \iff A' \leq_1 B'
#A \equiv_T B \iff A' \equiv_1 B'
V posledných dvoch bodoch je naozaj na jednej strane T-prevoditeľnosť a na druhej 1-prevoditeľnosť. Ale tomu sa budeme venovať až na ďalšej prednáške.