{{TIN065 Prednášky}} Na začiatok trochu opakovania z minulej prednášky. Celý čas formalizujeme pojem, že jedna množina je jednoduchšia ako druhá a vyrábame si tu relatívnu vyčísliteľnosť z efektívnej vyčísliteľnosti. V efektívnej vyčísliteľnosti sme zisťovali, či zadané prvky sú prvkami nejakých množín (a podľa toho, či sme to vedeli zistiť sme mali rekurzívne, prípadne rekurzívne spočítateľné množiny). Teraz zisťujeme, či je niečo prvkom množiny A ak poznáme množinu B. Mali sme nejaké prevoditeľnosti (1\leq_1, m\leq_m, tt\leq_{tt}, wtt\leq_{wtt}, T\leq_T) a z nich je najvšeobecnejšia tá turingovská (T\leq_T). Mali sme model s Pascalom rozšíreným o funkciu is_in_B, mali sme model Turingovho stroja s orákulovou páskou a jeho výpočtový strom. Vieme, že orákulí je nespočítateľne mnoho, keďže množín B môže byť nespočítateľne mnoho. A tiež sme mali rovnosť P(B,x)=yP(B, x) = y práve vtedy, keď (u,v,s)(<x,y,u,v>W)(\exists u, v, s)(<x, y, u, v> \in W) za s krokov a DuBD_u \subseteq B a súčasne DvBD_v \subseteq \overline{B}. Čo je vlastne to WW? Je to množina konečných vetiev v strome, je rekurzívne spočítateľná, a celý ten zápis nám hovorí, že existuje konečná vetva, kde výpočet (prechod stromom) skončí.

Ďalej vieme, že množinu BB stotožňujeme s jej charakteristickou funkciou CBC_B a tiež vieme, čo to znamená, že jeden binárny string je prefixom druhého. Naviac vieme, čo pre binárny string σ\sigma znamená σB\sigma \leq B. Tento zápis jednoducho hovorí, že σ\sigma je začiatkom CBC_B.

Triviálne pozorovanie hovorí, že to, že sa pýtame na množiny DuD_u a DvD_v počas výpočtu (vlastne ich vytvárame až počas výpočtu práve tým pýtaním sa) je prakticky rovnaké, ako keby sme mali k dispozícii konečnú časť CBC_B, a to takú, ktorá obsahuje všetky prvky od začiatku (od nuly) až po DuDvD_u \cup D_v. Pritom tie, ktoré nepotrebujeme, budeme jednoducho ignorovať.

Čiastočne rekurzívny funkcionál

Definujeme si <em>čiastočne rekurzívny funkcionál</em> (skrátene ČRFál) Φ\Phi ako rekurzívne spočítateľnú množinu trojíc <σ,x,y><\sigma, x, y> takých, že ak <σ,x,y>Φ<\sigma, x, y> \in \Phi & <σˊ,x,yˊ>Φ<\acute{\sigma}, x, \acute{y}> \in \Phi & σσˊ\sigma \leq \acute{\sigma}, tak potom y=yˊy = \acute{y}. Φ\Phi si môžeme predstaviť ako program, ktorý pre vstup xx vráti yy, ak pozná počiatočný string σ\sigma množiny BB (teda platí σB\sigma \leq B). Podmienka v definícii (podmienka kozistencie výpočtu) hovorí, že ak je možné zo vstupu xx s pomocou σ\sigma vypočítať yy, tak so znalosťou väčšej časti BB musí byť vypočítané yy rovnaké.

Φ\Phi je teda rekurzívne spočítateľná množina. A pomocou nej si vieme vytvoriť zobrazenie.

Ak Φ\Phi je ČRFál, tak definujeme

*Φ(σ)(x)y\Phi(\sigma)(x)\simeq y ak platí <σ,x,y>Φ<\sigma, x, y> \in \Phi *Φ(τ)(x)y\Phi(\tau)(x)\simeq y ak platí <σ,x,y>Φ<\sigma, x, y> \in \Phi pre nejaké στ\sigma \leq \tau

*Φ(B)(x)y\Phi(B)(x)\simeq y ak platí <σ,x,y>Φ<\sigma, x, y> \in \Phi pre nejaké σB\sigma \leq B.

Prečo je Φ\Phi funkcionál a nie funkcia? Pretože ho aplikujeme najprv na množinový vstup (B)(B) a tým z toho dostaneme funkciu, ktorú už potom môžeme aplikovať na klasický vstup (x)(x). Preto sa aj píše Φ(B)(x)\Phi(B)(x) namiesto Φ(B,x)\Phi(B, x).

