Definice problém

  • Problém je určen trojicí , kde je množina (přípustných) vstupů, je množina výstupů a je funkce přiřazující každému vstupu odpovídající výstup
  • Algoritmus řeší problém zadaný trojicí spolu s dohodnutým kódováním vstupů a výstupů (tj. prvků množin a ), jestliže je schopen přijmout (přečíst) kód jakéhokoli vstupu z množiny a vydat k němu po konečném počtu kroků kód výstupu z množiny , pro nějž .

ANO/NE problém, neboli rozhodovací problém

  • U rozhodovacího problému, neboli ANO/NE problému je množina dvouprvková, standardně chápána jako (či ).

  • U takových problémů je přirozenější a kratší definovat žádaný výstup pomocí otázky (týkající se vstupu), na kterou je odpověď buď nebo .

  • Turingův stroj řeší problém právě tehdy, když ke každému vstupu problému stroj vydá problémem předepsaný výstup.

  • Turingův strom řeší problém problém právě tehdy, když ke každému vstupu problému stroj skončí ve stavu , je-li odpověď na otázku problém ano, či ve stavu , je-li odpověď na otázku problému ne.

Příklad rozhodovacího problému

  • Problém prvočíselnosti
    • Název: Prvočíselnost
    • Vstup: Přirozené číslo (zadané např. dekadickým zápisem).
    • Otázka: Je prvočíslo?
  • Množinu všech slov , které TS přijímá, značíme . Jazyk nazýváme jazyk částečně rekurzivní TS a říkáme, že TS částečně rozhoduje jazyk .

  • Pokud navíc platí, že TS zamítá každé slovo, které nepatří do , nazýváme jazyk jazyk rekurzivní TS a říkáme, že TS rozhoduje jazyk .

  • Jazyk nazveme jazyk rekurzivní TS, pokud existuje TS , který jej rozhoduje.

  • Jazyk nazveme jazyk částečně rekurzivní TS, pokud existuje TS , který jej částečně rozhoduje.

Předchozí: Church-Turingova teze, varianty TS Následující: Vztah rekurzivních a částečně rekurzivních jazyků Celý okruh: 1. Teoretické základy informatiky