Riceova věta
- Každá netriviální vstupně/výstupní vlastnost programů je nerozhodnutelná.
-
Upravit znění věty se dá např. takto:
-
Je-li netriviální vstupně/výstupní vlastností TS, pak je nasledující problém nerozhodnutelný.
Název: Zjišťování vlastnosti Vstup: TS Otázka: Má vlastnost ?
-
-
Věta mluví o vstupně/výstupních vlastnostech programů. Pro každý program si představme (obecně konečnou) tabulku s dvěma sloupci:
- v prvním sloupci jsou všechny přípustně vstupy programu
- v druhém sloupci je ke každému vstupu uveden příslušný výstup .
- V případě, že výpočet pro vstup je konečný jako výstup vydá , nebo znak (nedefinováno) v případě, že výpočet na je nekonečný.
-
Tabulka tedy zachycuje [částečné] zobrazení vstupů na výstupu, které realizuje; můžeme jí říkat -tabulka (=input, =output).
-
Každá vlastnost Turingových strojů rozdělí množinu všech TS na dvě disjunktní podmnožiny
- množina strojů, která vlastnost má
- množina strojů, která vlastnost nemá
-
Vlastnost je triviální, jestliže je jedna z oněch dvou příslušných množin prázdná (tedy všechny stroje vlastnost mají nebo nemají)
-
Vlastnost je netriviální, jestliže ji alespoň jeden stroj má a alespoň jeden stroj nemá
Definice převeditelnosti
- Mějme problémy . Řekneme, že problém je algoritmicky převeditelný na problém (), jestliže existuje algoritmus , který pro libovolný vstup problému sestrojí vstup problému , , přičemž platí, že odpověď na otázku problému pro vstup je právě tehdy, když odpověď na otázku problému pro vstup je .
Důkaz Riceovy věty
- Uvažujme libovolnou netriviální vstupně/výstupní vlastnost Turingový stroj. Nechť stroj , který se nezastaví na žádný vstup, vlastnost nemá, a nechť stroj vlastnost má, nebo naopak. Takové dva stroje a nutně musí existovat.
- Uvažme nyní instanci , problému zastavení. Sestrojíme k ní stroj , který se chová takto: vstup nejprve ignoruje a simuluje stroj na (slovo má stroj uloženo ve svém počátečním stavu). Pokud se tato simulace zastaví, tak smaže vše zbylé po této simulaci a pokračuje simulací stroje na vstupu .
- Vidíme, že platí: pokud se zastaví na , tak má stejně chování (stejnou tabulku) jako . Pokud se nezastaví na , tak má stejné chování jako . Kdyby tedy vlastnost byla rozhodnutelná, byl by rozhodnutelný i problém zastavení
- (Kdyby byla, byť jen částečně rozhodnutelná, pak by HP i co-HP bylo částečně rozhodnutelné. Z čehož by vyplývalo, že HP je rozhodnutelné. Což je spor. Proto musí být vlastnost nerozhodnutelná.)
- Ukázali jsme vlastně, že nebo - o který z těchto případů se jedná, je určeno tím, žda stroj (který se nezastaví na žádný vstup) vlastnost nemá či má.
Navigace
Předchozí: Uzávěrové vlastnosti jazyků TS Následující: Složitost algoritmu (časová a paměťová) Celý okruh: 1. Teoretické základy informatiky