Nejaké poznámky

#Ak Φ\Phi je ČRFál, tak Φ(B)\Phi(B) je vždy funkcia, ktorá je definovaná <em>konzistentne</em> so všetkými Φ(σ)\Phi(\sigma) pre všetky σB\sigma \leq B. Neznamená to, že Φ(B)\Phi(B) musí byť nutne definovaná všade. Ide len o podmienku konzistencie.

#Φ(B)\Phi(B) je určite B-efektívne vyčísliteľná (budeme si generovať trojice <σ,x,y><\sigma, x, y> a pýtať sa, či σ\sigma je prefixom BB).

Φ\Phi je naša formalizácia pojmu B-efektívne vyčísliteľné. Na Φ\Phi sa často pozerá práve ako na zobrazenie a neformálne ako na program v B-Pascale.

Turingovská prevoditeľnosť

<b>Definícia:</b> ATBA \leq_T B (čítame to: množina A je turingovsky prevoditeľná na množinu B, A je rekurzívne relatívna k B alebo A je B-rekurzívna), ak existuje ČRFál Φ\Phi taký, že A=Φ(B)A=\Phi(B). Formálne správne je to takto: (x)(CA(x)=Φ(B)(x))(\forall x)(C_A(x) = \Phi(B)(x)).

B-ČRF potom znamená práve Φ(B)\Phi(B) pre rôzne ČRFál-y Φ\Phi. Induktívnym spôsobom by to šlo samozrejme tiež (a dostali by sme aj B-PRF), ale kto by to robil?

Celé to hranie sa robíme kvôli relativizácii. Skúsime vyrobiť vety a tvrdenia, ktoré sme mali pri obyčanej efektívnej vyčísliteľnosti, aj pre B-vyčísliteľnosť.

B-rekurzívna spočítateľnosť

<b>Definícia:</b> Množina A sa nazýva <em>B-rekurzívne spočítateľná</em> (alebo rekurzívne spočítateľná v B), ak platí, že množina AA je doménou funkcie Φ(B)\Phi(B) pre nejaký ČRFál Φ\Phi a množinu BB.

Relativizácia Postovej vety

Množina AA je B-rekurzívna práve vtedy, ak AA aj A\overline{A} sú B-rekurzívne spočítateľné. Dôkaz by bol rovnaký ako pri obyčajnej, nerelativizovanej Postovej vete.

Zatiaľ naša relativizácia vyzerá byť bezproblémová a orákulum (vlastne množinu B) ani nepotrebujeme. To sa však čoskoro zmení. Našim lokálnym cieľom nech zatiaľ je s-m-n veta.

Relativizovaná nummerácia

Potrebujeme nejakú numeráciu zovšeobecnených programov. Inými slovami, chceme očíslovať všetky možné Φ\Phi. Môžeme to urobiť tak, že si vezmeme náš B-Pascal a keďže každý program je konečný objekt, tak každému môžeme priradiť číslo. Týmto si očíslujeme všetky programy v B-Pascale a Φe\Phi_e môžeme chápať ako čiastočne rekurzívny funkcionál definovaný e-tým programom. To je jeden spôsob, ale je možné robiť to aj inak.

Už z predchádzajúceho semestra máme φe\varphi_e ako očíslované obyčajné ČRF a WeW_e ako očíslované rekurzívne spočítateľné množiny, kde We=dom(φe)W_e = dom(\varphi_e). Môžeme teda využiť to, že Φ\Phi je tiež iba rekurzívne spočítateľná množina a pokúsiť sa očíslovať ju pomocou numerácie obyčajných ČRF. To však narazí na problém, a to taký, že aj keď každý ČRFál je rekurzívne spočítateľná množina, tak nie každá rekurzívne spočítateľná množina je ČRFál. To je trošku nepríjemné, ale túto závadu ľahko odstránime. Postupovať budeme zhruba tak, že každú WeW_e hodíme do "strojčeka", ktorý z nej oreže tie časti, ktoré "robia problémy".

Regularizácia

<b>Lemma:</b> Existuje <em>regularizačná funkcia</em>, teda primitívne rekurzívna funkcia ρ\rho taká, že pre každé e je Wρ(e)W_{\rho(e)} ČRFál, teda je splnená podmienka konzistencie. Naviac, ak je WeW_e ČRFál, tak Wρ(e)=WeW_{\rho(e)}=W_e, teda rekurzívne spočítateľné množiny, ktoré už sú ČRFály sa regularizačnou funkciou nezmenia.

