{{TIN065 Prednášky}}
Opakovanie
Už vieme, že relativizované programy, teda ČRFály, sa dajú očíslovať. Máme tiež regularizačnú funkciu , ktorá zo všeobecnej rekurzívne spočítateľnej množiny vyrobí ČRFál, a to dokonca tak, že a tiež . 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 pre nejaké z.
Taktiež si zavedieme označenia: a . teda označuje definičný obor funkcie . Podobne označuje konečnú množinu tých , o ktorých je možné rozhodnúť, či sú prvkami , za nanajvýš krokov.
O vzťahu
Pozorovania:
#Vzťah je reflexívny a tranzitívny. #Ak A je rekurzívna množina, tak pre každé B.
#Ak a B je rekurzívna, tak aj A je rekurzívna. Pozorovania sú viac menej zrejmé. Keďže pri sa jedná o programy, tak budeme jednotlivé vlastnosti ukazovať pomocou programov (čo je iste pochopiteľnejšie, ako formálne pomocou trojíc ).
To, že je reflexívne () 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 . Chceme zistiť, či . Teda pre dané chceme program, ktorý zistí, či , 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 ). Tento program využijeme a namiesto volania nepovolenej funkcie is_in_B
dáme volanie podprogramu, ktorý počíta 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 , 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 , 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 , 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 bez akéhokoľvek orákula a získame tak program, ktorý rozhoduje množinu A bez využitia orákula.
Ekvivalencia a [[wen:Turing degree|T-stupne]]
Keď mám , tak je jednoduché zadefinovať reláciu .
ak platí & . je zrejme ekvivalencia a pre ekvivalenciu vieme vyrobiť triedy ekvivalencie. Jedna trieda ekvivalencie potom reprezentuje algoritmicky rovnako zložité množiny. Jednotlivé triedy ekvivalencie sa označujú malým písmenom, pod ktorým je vlnovka (v TeXu snáď \underset{\widetilde}{a}
, na tejto Wiki
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲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ň
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲\emptyset]
(trieda ekvivalencie reprezentovaná prázdnou množinou) sú práve všetky rekurzívne množiny. Ak máme množinu A, takParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲a] = \[a]_T = d…
je T-stupeň obsahujúci množinu A.Pomocou usporiadania na jednotlivých množinách môžeme na triedach ekvivalencie zaviesť čiastočné usporiadanie . Formálne ho definujeme takto:
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲A] \leq \[B]
ak platí pre ľubovoľnéParseError: KaTeX parse error: Undefined control sequence: \[ at position 7: A \in \̲[̲A]
aParseError: KaTeX parse error: Undefined control sequence: \[ at position 7: B \in \̲[̲B]
. Je jasné, žeParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲\emptyset] \leq…
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 a zistíme, že jediný T-stupeň, ktorý môžeme algoritmicky rozhodnúť je práve
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲\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>: . My si ale tiež môžeme zobrať numeráciu , 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 na čísla numerácie . To znamená, že existuje rekurzívna permutácia taká, že . Potom môžeme práve všetky rekurzívne spočítateľné množiny reprezentovať ako .
Tento prístup k funkciám a k množinám je univerzálnejší, a preto budeme radšej písať ako . Poznámka: Ak by sme používali iba pre (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: .
<b>Veta:</b><em>(relativizovaná s-m-n veta)</em> Nech je univerzálna B-ČRF. Platí s-m-n veta: Existuje PRF premenných taká, že platí:.
<b>Dôkaz:</b> V pôvodnej verzii pre sa dalo predstaviť ako triviálny program, ktorý hovoril: Keď dostaneš na vstupe a , tak spusti . 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 definovanú takto:
&
Táto ČRF je definovaná (konverguje), ak 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 má index e v pôvodnej numerácii . Použijeme na ňu nerelativizovanú (inú zatiaľ nemáme :) ) verziu s-m-n vety pre dve premenné: . Definičný obor takto definovanej funkcie tvoria všetky trojice z pôvodného ČRFálu , ktoré "počítajú s x". Inak povedané, ak pomocou 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 ) zo vstupu (a množiny B) spočíta t. A to je presne to, čo chceme od s-m-n vety.
ČRFál , na ktorý sme aplikovali s-m-n vetu, bol reprezentovaný regulárnou množinou trojíc . Spôsob, akým sme zostrojili množinu nám zaručuje, že aj ona je regulárna (platí ), a teda aj ona korektne definuje nový hľadaný ČRFál bez potreby použitia funkcie .
Pomocou ČRF sme teda odvodili PRF , ktorá v relativizovanej s-m-n vete hraje úlohu funkcie z nerelativizovanej verzie.
Poznámka: s-m-n veta platí absolútne: Existuje také, že pre pre každé B a pre každý číselný vstup y, x platí . 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 () práve vtedy, ak A aj 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 , 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 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
ParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲\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ňuParseError: KaTeX parse error: Undefined control sequence: \[ at position 1: \̲[̲a]
, ktorý obsahuje množinu A.<b>Definícia:</b> (operácia skoku/relativizovaný halting problém). Pre množinu A definujeme množinu . Ide teda o podobnú definíciu akou boli definované množiny a s ňou ekvivalentná .
Množina A' sa nazýva skok (jump) množiny A.
Pôvodnú množinu môžeme pomocou operácie skoku definovať takto: , pretože platí: , čo vyplýva z: . Teda rekurzívne orákulum nám nepomôže a množina je stále rekurzívne spočítateľná. Zápis znamená, že množina je rekurzívne izomorfná s množinou a vraj sa to dá jednoducho dokázať.
Skok je množinová operácia z do . 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:
* (nultý skok neskáče) *
Vraj sa takto dá postupovať aj na 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, nie je A-rekurzívne spočítateľná. (obdoba toho istého pre K a ). #B je A-rekurzívne spočítateľná práve vtedy, ak platí . (obdoba toho, že K je 1-úplná).
#Ak A je B-rekurzívne spočítateľná a , tak A je C-rekurzívne spočítateľná. Pozor, nemýliť si, medzi ktorými dvoma je aký vzťah v predpokladoch! #
#
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.