• Keine Ergebnisse gefunden

Berechenbarkeit und Komplexit¨at Vorlesung 3

N/A
N/A
Protected

Academic year: 2022

Aktie "Berechenbarkeit und Komplexit¨at Vorlesung 3"

Copied!
26
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Berechenbarkeit und Komplexit¨at Vorlesung 3

Prof. Dr. Wolfgang Thomas Lehrstuhl Informatik 7

RWTH Aachen

22. November 2014

(2)

Alan Turing (1912 - 1954)

(3)

Definition der Turingmaschine (TM)

Komponenten einer TM

Q, die endliche Zustandsmenge Σ, das endliche Eingabealphabet Γ⊃Σ, das endliche Bandalphabet B ∈Γ\Σ, das Leerzeichen (Blank) q0∈Q, der Anfangszustand

¯

q ∈Q, der Endzustand

δ : (Q\ {¯q})×Γ→Q×Γ× {R,L,N}, die Zustands¨uberf¨uhrungsfunktion

Eine TM ist definiert durch das 7-Tupel (Q,Σ,Γ,B,q0,¯q, δ).

(4)

Beispiel

Entscheidungs-TM f¨ur die SpracheL={w1|w ∈ {0,1}} M = (Q,Σ,Γ,B,q0,q¯, δ) mit

Q ={q0,q1,q}¯ Σ ={0,1}

Γ ={0,1,B}

δ gem¨aß Tabelle

δ 0 1 B

q0 (q0,B,R) (q1,B,R) reject q1 (q0,B,R) (q1,B,R) accept

”accept“ steht als Abk¨urzung f¨ur (¯q,1,N).

”reject“ steht als Abk¨urzung f¨ur (¯q,0,N).

Die Tabellendarstellung vonδ heißt auchTuringtafel.

(5)

Laufzeit und Speicherplatz

F¨ur eine terminierende Rechnung einer TM vereinbaren wir Laufzeit = Anzahl der Schritte bis zur Terminierung Speicherplatz = Anzahl der Bandzellen, die w¨ahrend der Rechnung besucht werden

(6)

Techniken zur Programmierung von TMen

Trick 1: Speicher im Zustandsraum

F¨ur die Unterscheidung endlich vieler F¨alle vergr¨oßert man den Zu- standsraum:

F¨urk >0 verwende den Zustandsraum Qneu :=Q× {1, . . . ,k}

Dies rechtfertigt die Redeweise:

“Die TM merkt sich ein Datumd [eines von endlich vielen] und verf¨ahrt entsprechend.”

(7)

Beispiel: Kopieren

Wir geben eine TM an f¨ur den ¨Ubergangqw ⊢qwBw mit w ∈ {0,1}+

Die TM arbeitet aufw =a1. . .ak so:

1 Unterstreiche den aktuellen Buchstaben, merke ihn und gehe nach rechts auf das Feld vor dem zweiten auftretenden Blank.

Konfiguration im 1. Durchlauf:a1a2. . .akB[(q)a1]B

2 Drucke gemerkten Buchstaben, gehe nach links bis auf den unterstrichenen Buchstaben, wandle in zur¨uck (inai) und gehe ein Feld nach rechts.

Konfiguration im 1. Durchlauf:a1(q)a2. . .anBa1

3 Falls aktueller Buchstabe =B, gehe nach links auf das n¨achste B, ein Feld nach rechts, und terminiere in q. Ansonsten weiter bei 1.

(8)

Techniken zur Programmierung von TMen

Trick 2: Mehrspurmaschinen

Eine k-spurige TM ist eine TM, ber der das Band in k Spuren eingeteilt ist.

In jeder Bandzelle stehenk Zeichen, die der Kopf gleichzeitig einle- sen kann.

Formal: Das Bandalphabet enth¨alt Buchstabenvektoren:

Γneu := Σ∪ {B} ∪Γk .

(9)

Beispiel: Addition mittels 3-spuriger TM

Eingabebin(i1)#bin(i2). Ausgabe bin(i1+i2).

