07.10.2013 Aufrufe

Ausdrucksfähigkeit der Alg.-Modelle

Ausdrucksfähigkeit der Alg.-Modelle

Ausdrucksfähigkeit der Alg.-Modelle

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

<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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!