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ý.
  • Definice problému:
    • Název: Zjišťování vlastnosti
    • Vstup: TS
    • Otázka: Má vlastnost ?
  • Věta mluví o vstupně/výstupních vlastnostech programů, co to je?

Vstupně/výstupní vlastnost (I/O vlastnost)

  • Pro každý program si představme (obecně konečnou) tabulku s dvěma sloupci:
    1. v prvním sloupci jsou všechny přípustně vstupy programu
    2. 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ý.
  • Mají-li 2 TS stejnou I/O tabulku, pak oba musí onu vlastnost mít nebo oba nemít

Triviální a netriviální vlastnosti

  • Každá vlastnost TS rozdělí množinu všech TS na dvě disjunktní podmnožiny
    1. množina strojů, která vlastnost
    2. množina strojů, která vlastnost nemá
  • Triviální vlastnosti … alespoň jedna z oněch dvou množin je prázdná (všechny TS vlastnost mají nebo nemají)
  • Netriviální vlastnosti … alespoň jeden stroj ji nemá a jeden má (množiny nejsou prázdné)

Algoritmická převoditelnost

  • Jde o relace (tzv. mapping reduction)
  • Vztahuje se pouze na 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 .
  • Matematicky: Existuje vyčíslitelná funkce taková, že .
  • Ke každému problému náleží jazyk, takže můžeme chápat jako

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