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
    • 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á.

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