Algoritmická řešitelnost problémů

Z FAV wiki
(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
m (kategorizace)
(typo)
 
Řádka 1: Řádka 1:
Problém definujeme jako binární relaci mezi množinou instancí problému I (tj. množinou všech možností vstupu) a množinou rešení S. Dve instance mohou mít stejné rešení, stejne tak jedna muže mít více rešení. Algoritmická rešitelnost zkoumá, zda pro všechny formulovatelné problémy lze nalézt algoritmus rešení.
+
Problém definujeme jako binární relaci mezi množinou instancí problému I (tj. množinou všech možností vstupu) a množinou řešení S. Dvě instance mohou mít stejné řešení, stejně tak jedna muže mít více řešení. Algoritmická řešitelnost zkoumá, zda pro všechny formulovatelné problémy lze nalézt algoritmus řešení.
  
Ve 30.l. 20.st. objevil Alan Turing formální opis algoritmu - Turinguv stroj, ve spojení s Alonzem Churchem vytvorili Churchovu-Turingovu tezi a sice, že každý algoritmus (ne problém!) lze vykonat Turingovým strojem. Tezi lze vyvrátit nalezením algoritmu nevykonatelného TS. Moderní programovací jazyky pak byly navrženy tak, aby libovolný program šlo prevést na TS a naopak. Problém, který nelze vyrešit pomocí TS, tedy ani pomocí programu, je pak algoritmicky nerešitelný.
+
Ve 30. letech 20. století objevil Alan Turing formální opis algoritmu - Turingův stroj, ve spojení s Alonzem Churchem vytvořili Churchovu-Turingovu tezi a sice, že každý algoritmus (ne problém!) lze vykonat Turingovým strojem. Tezi lze vyvrátit nalezením algoritmu nevykonatelného TS. Moderní programovací jazyky pak byly navrženy tak, aby libovolný program šlo převést na TS a naopak. Problém, který nelze vyřešit pomocí TS, tedy ani pomocí programu, je pak algoritmicky neřešitelný.
  
Vytvoríme-li takový rozhodovací problém (rešení je ano/ne), který pro každý rozhodovací algoritmus a alespon jeden jeho vstup dává pro tento vstup opacnou odpoved, než daný algoritmus se stejným vstupem, takový problém není rešitelný žádným z techto algoritmu a je tedy nerozhodnutelný.  
+
Vytvoříme-li takový rozhodovací problém (řešení je ano/ne), který pro každý rozhodovací algoritmus a alespoň jeden jeho vstup dává pro tento vstup opačnou odpověď, než daný algoritmus se stejným vstupem, takový problém není řešitelný žádným z těchto algoritmu a je tedy nerozhodnutelný.  
  
První takový problém - problém zastavení - našel sám Turing: program má o všech vytvoritelných programech rozhodnout, zda pro každý ze vstupu
+
První takový problém - problém zastavení - našel sám Turing: program má o všech vytvořitelných programech rozhodnout, zda pro každý ze vstupu
daný program zastaví (tehdy vrací jeho výstup v podobe prirozeného císla + 1) nebo nezastaví (pak vrací 0). Takový program to ale nedokáže rozhodnout sám o sobe (pokud by byl vytvoritelný, patril by mezi zkoumané programy také a musel by ve svém výstupu vrátit svuj výstup + 1, což nejde).
+
daný program zastaví (tehdy vrací jeho výstup v podobě přirozeného čísla + 1) nebo nezastaví (pak vrací 0). Takový program to ale nedokáže rozhodnout sám o sobe (pokud by byl vytvořitelný, patřil by mezi zkoumané programy také a musel by ve svém výstupu vrátit svůj výstup + 1, což nejde).
  
 
{{fav-kiv-bzinf}}
 
{{fav-kiv-bzinf}}
 
[[Kategorie:fav-kiv-bzinf]]
 
[[Kategorie:fav-kiv-bzinf]]

Aktuální verze z 21. 5. 2015, 18:36

Problém definujeme jako binární relaci mezi množinou instancí problému I (tj. množinou všech možností vstupu) a množinou řešení S. Dvě instance mohou mít stejné řešení, stejně tak jedna muže mít více řešení. Algoritmická řešitelnost zkoumá, zda pro všechny formulovatelné problémy lze nalézt algoritmus řešení.

Ve 30. letech 20. století objevil Alan Turing formální opis algoritmu - Turingův stroj, ve spojení s Alonzem Churchem vytvořili Churchovu-Turingovu tezi a sice, že každý algoritmus (ne problém!) lze vykonat Turingovým strojem. Tezi lze vyvrátit nalezením algoritmu nevykonatelného TS. Moderní programovací jazyky pak byly navrženy tak, aby libovolný program šlo převést na TS a naopak. Problém, který nelze vyřešit pomocí TS, tedy ani pomocí programu, je pak algoritmicky neřešitelný.

Vytvoříme-li takový rozhodovací problém (řešení je ano/ne), který pro každý rozhodovací algoritmus a alespoň jeden jeho vstup dává pro tento vstup opačnou odpověď, než daný algoritmus se stejným vstupem, takový problém není řešitelný žádným z těchto algoritmu a je tedy nerozhodnutelný.

První takový problém - problém zastavení - našel sám Turing: program má o všech vytvořitelných programech rozhodnout, zda pro každý ze vstupu daný program zastaví (tehdy vrací jeho výstup v podobě přirozeného čísla + 1) nebo nezastaví (pak vrací 0). Takový program to ale nedokáže rozhodnout sám o sobe (pokud by byl vytvořitelný, patřil by mezi zkoumané programy také a musel by ve svém výstupu vrátit svůj výstup + 1, což nejde).


Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje