Teoria obliczeń i złożoności obliczeniowej Wykład 5

Transkrypt

Teoria obliczeń i złożoności obliczeniowej Wykład 5
Teoria obliczeń i złożoności obliczeniowej
Wykład 5 (18.03.2005)
Przykład: (program do DTM-U z poprzedniego wykładu)
1 000 010 110110 001 011 110111110 001 011 11010 100 111 11
1931r. Kurt Goedel pokazuje niezupełność arytmetyki Peano.
Problem STOP
Dana: P - Program Turinga-Posta; x - dana do P
Pytanie: Czy dla danego (dowolnego) programu Turinga-Posta i danej do tego programu
x można za pomocą obliczenia sprawdzić, czy program P zatrzyma się jeśli jego
obliczenie rozpoczęto z daną x.
TWIERDZENIE (o problemie stopu)
Nie istnieje procedura obliczeniowa sprawdzająca, czy dane wyrażenie taśmowe
doprowadzi ostatecznie do zatrzymania programu uniwersalnego U jeśli obliczenie U
zostało rozpoczęte dla tego wyrażenia taśmowego.
DOWÓD: (niewprost)
1. Założenie: istnieje procedura PUS, która realizuje rozwiązanie problemu stopu dla
programu uniwersalnego U.
2. v ∈ℕ (zapis binarny v)
3. P - procedura, która zawiera w sobie PUS, i która realizuje następujący algorytm:
3.1. Próbuj zdekodować v jako pewien program Turinga-Posta, tzn. znajdź takie P, iż
kod(P) = v. Jeśli taki P nie istnieje to idź do 3.1, w przecziwnym razie idź do 3.2.
3.2. Zrób kopię ciągu v i umieść ją po v (stworzony ciąg vv = kod(P)v).
3.3.Użyj procedury PUS, aby sprawdzić, czy program U zatrzyma się, gdy rozpocznie
1/2
swoje obliczenie od wyrażenia taśmowego vv. Jeśli TAK to idź do 3.3. Jeśli NIE to
zatrzymaj się.
4. Procedura P zatrzyma się wtedy i tylko wtedy, gdy:
4.1. v = kod(P)
4.2. program uniwersalny U nie zatrzyma się, gdy rozpocznie obliczenie od wyrażenia
taśmowego vv.
5. Ponieważ U symuluje obliczenie programu P na danej v, to możemy napisać, że P
zatrzyma się wtedy i tylko wtedy, gdy ∃P : kod  P 1 =v i P1 na v nie zatrzyma się.
1
6. Ponieważ P jest obliczalna, to istnieje program Turinga-Posta P0 opisujący P.
7. Obliczenie programu P0 zatrzyma się z daną v wtedy i tylko wtedy, gdy obliczenie U
nie zatrzyma się z daną vv.
8. Niech v0 = kod(P0)
9. (z konstrukcji P) z punktu 7:
P0 zatrzyma się na danej v0 wtedy i tylko wtedy, gdy U nie zatrzyma się z daną v0v0 .
10. Program uniwersalny U pracując na danej wejściowej v0 v0 = kod(P0)v0 symuluje
obliczenie P0 na danej v0. U zatrzyma się z daną v0 v0 wtedy i tylko wtedy, gdy P0
zatrzyma się z daną v0.
Z 9. i 10. wynika sprzeczność.
Czyli nie istnieje PUS rozwiązująca problem stopu.
Przykłady problemów nieobliczalnych:
•
równania diofantyczne
4x - 2y = 3
4x - y = 3
x2 + y2 = z2
•
problem słowa
Dany jest alfabet {a, b, c} i słowa nad tym alfabetem oraz pewne równania:
ba = abc
bc = cba
ac = ca
Czy można za pomocą danych równać przekształcić jedno słowo nad alfabetem w
drugie słowo nad tym alfabetem.
2/2

Podobne dokumenty