<b>Dôkaz:</b>

Idea dôkazu je jednoduchá. Vezmeme si program, ktorý generuje WeW_e. Začneme s prázdnou množinou a stále, keď sa vygeneruje nová usporiadaná trojica <σ,x,y><\sigma, x, y>, tak sa spýtame na konzistentnosť. Ak je nová usporiadaná trojica konzistentná s doteraz vygenerovanou množinou, tak tam túto trojicu jednoducho pridáme. Ak nie je, tak ju zahodíme. A týmto spôsobom efektívne vygenerujeme celé Wρ(e)W_{\rho(e)}.

Všimnime si, čo sa však môže stať. Ak vygenerujeme dve usporiadané trojice: <σ1,x,y1><\sigma_1, x, y_1> a <σ2,x,y2><\sigma_2, x, y_2>, kde y1y2y_1 \neq y_2 a zároveň (σ1σ2(\sigma_1 \leq \sigma_2 alebo σ2σ1)\sigma_2 \leq \sigma_1), tak v takom prípade záleží na poradí, v akom budeme do Wρ(e)W_{\rho(e)} tieto usporiadané trojice pridávať. Pridaním jednej z nich ako prvej totiž určíme, že na vstupe xx s vhodnou časťou orákula je správnym výstupom buď y1y_1 alebo y2y_2. A tým teda obmedzíme, ktoré ďalej vygenerované usporiadané trojice budú konzistentné a ktoré nie. To znamená, že obsah výslednej množiny Wρ(e)W_{\rho(e)} závisí aj na poradí generovania usporiadaných trojíc z WeW_e. To nás však netrápi, pretože si môžeme poradie generovaných usporiadaných trojíc dopredu nejako pevne definovať a používať stále to isté.

Zhrnutie

Pomocou regularizačnej funkcie teda získame numeráciu všetkých ČRFálov, pre ktorú platí: Φe=Wρ(e)\Phi_e = W_{\rho(e)}. Podrobnejšie:

Φe(B)(x)y(σ)(<σ,x,y>Wρ(e)\Phi_e(B)(x) \simeq y \Leftrightarrow (\exists \sigma)(<\sigma, x, y>\in W_{\rho(e)} & σB)\sigma \leq B)

To vlastne hovorí, že e-tý program s množinou B ako orákulom dá na vstupe x výsledok y práve vtedy, ak existuje konečná vetva v našom výpočtovom strome.

Ešte sme si spomenuli, čo to je počítanie v krokoch. Intuitívne je jasné, čo to je s krokov výpočtu. Aby to bolo formálne, tak napíšeme

Φe,s(B)(x)y(σ)(<σ,x,y>Wρ(e),s\Phi_{e,s}(B)(x) \simeq y \Leftrightarrow (\exists \sigma)(<\sigma, x, y>\in W_{\rho(e),s} & σB\sigma \leq B & σs)|\sigma| \leq s), kde Wx,s={y,(js)(T1(x,y,j))}W_{x,s} = \{y, (\exists j \leq s)(T_1(x, y, j))\}, čiže Turingov stroj s kódom x skončí na vstupe y za maximálne s krokov.

Triviálne poznámky na koniec druhej prednášky #Φe,s(σ)(x)\Phi_{e,s}(\sigma)(x)\downarrow je rekurzívne (vieme to triviálne zistiť tým, že to spustíme).

#Φe,s(σ)(x)y\Phi_{e,s}(\sigma)(x) \simeq y je rekurzíve v e, s, σ\sigma, x, y. #Φe(B)(x)\Phi_{e}(B)(x)\downarrow je B-rekurzívne spočítateľné.

#Φe(B)(x)y\Phi_{e}(B)(x)\simeq y je B-rekurzívne spočítateľné. #Φe,s(B)(x)y\Phi_{e,s}(B)(x)\simeq y je <font color=red>B-rekurzívne</font>, nie iba rekurzívne

V poslednom bode nevieme vôbec zhora obmedziť, ako veľmi ďaleké prvky z B budeme potrebovať. Práve preto si nevystačíme s nerelativizovanou ORF, ale potrebujeme sa pýtať orákula B, takže potrebujeme B-ORF.

Na budúcej prednáške bude s-m-n veta a relativizovanie halting problému.