Wir verwenden eine 3-spurige TM mit den Alphabeten Σ ={0,1,#} und

Γ =

 0,1,#,

 0 0 0

,

 0 0 1

,

 0 1 0

, . . . ,

 1 1 1

,B

 .

(10)

Beispiel: Addition mittels 3-spuriger TM

Schritt 1: Kopiere die beiden Eingabew¨orter in die erste und zweite Spur rechtsb¨undig ¨ubereinander.

Aus der Eingabe 0011#0110 wird beispielsweise . . .BB

 0 0 0

 0 1 0

 1 1 0

 1 0 0

BB. . . .

Schritt 2: Addition nach der Schulmethode:

Kopf l¨auft von rechts nach links, ¨Ubertr¨age werden im Zustand gespeichert. Ergebnis:

. . .BB

 0 0 1

 0 1 0

 1 1 0

 1 0 1

BB. . . .

Schritt 3: R¨ucktransformation von Spur 3 ins Einspur-Format:

Ausgabe 1001.

(11)

Weitere Techniken der Programmierung

Standardtechniken aus der Programmierung k¨onnen auch auf TMen implementiert werden.

Schleifenhaben wir bereits im Beispiel gesehen.

Variablen k¨onnen realisiert werden, indem wir pro Variable eine Spur reservieren und dort die Werte eintragen.

Felder (Arrays) k¨onnen ebenfalls auf einer Spur abgespeichert werden (etwa mit # als Trennsymbol).

Unterprogramme k¨onnen implementiert werden indem wir eine Spur des Bandes als Prozedurstack verwenden.

So k¨onnen bekannte Algorithmen z.B. zum Sortieren von Daten auf der TM ausgef¨uhrt werden.

(12)

Turingmaschinen mit mehreren B¨andern

k-Band TM

Eine k-Band-TM verf¨ugt ¨uber k Arbeitsb¨ander mit jeweils einen unabh¨angigen Kopf. Die Zustands¨ubergangfunktion ist entsprechend von der Form

δ:Q×Γk →Q×Γk × {L,R,N}k .

Band 1 fungiert als Ein-/Ausgabeband wie bei der (1-Band) TM.

Die B¨ander 2, . . . ,k sind initial mitB beschrieben.

(13)

Simulation k -Band TM durch 1-Band TM

Satz:

Eine k-Band TM M, die f¨ur Eingabel¨ange n in Zeit t(n) terminiert und Platz s(n) ben¨otigt, kann von einer (1-Band) TM M mit in ZeitO(t2(n)) und Platz O(s(n)) simuliert werden.

Beweis:Die TM M verwendet 2k Spuren. Nach Simulation des i-ten Schrittes f¨ur 0≤i ≤t(n) gilt

Die ungeraden Spuren 1,3, . . . ,2k−1 enthalten den Inhalt der B¨ander 1, . . . ,k von M.

Auf den geraden Spuren 2, . . . ,2k ist die jeweilige Kopfposition durch das Zeichen # markiert.

(14)

Initialisierung im Zustand q

0

Gegebene 2-Band TM

· · · B B B 0 0 1 0 1 B B B · · ·

· · · B B B B B B B B B B B · · ·

Simulierende 4-Spur-TM

· · · B B B 0 0 1 0 1 B B B · · ·

· · · B B B # B B B B B B B · · ·

· · · B B B B B B B B B B B · · ·

· · · B B B # B B B B B B B · · ·

(15)

Simulation k -Band TM durch 1-Band-TM

Gegebene 2-Band TM

· · · B 1 c a B 0 1 c c B B · · ·

· · · B B B 0 1 1 c c a B B · · ·

Simulierende 4-Spur-TM

· · · B 1 c a B 0 1 c c B B · · ·

· · · B B B B B B B # B B B · · ·

· · · B B B 0 1 1 c c a B B · · ·

· · · B B # B B B B B B B B · · ·

(16)

Simulation k -Band TM durch 1-Band-TM – Details

Jeder Rechenschritt vonM wird durchM wie folgt simuliert.

Am Anfang steht der Kopf von M auf dem linkesten Vektor mit einem oder mehreren #.

IstM im Zustandq, so hatM einen Zustand, derq kodiert.

Der Kopf vonM l¨auft nach rechts bis zum rechtesten (zum k-ten) #.

Dabei werden die auftretenden #-Zeichen bisk gez¨ahlt und es wird dask-Tupel der Buchstaben gespeichert, die ¨uber den #-Zeichen stehen.

Bei Erreichen desk-ten # R¨uckkehr (durch erneutes Z¨ahlen bisk) zum Vektor mit dem ersten #

Bei jedem # ¨Anderung des dar¨uber stehenden Buchstabens gem¨aß Turingtafel vonM und gegebenenfalls Verschiebung von #

bei Erreichen der ersten Position mit einem #: ¨Ubergang in neuen Zustand gem¨aß Turingtafel von M

(17)

Simulation k -Band TM durch 1-Band-TM – Laufzeit

Laufzeitanalyse(f¨ur gegebene TMM mit Laufzeitt(n)):

Nach i Schritten k¨onnen die #-markierten Felder h¨ochstens 2i Positionen auseinanderliegen.

Der maximale Abstand zwischen den #-Zeichen ist durch O(t(n)) beschr¨ankt.

Somit ist auch die Laufzeit zur Simulation eines Schrittes durch O(t(n)) beschr¨ankt.

Insgesamt ergibt das zur Simulation von t(n) Schritten eine

Laufzeitschranke vonO(t(n)2).

(18)

Weitere TM-Varianten

Transitionen f¨ur Buchstabendrucken und Kopfbewegung getrennt

Linksbeschr¨anktes Rechenband

Rechnung auf “zweidimensionalem Papier”, Kopfbewegungen nach links, rechts, oben, unten (und N).

(19)

Registermaschinen (RAM) ¨uber N

Programm

b Befehlsz¨ahler

c(0) Akkumulator

c(1)c(2)c(3)c(4) · · · unbeschr¨ankter Speicher

(20)

Funktionsweise der RAM

Der Speicher der RAM ist unbeschr¨ankt und besteht aus den Registern c(0),c(1),c(2),c(3), . . .

Die Inhalte der Register sind nat¨urliche Zahlen, die beliebig groß sein k¨onnen.

Die Eingabe sind nat¨urliche Zahlen, die initial in den ersten Registern abgespeichert sind.

Der Befehlsz¨ahler startet mit dem Wert 1. Ausgef¨uhrt wird jeweils der Befehl in derjenigen Zeile auf den der Befehlsz¨ahler verweist.

Die Rechnung stoppt sobald der Befehl END erreicht ist.

Die Ausgabe befindet sich nach dem Stoppen ebenfalls in den ersten Registern.

(21)

Zur Subtraktion und Division ¨uber N

Wir verwendenN als Grundbereich.

Es gibt eine nat¨urliche Korrespondenz zum Bereich Σ Wir m¨ussen die Subtraktion einschr¨anken auf Werte in N: Dies geschieht durch Verwendung der Funktion .− (“monus”):

m−. n=m−n, falls m≥n, ansonsten m−n˙ = 0 Wir wollen das Ph¨anomen der Nichttermination nicht im Bereich der elementaren Anweisungen zulassen.

Daher definieren wir hiern/0 := 0

(22)

Erl¨auterung von RAM-Befehlen

LOAD i:c(0) :=c(i),b :=b+ 1;

INDLOAD i:c(0) :=c(c(i)),b :=b+ 1;

CLOADi:c(0) :=i,b :=b+ 1;

STOREi:c(i) :=c(0), b:=b+ 1;

INDSTOREi:c(c(i)) :=c(0), b:=b+ 1;

ADDi:c(0) :=c(0) +c(i),b :=b+ 1;

CADD i:c(0) :=c(0) +i,b :=b+ 1;

INDADD i:c(0) :=c(0) +c(c(i)), b:=b+ 1;

...

DIV i:c(0) :=⌊c(0)/c(i)⌋,b:=b+ 1;

CDIVi:c(0) :=⌊c(0)/i⌋,b:=b+ 1;

INDIV i:c(0) :=⌊c(0)/c(c(i))⌋,b :=b+ 1;

GOTO j:b:=j

IF c(0) =x GOTO j:b:=j fallsc(0) =x, sonst b:=b+ 1;

END.

(23)

Beispielprogramm f¨ur die RAM: Potenzierung

Eingabe:Zahl m∈N in Register 1, Zahlk ∈Nin Register 2 Ausgabe:Zahlmk in Register 3 (genannterg)

1: CLOAD 1 akku := 1

2: STORE 3 erg :=akku

3: LOAD 2 akku :=reg2

4: If c(0) = 0 THEN GOTO 11 falls akku= 0 dann END

5: CSUB 1 akku :=akku−1

6: STORE 2 reg2 :=akku

7: LOAD 3 akku :=erg

8: MULT 1 akku :=akku·reg1

9: STORE 3 erg :=akku

10: GOTO 3 zur¨uck zu Zeile 3

11: END erg enth¨alt nun mk

Disclaimer:Wir behaupten nicht, dieses Programm sei effizient.

(24)

Bemerkungen zur RAM

Auf einer RAM k¨onnen wir offensichtlich alle Befehle wie beispielsweise Schleifen und Rekursionen, die wir von h¨oheren Programmiersprachen gewohnt sind, realisieren.

Modelle f¨ur die Rechenzeit

Uniformes Kostenmaß:Jeder Schritt z¨ahlt eine Zeiteinheit.

Logarithmisches Kostenmaß: Die Laufzeitkosten eines Schrittes sind proportional zur bin¨aren L¨ange der Zahlen in den angesprochenen Registern.

(25)

Simulation RAM durch TM

Satz:

Jede im logarithmischen Kostenmaß t(n)-zeitbeschr¨ankte RAM kann f¨ur ein Polynomq durch eine O(q(n+t(n)))-zeitbeschr¨ankte TM simuliert werden.

(26)

URM-Programme

Auch f¨ur die RAM kann man gem¨aß Turings Analyse nach einem

“kleinstm¨oglichen” Formalismus fragen.

DieURM-Programme(f¨ur “unbeschr¨ankte Registermaschine”) bilden einen solchen Formalismus.

Definition (URM-Programme)

Ein URM-Programm benutzt VariablenX1,X2, . . .mit Werten in N; es hat die Form

1.instr1,2.instr2, . . . ,k−1.instrk1,k.end

wobei jede Instruktioninstrj f¨ur j = 1, . . . ,k−1 die Form INC(Xi) (f¨urXi :=Xi+ 1), DEC(Xi) (f¨urXi :=Xi−1)˙ oder IFXi = 0 GOTOℓ(mit 1≤ℓ≤k)

hat.

Referenzen

ÄHNLICHE DOKUMENTE

Welche Funktionen sind durch einen Algorithmus

Falls dieses Zeichen eine 1 ist, so l¨osche es, gehe nach links, und wechsel in den Zustand

Beweis: Die Menge aller TM ¨uber {0, 1} ist abz¨ahlbar, also auch die Menge der TM, die eine Sprache

Trivial sind die Eigenschaften “M hat endlich viele Zust¨ande” oder. “M hat

Wenn wir das Startdomino mit einer Folge von Dominos aus der Liste der erlaubten Dominos derart erg¨anzen, dass der obere String ein Prefix des unteren Strings ist, so.

Eine Programmiersprache wird als Turing-m¨ achtig bezeichnet, wenn jede Funktion, die durch eine TM berechnet werden kann, auch durch ein Programm in dieser Programmiersprache

NP ist die Klasse der Entscheidungsprobleme, die durch eine NTM M erkannt werden, deren worst case Laufzeit t M (n) polynomiell beschr¨ankt ist. NP steht dabei f¨ur

CLIQUE ist NP-vollst¨andig... Identifiziere Literale und Knoten, d.h. Zwei Knoten werden durch eine Kante verbunden, wenn.. 1) die assoziierten Literale geh¨oren zu