{{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 (<math>\leq_1</math>, <math>\leq_m</math>, <math>\leq_{tt}</math>, <math>\leq_{wtt}</math>, <math>\leq_T</math>) a z nich je najvšeobecnejšia tá turingovská (<math>\leq_T</math>). 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ť <math>P(B, x) = y</math> práve vtedy, keď <math>(\exists u, v, s)(<x, y, u, v> \in W)</math> za s krokov a <math>D_u \subseteq B</math> a súčasne <math>D_v \subseteq \overline{B}</math>. Čo je vlastne to <math>W</math>? 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 <math>B</math> stotožňujeme s jej charakteristickou funkciou <math>C_B</math> a tiež vieme, čo to znamená, že jeden binárny string je prefixom druhého. Naviac vieme, čo pre binárny string <math>\sigma</math> znamená <math>\sigma \leq B</math>. Tento zápis jednoducho hovorí, že <math>\sigma</math> je začiatkom <math>C_B</math>.

Triviálne pozorovanie hovorí, že to, že sa pýtame na množiny <math>D_u</math> a <math>D_v</math> 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ť <math>C_B</math>, a to takú, ktorá obsahuje všetky prvky od začiatku (od nuly) až po <math>D_u \cup D_v</math>. 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) <math>\Phi</math> ako rekurzívne spočítateľnú množinu trojíc <math><\sigma, x, y></math> takých, že ak <math><\sigma, x, y> \in \Phi</math> & <math><\acute{\sigma}, x, \acute{y}> \in \Phi</math> & <math>\sigma \leq \acute{\sigma}</math>, tak potom <math>y = \acute{y}</math>. <math>\Phi</math> si môžeme predstaviť ako program, ktorý pre vstup <math>x</math> vráti <math>y</math>, ak pozná počiatočný string <math>\sigma</math> množiny <math>B</math> (teda platí <math>\sigma \leq B</math>). Podmienka v definícii (podmienka kozistencie výpočtu) hovorí, že ak je možné zo vstupu <math>x</math> s pomocou <math>\sigma</math> vypočítať <math>y</math>, tak so znalosťou väčšej časti <math>B</math> musí byť vypočítané <math>y</math> rovnaké.

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

Ak <math>\Phi</math> je ČRFál, tak definujeme

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

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

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

Nejaké poznámky

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

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

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

Turingovská prevoditeľnosť

<b>Definícia:</b> <math>A \leq_T B</math> (čí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 <math>\Phi</math> taký, že <math>A=\Phi(B)</math>. Formálne správne je to takto: <math>(\forall x)(C_A(x) = \Phi(B)(x))</math>.

B-ČRF potom znamená práve <math>\Phi(B)</math> pre rôzne ČRFál-y <math>\Phi</math>. 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 <math>A</math> je doménou funkcie <math>\Phi(B)</math> pre nejaký ČRFál <math>\Phi</math> a množinu <math>B</math>.

Relativizácia Postovej vety

Množina <math>A</math> je B-rekurzívna práve vtedy, ak <math>A</math> aj <math>\overline{A}</math> 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é <math>\Phi</math>. 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 <math>\Phi_e</math> 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 <math>\varphi_e</math> ako očíslované obyčajné ČRF a <math>W_e</math> ako očíslované rekurzívne spočítateľné množiny, kde <math>W_e = dom(\varphi_e)</math>. Môžeme teda využiť to, že <math>\Phi</math> 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ú <math>W_e</math> 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 <math>\rho</math> taká, že pre každé e je <math>W_{\rho(e)}</math> ČRFál, teda je splnená podmienka konzistencie. Naviac, ak je <math>W_e</math> ČRFál, tak <math>W_{\rho(e)}=W_e</math>, 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 <math>W_e</math>. Začneme s prázdnou množinou a stále, keď sa vygeneruje nová usporiadaná trojica <math><\sigma, x, y></math>, 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é <math>W_{\rho(e)}</math>.

Všimnime si, čo sa však môže stať. Ak vygenerujeme dve usporiadané trojice: <math><\sigma_1, x, y_1></math> a <math><\sigma_2, x, y_2></math>, kde <math>y_1 \neq y_2</math> a zároveň <math>(\sigma_1 \leq \sigma_2</math> alebo <math>\sigma_2 \leq \sigma_1)</math>, tak v takom prípade záleží na poradí, v akom budeme do <math>W_{\rho(e)}</math> tieto usporiadané trojice pridávať. Pridaním jednej z nich ako prvej totiž určíme, že na vstupe <math>x</math> s vhodnou časťou orákula je správnym výstupom buď <math>y_1</math> alebo <math>y_2</math>. A tým teda obmedzíme, ktoré ďalej vygenerované usporiadané trojice budú konzistentné a ktoré nie. To znamená, že obsah výslednej množiny <math>W_{\rho(e)}</math> závisí aj na poradí generovania usporiadaných trojíc z <math>W_e</math>. 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í: <math>\Phi_e = W_{\rho(e)}</math>. Podrobnejšie:

<math>\Phi_e(B)(x) \simeq y \Leftrightarrow (\exists \sigma)(<\sigma, x, y>\in W_{\rho(e)}</math> & <math>\sigma \leq B)</math>

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

<math>\Phi_{e,s}(B)(x) \simeq y \Leftrightarrow (\exists \sigma)(<\sigma, x, y>\in W_{\rho(e),s}</math> & <math>\sigma \leq B</math> & <math>|\sigma| \leq s)</math>, kde <math>W_{x,s} = \{y, (\exists j \leq s)(T_1(x, y, j))\}</math>, č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 #<math>\Phi_{e,s}(\sigma)(x)\downarrow</math> je rekurzívne (vieme to triviálne zistiť tým, že to spustíme).

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

#<math>\Phi_{e}(B)(x)\simeq y</math> je B-rekurzívne spočítateľné. #<math>\Phi_{e,s}(B)(x)\simeq y</math> 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.