Ausdrucksfähigkeit der Alg.-Modelle
Ausdrucksfähigkeit der Alg.-Modelle
Ausdrucksfähigkeit der Alg.-Modelle
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
<strong>Ausdrucksfähigkeit</strong> <strong>der</strong> <strong>Alg</strong>.-<strong>Modelle</strong><br />
Leisten imperative <strong>Alg</strong>orithmen mehr als<br />
Registermaschinen?<br />
Kann man Leistung von <strong>Alg</strong>orithmenmodellen<br />
vergleichen?<br />
Problem: <strong>Modelle</strong> sind auf unterschiedlichen Argumentund<br />
Wertebereichen definiert:<br />
applikative-<strong>Alg</strong>orithmen: f : Z n → Z, n variabel<br />
imperative-<strong>Alg</strong>orithmen: f : Z n → Z m , n,m variabel<br />
Markov-<strong>Alg</strong>orithmen: f : X → Y, X, Y ⊆ A *<br />
Registermaschien-<strong>Alg</strong>orithmen: f : Z n → Z m , n,m variabel<br />
Idee: Vereinheitlichung <strong>der</strong> Kodierung <strong>der</strong> Argumentund<br />
Wertebereiche (z.B. als Texte über A * )<br />
Beweis (konstruktiv; hier nicht durchgeführt): Abbildung mittels<br />
eines geeigneten "Übersetzers„, <strong>der</strong> ein Modell in ein<br />
an<strong>der</strong>es überführt, das die gleiche Funktion berechnet.<br />
239
CHURCH’sche These<br />
Aus Möglichkeit <strong>der</strong> Abbildung zwischen<br />
<strong>Modelle</strong>n folgt<br />
alle bisher diskutierten <strong>Alg</strong>orithmenmodelle (und<br />
weitere) leisten prinzipiell gleich viel<br />
sie führen auf die gleiche Klasse berechenbarer<br />
Funktionen<br />
Die Klasse <strong>der</strong> intuitiv berechenbaren Funktionen<br />
stimmt mit den formalen Klassen <strong>der</strong> (Registermaschinen-,<br />
imperativ, applikativ, Markov-, etc.)<br />
berechenbaren Funktionen überein.<br />
These prinzipiell nicht beweisbar!<br />
240
Universelle <strong>Alg</strong>orithmenmodelle<br />
Ein <strong>Alg</strong>orithmenmodell heißt universell, wenn<br />
damit alle berechenbaren Funktionen<br />
beschrieben werden können.<br />
Eigenschaften universeller Sprachen (u.a. alle<br />
Programmiersprachen)<br />
<strong>der</strong> nutzbare Bereich für Daten / Parameterwerte<br />
ist nicht beschränkt<br />
Konzepte wie Rekursion o<strong>der</strong> Iteration (while)<br />
mit bedingten Sprüngen erlauben (bedingte)<br />
Wie<strong>der</strong>holung von Teilaufgaben<br />
241
Zusammenfassung<br />
Formale <strong>Modelle</strong><br />
Registermaschine<br />
Abstrakte Maschinen<br />
Markov-<strong>Alg</strong>orithmen<br />
<strong>Ausdrucksfähigkeit</strong>: Church’sche These<br />
Literatur: Saake/Sattler: <strong>Alg</strong>orithmen und<br />
Datenstrukturen, Kapitel 6<br />
242
Teil VI<br />
Eigenschaften von <strong>Alg</strong>orithmen<br />
243
Überblick<br />
Berechenbarkeit und Entscheidbarkeit<br />
Korrektheit von <strong>Alg</strong>orithmen<br />
Komplexität<br />
244
Berechenbarkeit und Entscheidbarkeit<br />
Frage: Gibt es Problemstellungen, für die kein<br />
<strong>Alg</strong>orithmus zur Lösung existiert?<br />
O<strong>der</strong>: Kann man alles berechnen bzw. programmieren?<br />
Berechenbarkeit:<br />
Eine Funktion f : N k → N heißt berechenbar, wenn es<br />
einen <strong>Alg</strong>orithmus gibt, <strong>der</strong> für Eingaben (x 1 , …, x k ) ∈ N k<br />
terminiert, d.h. in endlicher Zeit f(x 1, …, x k) berechnet.<br />
Die Menge dieser Funktionen entspricht allen jemals mit<br />
Computern berechenbaren Funktionen (CHURCH’sche<br />
These)<br />
245
Existenz nichtberechenbarer Funktionen<br />
nicht jede Funktion ist berechenbar<br />
folgt aus Gödelschen Unvollständigkeitssatz<br />
Jedes hinreichend mächtige formale System ist<br />
entwe<strong>der</strong> wi<strong>der</strong>sprüchlich o<strong>der</strong> unvollständig.<br />
Abzählung <strong>der</strong> Sätze des formalen Systems<br />
Aussage konstruieren: „Satz x ist nicht beweisbar“<br />
Diese Aussage wird Satz x des Systems<br />
entwe<strong>der</strong>: Satz x ist wahr, dann nicht beweisbar<br />
o<strong>der</strong>: Satz x ist falsch, dann beweisbar und demnach wahr<br />
→ Wi<strong>der</strong>spruch<br />
sowie <strong>der</strong> Unlösbarkeit <strong>der</strong> Halteproblems<br />
246
Einschub: Abzählbarkeit (1)<br />
Eine Menge ist abzählbar, wenn sie bijektiv auf N<br />
abgebildet werden kann.<br />
Z ist abzählbar wenn man Zahlen abwechselnd mit<br />
positivem und negativen Vorzeichen auflistet: 0, 1, -1, 2,<br />
-2, 3, -3, …<br />
Q + ist abzählbar, wenn man die Zahlen in einer Tabelle<br />
anordnet:<br />
1<br />
2<br />
3<br />
4<br />
M<br />
1<br />
1/1<br />
2/1<br />
3/1<br />
4/1<br />
M<br />
2<br />
1/2<br />
2/2<br />
3/2<br />
4/2<br />
M<br />
(Für Q kann man analog Z verfahren und abwechselnd<br />
positive und negative Zahlen in <strong>der</strong> Spalte aufführen)<br />
3<br />
1/3<br />
2/3<br />
3/3<br />
4/3<br />
M<br />
4<br />
1/4<br />
2/4<br />
3/4<br />
4/4<br />
M<br />
…<br />
…<br />
…<br />
…<br />
…<br />
O<br />
247
Einschub: Abzählbarkeit (2)<br />
R ist überabzählbar (Cantor‘s Diagonalverfahren)<br />
Sei r i irgendeine Folge reeller Zahlen und a ij <strong>der</strong>en Dezimalziffern:<br />
r<br />
r<br />
r<br />
r<br />
M<br />
1<br />
2<br />
3<br />
4<br />
=<br />
=<br />
=<br />
=<br />
Sei jetzt x = 0,x 1 x 2 x 3 … wobei x i = (a ii + 1) mod 10 .<br />
→ x unterscheidet sich somit von allen Zahlen <strong>der</strong> Folge<br />
Für jede Folge von Zahlen zwischen 0 und 1 gibt es somit eine Zahl<br />
zwischen 0 und 1, die nicht in dieser Folge enthalten ist.<br />
Deshalb enthält keine Folge alle reellen Zahlen in [0,1[.<br />
Das Intervall [0,1[ ist deshalb überabzählbar.<br />
Somit ist auch ganz R überabzählbar.<br />
0,<br />
0,<br />
0,<br />
0,<br />
a<br />
a<br />
a<br />
a<br />
11<br />
21<br />
31<br />
41<br />
a<br />
a<br />
a<br />
a<br />
12<br />
22<br />
32<br />
42<br />
a<br />
a<br />
a<br />
a<br />
13<br />
23<br />
33<br />
43<br />
a<br />
14<br />
a<br />
a<br />
a<br />
24<br />
34<br />
44<br />
K<br />
K<br />
K<br />
K<br />
248
Existenz nichtberechenbarer Funktionen (Beweisskizze)<br />
Eigenschaft von <strong>Alg</strong>orithmen:<br />
Je<strong>der</strong> <strong>Alg</strong>orithmus lässt sich durch einen<br />
endlichen Text über einem festen, endlichen<br />
Alphabet beschreiben.<br />
Texte über Alphabet A = {a 1, …, a n} (mit<br />
alphabetischer Ordnung):<br />
A * = {ε, a 1 , …, a n , a 1 a 1 , a 1 a 2 , …, a 5 a 3 a 3 a 1 a 5 a 2 , …}<br />
Aufzählung <strong>der</strong> Wortlänge nach; bei gleicher<br />
Länge lexikographisch<br />
→ Menge <strong>der</strong> Zeichenketten abzählbar (bijektiv<br />
auf natürliche Zahlen abbildbar)<br />
249
Existenz nichtberechenbarer Funktionen (Beweisskizze)<br />
Cantor’sches Diagonalverfahren<br />
Menge <strong>der</strong> <strong>Alg</strong>orithmentexte ist abzählbar<br />
(Zeichenketten)<br />
beweisbar: Menge <strong>der</strong> Funktionen ist<br />
überabzählbar<br />
Diagonalbeweis<br />
speziell einstellige Funktionen F auf Z, f : Z → Z<br />
Annahme: F sei abzählbar: F = {f 0 , f 1 , …}<br />
ist folgendes g in F enthalten?<br />
Wi<strong>der</strong>spruch!<br />
g(x) = f abs(x) (x) + 1<br />
g(0) = f 0 (0) + 1<br />
g(1) = f 1 (1) + 1<br />
g(2) = f 2 (2) + 1<br />
g(-1) = f 1 (1) + 1<br />
250
Konkrete nichtberechenbare Funktionen 1<br />
Vorbemerkungen<br />
1. Berechnet werden partielle Funktionen f:A * →A *<br />
über einem festen Alphabet A.<br />
2. Auch die <strong>Alg</strong>orithmen selbst lassen sich als<br />
Text über A darstellen.<br />
Alternative: Gödelisierung<br />
Kodierung von <strong>Alg</strong>orithmentexten als Zahlen<br />
251
Konkrete nichtberechenbare Funktionen 2<br />
Sei x ∈ A * : ein beliebiger Text.<br />
ϕ x : die vom <strong>Alg</strong>orithmus mit Text x berechnete Funktion.<br />
x kein sinnvoller <strong>Alg</strong>orithmentext → ϕ x überall undefiniert.<br />
Sei f : A * → A * eine partielle Funktion. Dann ist<br />
dom f := {x ∈ A * | f(x) ist definiert }<br />
<strong>der</strong> Urbildbereich von f (dom für „domain“).<br />
Die (totale) Funktion h : A * → A * ,<br />
⎧ε, falls x ∈ dom<br />
h(<br />
x)<br />
= ⎨<br />
⎩a<br />
sonst<br />
ist nicht berechenbar.<br />
ϕ<br />
x<br />
252
Halteproblem<br />
Funktion h basiert auf einem unentscheidbaren<br />
Problem<br />
Kann man ein Programm entwickeln, das als Eingabe<br />
den Quelltext eines zweiten Programms sowie dessen<br />
Eingabewerte erhält und entscheiden kann, ob dieses<br />
zweite Programm terminiert?<br />
253
Spezielles Halteproblem<br />
h(x) entscheidet durch die Ausgaben ε o<strong>der</strong> a,<br />
ob x∈dom ϕ x ist o<strong>der</strong> nicht.<br />
x∈dom ϕ x bedeutet, dass ϕ x(x) definiert ist, und<br />
dies wie<strong>der</strong>um heißt, dass <strong>der</strong> <strong>Alg</strong>orithmus mit<br />
Text x bei Eingabe von x irgendwann anhält.<br />
Anwendung eines <strong>Alg</strong>orithmus auf die eigene<br />
Beschreibung.<br />
Die Funktion h drückt die Frage aus:<br />
„Hält ein <strong>Alg</strong>orithmus irgendwann an, wenn man<br />
ihm seinen eigenen Text eingibt?“<br />
Diese Frage ist auch als spezielles<br />
Halteproblem bekannt.<br />
254
Veranschaulichung des Halteproblems<br />
Maschine (<strong>Alg</strong>orithmus) STOP mit zwei Eingaben<br />
<strong>Alg</strong>orithmentext x<br />
Eingabe y für x<br />
sowie zwei Ausgaben<br />
JA: x stoppt bei Eingabe von y<br />
NEIN: x stoppt nicht bei Eingabe von y<br />
Annahme: STOP löst Halteproblem<br />
x<br />
y<br />
STOP<br />
JA<br />
NEIN<br />
255
Veranschaulichung des Halteproblems 2<br />
Konstruktion einer neuen Maschine SELTSAM<br />
mit STOP<br />
x<br />
SELTSAM<br />
x JA<br />
STOP<br />
x<br />
NEIN<br />
OK<br />
256
Verhalten von SELTSAM<br />
Hält SELTSAM bei <strong>der</strong> Eingabe von SELTSAM?<br />
1. Wenn ja, so wird <strong>der</strong> JA-Ausgang von STOP<br />
angelaufen und SELTSAM gerät in die<br />
Endlosschleife, hält also nicht.<br />
Wi<strong>der</strong>spruch!<br />
2. Wenn nein, so wird <strong>der</strong> NEIN-Ausgang von<br />
STOP angelaufen und SELTSAM stoppt mit OK.<br />
Wi<strong>der</strong>spruch!<br />
257
Formaler Beweis (1)<br />
Annahme: h : A * → A * berechenbar<br />
h(<br />
x)<br />
aufgrund <strong>der</strong> Church’schen These ist somit auch<br />
g : A * →A * berechenbar:<br />
g(<br />
x)<br />
g(x) ≠ ϕ x(x) für alle x ∈ A * .<br />
=<br />
=<br />
⎧ε, falls x ∈ domϕ<br />
x<br />
⎨<br />
⎩a<br />
sonst<br />
⎧ ϕx ( x)<br />
a,<br />
falls h(<br />
x)<br />
= ε<br />
⎨<br />
⎩ε<br />
sonst<br />
258
Formaler Beweis (2)<br />
Da g berechenbar ist, gibt es einen <strong>Alg</strong>orithmus<br />
mit einem Text y ∈ A * , <strong>der</strong> g berechnet, d.h., es<br />
gibt ein y mit g = ϕ y . Damit folgt nun:<br />
ϕ y(y) = g(y) ≠ ϕ y(y)<br />
Dies ist offenbar ein Wi<strong>der</strong>spruch, <strong>der</strong> sich nur<br />
dadurch lösen lässt, dass wir die Annahme<br />
aufgeben, h sei berechenbar.<br />
Erneut ein Diagonalbeweis!<br />
259
Nichtentscheidbare Probleme<br />
Jede nichttriviale semantische Eigenschaft von<br />
<strong>Alg</strong>orithmen ist nichtentscheidbar.<br />
Beispiele:<br />
Ist die berechnete Funktion total? Überall undefiniert?<br />
Injektiv? Surjektiv? Bijektiv? etc. etc.<br />
Berechnen zwei <strong>Alg</strong>orithmen dieselbe Funktion?<br />
Ist ein gegebener <strong>Alg</strong>orithmus korrekt, d.h., berechnet er<br />
die gegebene (gewünschte) Funktion?<br />
Im Einzelfall können Fragen entschieden werden! Es<br />
gibt aber keine allgemein Methode, also z.B. einen<br />
<strong>Alg</strong>orithmus <strong>der</strong> Korrektheit aller <strong>Alg</strong>orithmen nachweist.<br />
Auch einfache Fragestellungen können nicht<br />
entscheidbar sein: Post’sches Korrespondenzproblem<br />
260
Post’sches Korrespondenzproblem<br />
Gegeben seien ein Alphabet A und zwei gleich<br />
lange Listen von Worten über A:<br />
α = (α 1, α 2, …, α n)<br />
β = (β 1, β 2, …, β n)<br />
wobei α i, β i ∈ A + = A * − {ε} und n ≥ 1.<br />
Das Problem besteht nun darin, eine<br />
„Korrespondenz“ zu finden, d.h. eine endliche<br />
Folge (i 1, i 2, …, i k), i j ∈{1, …, n} für j = 1, 2, …, k,<br />
so dass gilt:<br />
α i1 α i2 …α in = β i1 β i2 …β in<br />
261
Post’sches Korrespondenzproblem: Bsp. 1<br />
Eingabelisten:<br />
A = {0, 1}<br />
α = (1, 10111, 10)<br />
β = (111, 10, 0)<br />
Dieses Post’sche Korrespondenzproblem besitzt<br />
eine Lösung, die Korrespondenz (2,1,1,3):<br />
10111 . 1 . 1 . 10 = 10 . 111 . 111 . 0<br />
262
Post’sches Korrespondenzproblem: Bsp. 2 (1)<br />
Post’sches Korrespondenzproblem:<br />
A = {0, 1}<br />
keine Lösung!<br />
α = (10, 011, 101)<br />
β = (101, 11, 011)<br />
263
Post’sches Korrespondenzproblem: Bsp. 2 (2)<br />
α = (10, 011, 101), β = (101, 11, 011)<br />
Gäbe es eine Lösung, so müsste sie mit 1 anfangen:<br />
1 0 … ?= 1 0 1 …<br />
Dann ein i mit α i = 1 …, also 1 o<strong>der</strong> 3.<br />
(1, 1, …) ergibt<br />
(1, 3, …) ergibt<br />
1 0 1 0 … ≠ 1 0 1 1 0 1 …<br />
1 0 1 0 1 … ?= 1 0 1 0 1 1 …<br />
Index 3 muss wie<strong>der</strong> gewählt werden, (1, 3, 3, …) ergibt<br />
1 0 1 0 1 1 0 1 … ?= 1 0 1 0 1 1 0 1 1 …<br />
Wie<strong>der</strong> müsste 3 gewählt werden usw.<br />
terminiert nicht!<br />
264