Problemă de reziliere

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

Problema terminării (engleză Halting problem, tradusă și cu problema stoping sau problema stop) întreabă dacă este întotdeauna posibil, descrie un algoritm și o anumită intrare finalizată, pentru a determina dacă algoritmul în cauză se termină sau continuă să ruleze pe termen nelimitat . S-a demonstrat că nu poate exista un algoritm general capabil să rezolve problema pentru toate intrările posibile. Cea mai cunoscută versiune a problemei este cea propusă în 1936 de matematicianul Alan Turing , împreună cu dovada indecizibilității sale.

Dovada indecidabilității

Este absurd să presupunem că există un algoritm, implementat într-o pseudolingvă, care ia ca intrare orice alt algoritm a având o intrare finită d și este capabil să stabilească dacă a se termină în timp finit (returnând valoarea adevărată ) sau dacă există not terminate (returnând în acest caz valoarea false ).

 // halts () returnează true dacă intrarea sa se termină, false în caz contrar
C boolean ( a , d ):
    opriri de retur ( a ( d ));

Deoarece atât și mașină d au secvențe de simboluri indistinct, este posibil să se treacă același algoritm ca al doilea parametru al C, care este de a executa C (a, a).

Haideți acum să buclăm un program care nu se termină niciodată (de exemplu, în timp ce este adevărat ): este posibil să construim un alt algoritm numit K care, luând intrarea a, execută bucla, fără a returna nicio valoare dacă C (a, a) returnează adevărat , while returnează false dacă C (a, a) returnează false . Adică:

 // loop () este o funcție care nu se termină
K boolean ( a ):
dacă C ( a , a ) loop ();
întoarce-te adevărat ;

Deci K se încheie prin returnarea valorii adevărate numai dacă algoritmul a cu intrarea a nu se termină, altfel K continuă să se bucle buclând la nesfârșit fără a returna nicio valoare.

Trecând la algoritmul K același K, adică K (K) , acest algoritm se încheie, returnând valoarea adevărată , numai dacă algoritmul K cu intrarea K nu se termină. Adică, K (K) se încheie dacă și numai dacă K (K) nu se termină, ceea ce este o contradicție care se dovedește a fi absurdă ipoteza inițială privind existența unui algoritm C care, având în vedere orice algoritm a și intrarea sa d , este capabil să determine dacă a (d) se termină sau nu.

Dovadă că limbajul problemei de oprire este un limbaj indecidabil

Fie L H să denumească limbajul problemei de oprire și să presupunem că L H este decisiv. Apoi, prin definiție, există o mașină Turing T care decide L H și că pentru orice intrare x se calculează T (x)

  • în starea de acceptare dacă x L H ;
  • în starea de respingere dacă x L H.

Din T obținem a doua mașină Turing T 'prin completarea stărilor de acceptare și respingere a mașinii T, deci calculul lui T' (x) merge

  • în starea de acceptare dacă x L H ;
  • în starea de respingere dacă x L H.

Din T 'derivăm o a treia mașină Turing T' 'care fie acceptă, fie nu se termină, de aceea calculul lui T' '(x) merge

  • în starea de acceptare dacă T 'acceptă;
  • nu se termină dacă T 'respinge.

Deoarece setul de mașini Turing Ť este numărabil atunci T Ť asta înseamnă că n N (set de numere naturale) astfel încât T n (n) = T '' (n).

Dacă T n (n) acceptă atunci T '(n) ar trebui să accepte și el, dar dacă T' (n) acceptă atunci înseamnă că n L H și dacă n L H apoi T n (n) respinge.

Dacă T n (n) respinge atunci T '(n) ar trebui să respingă și el, dar dacă T' (n) respinge atunci n L H și dacă n L H atunci T n (n) acceptă.

În ambele cazuri există o contradicție, prin urmare T '' nu există și din moment ce T '' se obține prin modificări simple la mașina T care decide L H, acest lucru duce la a spune că L H nu este decis.

Relațiile cu alte teoreme

Teorema lui Rice este o versiune mai generală a teoremei care afirmă că problema terminării este indecidabilă. De fapt, se afirmă că, pentru fiecare proprietate non-trivială a funcțiilor parțiale, problema determinării funcțiilor care îndeplinesc această proprietate și care nu este indecidabilă.

linkuri externe

Controlul autorității GND ( DE ) 4247732-3