Was bisher geschah
Wiederholung Berechnungsmodell DTM (deterministische Turing-Maschine)
I DefinitionM = (X,Q,Γ, δ,q0,2) I Konfigurationen
I Konfigurationenfolgen (Berechnungen) I Akzeptanz durch Halt
I Nebenwirkung: ¨Anderung des Bandinhaltes
I Berechnung von Funktionen X∗ →Γ∗ durch DTM I Berechnung von Funktionen N→N durch DTM I Beispiele
I Transformationen zwischen Darstellungen nat¨urlicher Zahlen
Darstellung von Daten
I DTM k¨onnen Zeichenketten akzeptieren und manipulieren (Nebenwirkung der Ausf¨uhrung)
I Zeichenketten ¨uber (endlichem) AlphabetAk¨onnen als Zahlen zur Basis |A|oder |A|+ 1 interpretiert werden.
Besipiele f¨ur Bedeutungen von Zeichenketten:
I W¨orter aus Sprachen I Zahlen
I Darstellung strukturierter Daten, z.B.
I Tupel, I Listen, I B¨aume, I Graphen, I NFA, TM, . . .
I Konfigurationen, Konfigurationenfolgen I Programmtexte,
I . . .
29
Darstellung von Zahlen als Zeichenketten
I nat¨urliche Zahlen: Un¨ar-, Bin¨ar-, . . . -Darstellung I ganze, gebrochene Zahlen: Paare nat¨urlicher Zahlen
mit um Trennzeichen erweitertem Alphabet,
z.B. 2/3 codiert durch Paar (2,3) in Un¨ardarstellung mit Trennzeichen 0 : 110111
I ¨ubliche Approximationen reeller Zahlen durch Maschinenzahlen
Darstellung von Zeichenketten als nat¨ urliche Zahlen
Darstellung des Alphabets (endliche Menge):
1. (beliebige) Reihenfolge der Symbole inAfestlegen:
A={a1, . . . ,a|A|}
2. Nummerierung der Symbole:
Zuordnung ∀i∈ {1, . . . ,|A|}:c(ai) =i∈N
3. zur Weiterverarbeitung: Un¨ardarstellungc0 :A→1∗ mit
∀i∈ {1, . . . ,|A|}:c0(ai) = 1i Beispiel:A={♣,♠,♥,♦},
Nummerierungc:A→Nmitc(♣) = 1,c(♠) = 2,c(♥) = 3,c(♦) = 4 undc0:A→1+mitc0(♣) = 1,c0(♠) = 11,c0(♥) = 111,c0(♦) = 1111 Darstellung von W¨ortern w ∈A∗uber endlichem Alphabet¨ A:
1. Nummerierung und Un¨ardarstellung der Alphabet-Symbole (s.o.), 2. Verkettung mit 0 als Trennsymbol
c0(w) =c0(w1. . .w|w|) =c0(w1)0c0(w2)0. . .0c0(w|w|)
3. Durch Interpretation der Zeichenkettec0(w)∈ {0,1}∗ als Bin¨arzahl wirdw die eindeutige Zahlc00(w)∈Nzugeordnet.
Beispiel:c0(♣♥♠) = 10111011,c00(♣♥♠) = 187
31
Darstellung strukturierter Daten
I direkte Darstellung c :D →A∗ der einfachen Datend ∈D (oder Numerierung in Un¨ardarstellung analog Alphabet) I Codierung von Paaren, Tupeln, Listen (x1, . . . ,xn) als W¨orter
z.B. (5,♥,2,1)7→11111101110111011
I Schachtelungen z.B. durch neue oder mehrfache Trennzeichen z.B. (5,(♥,2),1)7→111111•1110111•11 oder
(5,(♥,2),1)7→1111110011101110011
Beispiel: Darstellung von Graphen
(endliche gerichtete) GraphenG = (V,E) mitE ⊆V ×V Idee:
BetrachteV als Alphabet undE als Folgen der L¨ange 2 ¨uberV I (beliebige) Reihenfolge der Knoten festlegen V ={v1, . . . ,v|V|} I Numerieren der Knoten, z.B. un¨ar:cV :V →1∗ mit
∀i∈ {1, . . . ,|V|}:cV(vi) = 1i+1
I Darstellung der Kanten:cE(u,v) =cV(u)0cV(v)
I c(G) =cV(v1)0· · ·0cV(v|V|)000cE(u1,v1)00· · ·00cE(u|E|,v|E|) oder
I Darstellung jedes Knotensv ∈V als Paar
(cV(v), Darstellung der Liste der Namen aller Nachbarn) (ggf. als Tupel mit weiteren Daten, z.B. Schl¨ussel)
I c(G) = Darstellung vonG Graph als Codierung der Liste aller Knoten (Adjazenzliste)
oder . . .
33
Darstellung von TM
Darstellung jeder TMM = (X,Q,Γ, δ,q0,2) als (endliches) Wort ¨uber dem endlichen Alphabet
X0 =X∪Γ∪Q∪ {L,R,N}∪ Klammern∪Trennzeichen m¨oglich Die Menge aller solcher Darstellungen von TM ist eine Sprache ¨uberX0.
Darstellung von0 TM als{0,1}-Folge:
I Alphabet, Zust¨ande, Richtungen in Un¨arcodierung (aus 1∗) I Trennzeichen als Folgen aus 0∗
UA: Hat die Sprache aller¨ {0,1}-Folgen, die in dieser Darstellung korrekte Codierungen von TM sind, einen Chomsky-Typ? Falls ja, welchen?
Beispiel: Darstellung von TM
Darstellung von TM als Wort aus{0,1}∗
Beispiel: TMM = (X,Q,Γ, δ,q0,2) in{0,1}∗ mit I X ={1}, Γ ={1,2} mitc(1) = 1,c(2) = 11
I Q ={q0,q1} mit Startzustandq0:c(q0) = 1,c(q1) = 11 I B ={L,R,N}mitc(L) = 1,c(R) = 11,c(N) = 111 I δ={(2,q0,1,q1,R),(2,q1,1,q0,L),(1,q0,1,q1,L)}
f¨ur jeden ¨Ubergangu= (a,p,b,q,r)∈δ:
Darstellung :c(u) =c(a)0c(p)0c(b)0c(q)0c(r) c(2,q0,1,q1,R) = 11
|{z}2
0 1
|{z}q0
0 1
|{z}
1
0 11
|{z}q1
0 11
|{z}
R
c(2,q1,1,q0,L) = 11011010101 c(1,q0,1,q1,L) = 1010101101 Darstellung der TMM (δgen¨ugt):
c(M) = c(2,q0,1,q1,R)00c(2,q1,1,q0,L)00c(1,q0,1,q1,L)
= 1101010110110011011010101001010101101
35
Darstellung von TM-Konfigurationen
Konfigurationen einer TMM = (X,Q,Γ, δ,q0,2):
upv ∈Γ∗×Q×Γ∗
I Darstellung von u und v als{0,1}-Folgen (wie bisher) I Darstellung von p als Un¨arzahl
I Markierung der Kopfposition (Position der als Zustand zu interpretierenden Zeichenkette)
z.B. durch doppeltes Trennzeichen nach Zustand
Beispiel: TM von voriger Folie Startkonfiguration 2
|{z}u
q0 11
|{z}
v
7→ 11
|{z}
c(u)
0 1
|{z}
c(q0)
00 1010
| {z }
c(v)
G¨ odelisierung
(Kurt G¨odel 1906 - 1978)
I Die bisher vorgestellten Codierungenc ordnen jedem Elementx der darzustellenden Menge (Graphen, TM, Konfigurationen, . . . ) ein eindeutigesWortc(x)∈ {0,1}∗ zu.
I Interpretation der Zeichenkette c(x)∈ {0,1}∗ als Bin¨arzahl ordnet jedem Elementx der darzustellenden Menge eineeindeutige nat¨urliche Zahlc0(x)∈Nzu.
1. Beide Funktionenc undc0 sind injektiv und algorithmisch berechenbar.
2. Es l¨asst sich algorithmisch feststellen, ob ein Wortw ∈ {0,1}∗(eine Zahln∈N) die Darstellung eines Elementes ist. ( ¨UA: Wie?) 3. Die Umkehrfunktionen c−1:c(X)→X undc0−1:c0(X)→X sind
injektiv.
Aus jeder korrekten Darstellung l¨asst sich das Elementx eindeutig algorithmisch berechnen.
Solche Funktionenc undc0 heißen G¨odelisierungen.
F¨ur jede G¨odelisierungc heißtc(x)G¨odelnummerdes Elementesx.
37
Darstellung von Problemen als Sprachen
Aufgaben (Probleme): Zuordnung zwischen I Eingaben
I passenden Ausgaben (oft strukturierte Daten)
Aufgabe: Abbildung = Menge von Paaren (Eingabe, Ausgabe) (¨ubliche Codierungen)
Spezialfall Entscheidungsprobleme: Ausgabe∈ {0,1}
I definiert eine Eigenschaft auf der Menge aller Eingaben I repr¨asentiert durch Urbild der 1
I charakteristische Funktion der Menge der Eingaben mit dieser Eigenschaft
Aufgaben und Instanzen – Beispiele
I Enthaltensein in einer Folge (von Elementen des Typs E) Aufgabe: F ={((x1, . . . ,xn),y)∈E∗×E |
∃k ∈ {1, . . . ,n}:xk =y} Menge aller Paare ((x1, . . . ,xn),y) mit
y ∈ {x1, . . . ,xn}
Instanz: ((1,3,4,6),4) (Gilt ((1,3,4,6),4)∈F? ) Ja, ((1,3,4,6),4)∈F, weil 4∈ {1,3,4,6}
L¨osungsverfahren: (beliebiges) Suchverfahren in Folgen I SAT (Erf¨ullbarkeitsproblem der Aussagenlogik)
Aufgabe: SAT ={ϕ∈AL|Mod(ϕ)6=∅}
Menge aller erf¨ullbaren aussagenlogischen Formeln Instanz: ¬a∧(a∨b∨c)∧ ¬c∧ ¬b
(Gilt (¬a∧(a∨b∨c)∧ ¬c∧ ¬b)∈SAT ?) Nein, weil Mod(ϕ) =∅
L¨osungsverfahren (Entscheidungsverfahren):
I semantisch: Wahrheitswerttabellen I syntaktisch: Kalk¨ule, z.B. Resolution,
¨aquivalente Umformungen von . . . zu . . .
39
Beispiel: Graphen-Probleme
I k-F¨arbung eines Graphen G = (V,E):
Abbildung f :V → {1,2, . . . ,k}
I F¨arbungf von G = (V,E) ist konfliktfrei gdw. ∀xy ∈E :f(x)6=f(y)
kCOL ={G | ∃f :f ist konfliktfreie k-F¨arbung vonG } Hamilton-Kreis inG = (V,E):
Kreis inG durch alle Knoten inV
HC={G |G ist ungerichteter Graph undG enth¨alt Hamilton-Kreis} (Hamiltonian Circuit)
DHC={G |G ist gerichteter Graph undG enth¨alt gerichteten Kreis durch alle Knoten} (Directed HC)
Codierung in nat¨ urlichen Zahlen
DTM akzeptieren / manipulieren Zeichenketten.
Die meisten Berechenbarkeitsmodelle (z.B. Programme, rekursive Funktionen) rechnen aber mit nat¨urlichen Zahlen.
Satz: Das ist keine Einschr¨ankung der Allgemeinheit,
denn man kann jedes strukturierte Datum in eine einzige nat¨urliche Zahl codieren.
Vorgehen wie in den vorangegangenen Beispielen:
1. Darstellung als Zeichenkettec(d)∈ {0,1}∗ 2. Interpretation von c(d) als Bin¨arzahlc0(d)∈N
Bei Berechnungen mit Zahlen ist der Umweg ¨uber Zeichenketten oft zu aufwendig.
deshalb gesucht:
direkte Codierung und Decodierung strukturierter Daten in nat¨urlichen Zahlen
41
Codierung von Zahlenpaaren
gesucht sind (TM-)berechenbare Funktionen Konstruktor: C :N2→N
Destruktoren: P1,P2:N→N Testfunktion: T :N→ {0,1}
mit den folgenden Eigenschaften (Spezifikation):
∀x1,x2 ∈N : P1(C(x1,x2)) =x1
∀x1,x2 ∈N : P2(C(x1,x2)) =x2
∀x ∈N : T(x) = 1 ↔ ∃x1,x2 ∈N:x =C(x1,x2) verschiedene M¨oglichkeiten, z.B.:
I C(x1,x2) = (x1+x2)(x1+x2+ 1)/2 +x1
I C(x1,x2) = 2x1(2x2+ 1), I C(x1,x2) = 2x1·3x2
UA: jeweils¨ C(2,3),C(3,2),T(10),T(12),P1(12),P2(12),
Codierung von Listen
Konstruktor L:N∗ →N Destruktoren Di :N→N. zwei (von vielen) M¨oglichkeiten:
I mittels einer Paar-Codierung C IA: L([]) = 0
IS: ∀a∈N∀w ∈N∗:L([a]◦w) =C(a+ 1,L(w)) I direkte Kodierung als Produkt von Primzahlpotenzen
L([x0,x1, . . . ,xn]) = 2x0+1·3x1+1· · · · ·p(n)xn+1. UA: jeweils¨ L([]),L([5]),L([2,3,0]), Algorithmus f¨urDi UA: die Funktion¨ p :n7→ dien-te Primzahl, also p(0) = 2,p(1) = 3,p(2) = 5, . . . ist While-berechenbar.
43
Codierung von B¨ aumen
Motivation
I allgemein: Baum = Term in einer Signatur,
I Signatur: eine endlichen Menge von Funktionssymbolen mit zugeordneter Stelligkeit.
I Bsp: Σ ={(f,2),(g,1),(a,0)}, t =f(f(a,g(a)),a)∈Term(Σ).
Notation root(t) =f,args(t) = [f(a,g(a)),a].
I wird u.a. ben¨otigt, um (pr¨adikatenlogische) Formeln als Zahlen zu kodieren.
Realisierung:B(t) =C(num(root(t)),L([B(t1), . . . ,B(tk)])) mit args(t) = [t1, . . .], Paar-Kodierung C,
Listen-KodierungL, sowie Symbol-Nummerierung