Title: Berechenbarkeit
1Berechenbarkeit
2Die Möglichkeiten von Software
Herausgeber einer Software-Zeitschrift
Geben Sie einem Computer die richtige Software,
und er wird tun, was immer Sie wünschen. Die
Maschine selbst mag Grenzen haben, doch für die
Möglichkeiten von Software gibt es keine
Grenzen. (zitiert nach D. Harel Das Affenpuzzle
und weitere bad news aus der Computerwelt)
3Teil 1
Berechenbarkeit als Problem
4Grenzen von Software
Grundsatzfrage
Gibt es Grenzen für die Möglichkeiten von
Software?
Daten
Software
?
5Der Kern von Software
Algorithmen der Kern von Software
Wo liegen die Grenzen algorithmisch gesteuerter
Systeme? Gibt es Grenzen des algorithmisch
Machbaren?
6Die Suche nach Grenzen
Grundsatzfrage
Gibt es Grenzen für die Möglichkeiten von
Software?Gibt es Grenzen für die Möglichkeiten
von Algorithmen?
Möglichkeitsnachweis
Unmöglichkeitsnachweis
Man entwickelt einen Algorithmus und
implementiert die zugehörige Software.
Man muss zeigen, dass es keinen Algorithmus gibt,
der das gestellte Problem löst. D. h. Jeder
mögliche Algorithmus löst nicht das gestellte
Problem.
Vorgehensweise
Um Aussagen über alle möglichen Algorithmen zu
treffen, muss zunächst der Algorithmusbegriff
präzisiert werden.
7Was ist ein Algorithmus ?
Einfache Frage viele Antworten
Aho, Hopcroft, Ullman Ein Algorithmus ist eine
endliche Folge von Instruktionen, die alle
eindeutig interpretierbar und mit endlichem
Aufwand in endlicher Zeit ausführbar sind.
Algorithmen enthalten Instruktionen zur
Formulierung von (beliebig vielen) Wiederholungen
anderer Instruktionen. Unabhängig von den Werten
der Eingangsgrößen endet ein Algorithmus stets
nach endlich vielen Instruktionsschritten. Ein
Programm ist dann ein Algorithmus, wenn für alle
möglichen Eingabewerte sichergestellt ist, dass
keine Instruktion unendlich oft wiederholt wird.
Kronsjö Ein Verfahren, beschrieben durch eine
endliche Menge von eindeutig interpretierbaren
Regeln, das eine endlich lange Folge von
Operationen zur Lösung eines Problems oder einer
speziellen Problemklasse beschreibt, wird
Algorithmus genannt. (http//www.swe.uni-linz.ac.
at/teaching/lva/ss02/algo1_vorlesung/hinweise.html
)
8Was ist ein Algorithmus ?
Einfache Frage viele Antworten
Knuth Ein Algorithmus muss nach endlich vielen
Schritten enden. Jeder Schritt eines Algorithmus
muss exakt beschrieben sein die in ihm
verlangten Aktionen müssen präzise formuliert und
in jedem Falle eindeutig interpretierbar sein.
Ein Algorithmus hat keine, eine oder mehrere
Eingangsgrößen, d.h. Größen, die von ihm benutzt
und deren Werte vor Beginn seiner Ausführung
festgelegt werden müssen. Ein Algorithmus hat
eine oder mehrere Ergebnisgrößen, d.h. Größen,
deren Werte in Abhängigkeit von den
Eingangsgrößen während der Ausführung des
Algorithmus berechnet werden. Ein Algorithmus
muss so geartet sein, dass die in ihm verlangten
Aktionen im Prinzip von einem Menschen in
endlicher Zeit mit Papier und Bleistift
ausgeführt werden können. (http//www.swe.uni-linz
.ac.at/teaching/lva/ss02/algo1_vorlesung/hinweise.
html)
9Was ist ein Algorithmus ?
Einfache Frage viele Antworten
Bauer, Goos Ein Algorithmus ist eine präzise,
d.h. in einer festgelegten Sprache abgefasste,
endliche Beschreibung eines allgemeinen
Verfahrens unter Verwendung ausführbarer
elementarer (Verarbeitungs-) Schritte.
Rechenberg Ein Algorithmus ist ein endliches
schrittweises Verfahren zur Berechnung gesuchter
aus gegebenen Größen, in dem jeder Schritt aus
einer Anzahl ausführbarer eindeutiger Operationen
und einer Angabe über den nächsten Schritt
besteht. (http//www.swe.uni-linz.ac.at/teaching/l
va/ss02/algo1_vorlesung/hinweise.html)
10Der intuitive Algorithmusbegriff
Definition
Ein Algorithmus ist eine Folge von
Handlungsanweisungen zur Lösung eines Problems,
die folgende Anforderungen erfüllt -
Endlichkeit Die Anweisungsfolge ist durch einen
endlichen Text beschrieben. - Ausführbarkeit Die
Anweisungen sind für den Empfänger (Mensch oder
Maschine) verständlich formuliert und
ausführbar. - Eindeutigkeit An jeder Stelle ist
der Ablauf der Anweisungen eindeutig
festgelegt. - Allgemeinheit Die Anweisungen
besitzen Gültigkeit für die Lösung einer ganzen
Problemklasse, nicht nur für ein Einzelproblem.
(nach Gasper, Leiß, Spengler, Stimm Technische
und theoretische Informatik. bsv)
11Unzulänglichkeit informeller Klärungen
Definition
Ein Algorithmus ist eine Folge von
Handlungsanweisungen zur Lösung eines Problems,
die folgende Anforderungen erfüllt -
Endlichkeit Die Anweisungsfolge ist durch einen
endlichen Text beschrieben. - Ausführbarkeit Die
Anweisungen sind für den Empfänger (Mensch oder
Maschine) verständlich formuliert und
ausführbar. - Eindeutigkeit An jeder Stelle ist
der Ablauf der Anweisungen eindeutig
festgelegt. - Allgemeinheit Die Anweisungen
besitzen Gültigkeit für die Lösung einer ganzen
Problemklasse, nicht nur für ein Einzelproblem.
Was heißt das?
Die oben aufgeführte Begriffsklärung ist keine
präzise Definition im mathematischen Sinne.
12Ziel Präzisierung
Definition
Ein Algorithmus ist eine Folge von
Handlungsanweisungen zur Lösung eines Problems,
die folgende Anforderungen erfüllt -
Endlichkeit Die Anweisungsfolge ist durch einen
endlichen Text beschrieben. - Ausführbarkeit Die
Anweisungen sind für den Empfänger (Mensch oder
Maschine) verständlich formuliert und
ausführbar. - Eindeutigkeit An jeder Stelle
ist der Ablauf der Anweisungen eindeutig
festgelegt. - Allgemeinheit Die Anweisungen
besitzen Gültigkeit für die Lösung einer ganzen
Problemklasse, nicht nur für ein Einzelproblem.
Muss präzisiert werden
Ziel ist es, die informelle Begriffsklärung durch
eine präzise Definition im mathematischen Sinne
zu ersetzen.
13Präzisierungsansätze
Grundschema eines algorithmisch gesteuerten
Systems
Eingaben
Prozessor
Anweisungen
Ausgaben
Präzisierungsansätze
Maschinenorientierter Ansatz Präzisierung des
Prozessors Zuordnungsorientierter Ansatz
Präzisierung der E/A-Zuordnungen Anweisungsorienti
erter Ansatz Präzisierung der zulässigen
Anweisungen
14Grundidee Berechnungsmodelle
Präzisierung mit Berechnungsmodellen
Die Festlegung, was ein Algorithmus ist, bezieht
sich auf ein streng definiertes
Berechnungsmodell, das genau vorschreibt, was
unter ausführbar zu verstehen ist.
Grundlegende Schwierigkeit des Präzisierungsverfah
rens
Wird mit Hilfe des Berechnungsmodells wirklich
der intuitive Algorithmusbegriff adäquat erfasst?
15Teil 2
Kara als Berechnungsmodell
16Kara
- Kara ist ein Marienkäfer.
- Kara lebt in einer Welt mit
- unbewegliche Baumstümpfen,
- Pilzen, die Kara verschieben kann und
- Kleeblättern, die Kara legen und aufnehmen kann.
Lit. Reichert / Nievergelt / Hartmann
Programmieren mit Kara, Springer-Verlag
2004.Software www.educeth.ch/karatojava
17Kara
Kara hat Sensoren, mit denen er/sie die Umwelt
wahrnimmt
Kara versteht einige Befehle, die er/sie folgsam
ausführt
stehe ich vor einem Baumstumpf?
mache einen Schritt vorwärts!
drehe um 90 nach links!
ist links von mir ein Baumstumpf?
ist rechts von mir ein Baumstumpf?
drehe um 90 nach rechts!
stehe ich vor einem Pilz?
lege ein Kleeblatt hin!
stehe ich auf einem Kleeblatt?
nimm ein Kleeblatt auf!
18Kara soll ein Problem lösen
Kara soll bis zum nächsten Baumstumpf, einmal um
ihn herum und anschließend zurück zum
Ausgangspunkt laufen.
AZ
...
ZZ
19Kara-Algorithmus
Bedingung
Aktionen
Akt. Zustand
Neuer Zustand
markieren
hin
hin
nein
hin
hin
ja
zurück
...
zurück
nein
zurück
zurück
ja
stop
Vor Baum? nein / vorwärts
Auf Blatt? nein / vorwärts
Vor Baum? ja / links ...
Auf Blatt? ja / links links
/ Blatt hinlegen
mark.
hin
stop
zurück
20Übung
Entwickeln Sie einen Kara-Algorithmus zur Lösung
des Problems
Kara sieht in Blickrichtung eine beliebig lange
Baumstumpfreihe.
AZ
Kara umläuft die Baumstümpfe und bleibt stehen.
ZZ
21Übung
Entwickeln Sie einen Kara-Algorithmus zur Lösung
des Problems
Kara umläuft die Baumstumpfreihe und bleibt in
der Verlängerung seines Wegs stehen.
Kara sieht in Blickrichtung eine beliebig lange
vertikale Baumstumpfreihe.
ZZ
AZ
22Übung
Gibt es einen Kara-Algorithmus zur Lösung des
Problems, bei dem Kara keine Blätter ablegen darf?
ZZ
AZ
23Präzisierung des Algorithmusbegriffs
Von klaren Vorgaben zu präzisen
Begriffsdefinitionen
Sei A die Menge der Kara-Aktionen
A move, turnLeft, turnRight, putLeaf,
removeLeaf
Sei A die Menge der eingeschränkten
Kara-Aktionen
A move, turnLeft, turnRight
Sei B die Menge der Kara-Bedingungen
B treeFront, treeLeft, treeRight,
mushroomFront, onLeaf, not treeFront,
treeFront and (not onLeaf), ..., true
24Präzisierung des Algorithmusbegriffs
Bedingung
Aktionen
Akt. Zustand
Neuer Zustand
markieren
hin
hin
nein
hin
hin
ja
zurück
...
Definition Ein Kara-Algorithmus ist eine Paar
(Z, F) bestehend aus einer endlichen Menge Z von
Zuständen, die einen ausgezeichneten Startzustand
enthält, und einer Funktion F, die die
Arbeitsweise von Kara wie folgt festlegt F
ordnet Zustands-Bedingungs-Kombinationen (z, b)
mit z?Z und b?B eine Aktionen-Zustands-Kombination
(a, z) zu, wobei a eine endliche (evtl. leere)
Folge von Aktionen aus A ist und z?Z den
Folgezustand darstellt. Ein Read-Only-Kara-Algorit
hmus ist ein Kara-Algorithmus, bei dem nur
Aktionen aus der eingeschränkten Menge
Avorkommen.
25Zur Lösung des Baumumrundungsproblems
Von präzisen Begriffsdefinitionen zu
nachweisbaren Aussagen
Satz Es gibt einen Kara-Algorithmus, der das
vertikale Baumumrundungsproblem löst.
(Möglichkeits-) Beweis Der Beweis erfolgt
konstruktiv, indem man einen geeigneten
Kara-Algorithmus angibt. Grundidee Kara legt
beim Weg nach oben neben jeden Baumstumpf ein
Kleeblatt. Kara zählt auf diese Weise mit, an wie
vielen Baumstümpfen er/sie vorbeiläuft. Kara
transportiert anschließend jedes dieser
abgelegten Kleeblätter auf die andere Seite des
Baumstumpfs. Damit ist Kara in der Lage, die
gewünschte Endposition zu bestimmen.
26Zur Lösung des Baumumrundungsproblems
Von präzisen Begriffsdefinitionen zu
nachweisbaren Aussagen
Satz Es gibt keinen Read-Only-Kara-Algorithmus,
der das vertikale Baumumrundungsproblem löst.
(Unmöglichkeits-) Beweis Der Beweis wird durch
Widerspruch geführt Man nimmt an, es gebe einen
solchen Algorithmus und führt diese Annahme zum
Widerspruch. Da das vertikale
Baumumrundungsproblem für Read-Only-Kara-Algorith
men strukturell ähnlich zum anbn-Spracherkennungs
-problem für endliche Automaten ist, kann der
Nachweis, dass es keinen Read-Only-Kara-Algorithmu
s gibt, der das vertikale Baumumrundungsproblem
löst, völlig analog zum anbn-Spracherkennungsprob
lem geführt werden.
27Teil 3
Kara-Berechenbarkeit
28Kara lernt rechnen
Im Folgenden betrachten wir eine spezielle Klasse
von Problemen, die Kara lösen soll. Es handelt
sich hier um Berechnungs-probleme, die Kara mit
Hilfe von Kleeblättern ausführen soll.
29Übung
Entwickeln Sie einen Kara-Algorithmus zur
Addition
Kara steht vor zwei beliebig langen, durch eine
leere Zelle getrennte Blattreihen der Längen m
und n (die auch 0 sein können).
AZ
Kara hat eine Blattreihen der Länge mn erzeugt.
ZZ
30Übung
Entwickeln Sie einen Kara-Algorithmus zur
Subtraktion
Kara steht vor zwei beliebig langen, durch eine
leere Zelle getrennte Blattreihen der Längen m
und n (die auch 0 sein können).
AZ
Falls m?n ist, hat Kara eine Blattreihe der Länge
m-n erzeugt.
ZZ
31Übung
Entwickeln Sie einen Kara-Algorithmus zur
Subtraktion
Kara steht vor zwei beliebig langen, durch eine
leere Zelle getrennte Blattreihen der Längen m
und n (die auch 0 sein können).
AZ
Falls mltn ist, kommt Kara nicht mehr klar und
dreht sich ständig im Kreis herum.
ZZ
32Übung
Entwickeln Sie einen Kara-Algorithmus zum
Verdoppeln
Kara steht vor einer beliebig langen Blattreihe
der Länge n (die auch 0 sein kann).
AZ
Kara hat eine Blattreihe der Länge 2n erzeugt.
ZZ
33Übung
Entwickeln Sie einen Kara-Algorithmus zur
Multiplikation
Kara steht vor zwei beliebig langen, durch eine
leere Zelle getrennte Blattreihen der Längen m
und n (die auch 0 sein können).
AZ
Kara hat eine Blattreihe der Länge m?n erzeugt.
ZZ
34Übung
Entwickeln Sie einen Kara-Algorithmus zur
Multiplikation
Kara steht vor zwei beliebig langen, durch eine
leere Zelle getrennte Blattreihen der Längen m
und n (die auch 0 sein können).
AZ
Kara hat eine Blattreihe der Länge m?n erzeugt,
ohne die Zellenreihe, in der die Blätter liegen,
zu verlassen.
ZZ
35Berechnete Funktion
Vom informellen Begriff zur präzisen
Begriffsdefinition
Verdoppeln
Kara steht vor einer beliebig langen Blattreihe
der Länge n (die auch 0 sein kann).
AZ
Kara hat eine Blattreihe der Länge 2n erzeugt.
ZZ
Kara berechnet die Verdopplungsfunktion f N ? N
mit f(n) 2n.
36Berechnete Funktion
Subtraktion
Kara steht vor zwei beliebig langen, durch eine
leere Zelle getrennte Blattreihen der Längen m
und n (die auch 0 sein können).
AZ
Falls mltn ist, kommt Kara nicht mehr klar und
dreht sich ständig im Kreis herum.
ZZ
Kara berechnet die Subtraktionsfunktion f N x N
? N mit
m-n falls m ? n
f(m,n)
undefiniert falls m lt n
37Präzisierung von Berechenbarkeit
Definition Eine Funktion f N ? N heißt
Kara-berechenbar, gdw giltEs gibt einen
Kara-Algorithmus mit der folgenden
Eigenschaft AZ Kara steht vor einer Blattreihe
der Länge n. ZZ Fall 1 f(n) ist
definiert Kara hat eine Blattreihe der Länge
f(n) erzeugt und hält. Fall 2 f(n) ist
undefiniert Kara hält nicht.
Analog für f N x N x ... x N ? N
38Berechenbarkeitsaussagen
- Satz
- Die folgenden Funktionen sind Kara-berechnenbar
- f(n) 2n
- f(m, n) m n
- f(m, n) IF(m?n, m-n, ?)
- f(m, n) m?n
Neue Fragen
Welche Funktionen sind Kara-berechnenbar, welche
evtl. nicht?
39Teil 4
Turingmaschinen
40Alan Turing
http//www.alanturing.net/
Alan Mathison Turing FRS OBE (born 23 June 1912
at 2 Warrington Crescent, London W9, died 7 June
1954 at his home in Wilmslow, Cheshire)
contributed to mathematics, cryptanalysis, logic,
philosophy, biology, and formatively to computer
science, cognitive science, Artificial
Intelligence and Artificial Life. Educated at
Sherborne School in Dorset, Turing went up to
King's College, Cambridge in October 1931 to read
Mathematics. He was elected a Fellow of King's in
March 1935, at the age of only 22. In the same
year he invented the abstract computing machines
- now known simply as Turing machines - on which
all subsequent stored-program digital computers
are modelled. ...
41Turings Idee
Vom Rechnen zu den Computing maschines
Computing is normally done by writing certain
symbols on paper. We may suppose this paper is
divided into squares like a child's arithmetic
book. In elementary arithmetic the
two-dimensional character of the paper is
sometimes used.
3
6
?
2
7
7
2
2
5
2
9
7
2
(Alan Turing On Computable Numbers, with an
Application to the Entscheidungsproblem.
Proceedings of the London Mathematical Society
1936)
42Turings Idee
Vom Rechnen zu den Computing maschines
Computing is normally done by writing certain
symbols on paper. We may suppose this paper is
divided into squares like a child's arithmetic
book. In elementary arithmetic the
two-dimensional character of the paper is
sometimes used. But such a use is always
avoidable, and I think that it will be agreed
that the two-dimensional character of paper is no
essential of computation. I assume then that the
computation is carried out on one-dimensional
paper, i.e. on a tape divided into squares. ...
6
?
2
7
3
2
5
2
7
2
(Alan Turing On Computable Numbers, with an
Application to the Entscheidungsproblem.
Proceedings of the London Mathematical Society
1936)
43Turings Idee
Vom Rechnen zu den Computing maschines
The behaviour of the computer at any moment is
determined by the symbols which he is observing
and his state of mind at that moment. ... Let
us imagine the operations performed by the
computer to be split up into simple operations
which are so elementary that it is not easy to
imagine them further divided. ...
Ein-/Ausgabeband
6
?
2
7
3
Zustandsbasierte Verarbeitungseinheit
Schreib-/Lesekopf
q0
(Alan Turing On Computable Numbers, with an
Application to the Entscheidungsproblem.
Proceedings of the London Mathematical Society
1936)
44Turingmaschine
Ein-/Ausgabeband
...
...
I
I
I
I
I
Zustandsbasierte Verarbeitungseinheit
Schreib-/Lesekopf
Turingmaschine
45Turingmaschine
Zustandsübergang
Aktion
a b R
Geschriebenes Zeichen
Gelesenes Zeichen
Turingmaschinenaktionen
R ein Feld nach rechts L ein Feld nach
links S stopp
46Beispiel
Berechnungsproblem Addition von Strichzahlen
AZ
I
I
I
I
I
z0
ZZ
I
I
I
I
I
S
Turingmaschine (dargestellt mit einem
Zustandsgraphen)
I I R
I I R
I I L
I I S
I R
L
I L
R
z0
z1
z2
z3
z4
47Beispiel
Turingmaschine (dargestellt mit einem
Zustandsgraphen)
I I R
I I R
I I L
I I S
I R
L
I L
R
z0
z1
z2
z3
z4
Turingmaschine (dargestellt mit einer
Zustandstafel)
alter gelesenes geschrieb. Kopf- neuer
Zustand Zeichen Zeichen bewegung
Zustand Z0 I I R
Z0Z0 ' ' I R
Z1 Z1 I I R
Z1Z1 ' ' ' ' L
Z2 ...
48Präzisierung
Definition Eine Turingmaschine ist ein Tupel T
(X, B, b, Z, z0, ?) bestehend aus - einer
endlichen, nichtleeren Menge X von
Eingabezeichen, - einer Menge B mit X ? B von
Bandzeichen,- einem speziellen Bandzeichen b ? B
\ X (Blank), - einer endlichen, nichtleeren
Menge Z von Zuständen,- einem Anfangszustand
z0?Z,- einer Überführungsfunktion ? Z x B ? B x
L, R, S x Z
alter gelesenes geschrieb. Kopf- neuer
Zustand Zeichen Zeichen bewegung
Zustand Z0 I I R
Z0Z0 ' ' I R
Z1 Z1 I I R
Z1Z1 ' ' ' ' L
Z2 ...
49Übung
Berechnungsproblem Verdopplung von Strichzahlen
Entwickeln und testen Sie eine Turingmaschine zur
Verdopplung von Strichzahlen. Beschreiben Sie die
Turingmaschine mit einem Zustandsgraph und einer
Zustandstabelle. Zum Testen können Sie den
MPG-Turing-Simulator benutzen.
AZ
I
I
z0
ZZ
I
I
I
I
50Präzisierung von Berechenbarkeit
Definition Eine Funktion f N ? N heißt
Turingmaschinen-berechenbar, gdw gilt Es gibt
eine Turingmaschine T mit der folgenden
Eigenschaft AZ Auf dem Band befindet sich n
dargestellt als Strichzahl. ZZ Fall 1 f(n)
ist definiert T hält und hat f(n) dargestellt
als Strichzahl erzeugt. Fall 2 f(n) ist
undefiniert T hält nicht.
I
I
z0
I
I
I
I
Analog für f N x N x ... x N ? N
51Variation der Turingmaschine
Berechnungsproblem Verdopplung von Strichzahlen
AZ
I
I
I
I
z0
2-Band-Turingmaschine
ZZ
I
I
I
I
I
I
I
I
I
I
I
I
I IIRR
I I LS
I IIRR
LS
RS
SS
z0
z1
z2
z3
52Variation der Turingmaschine
Berechnungsproblem Verdopplung von Strichzahlen
2-dimensionale Turingmaschine
53Kara als Variation der Turingmaschine
Kara
2-dimensionale Turingmaschine
54Übung
Lösen Sie das Verdopplungsproblem (oder das
Multiplikationsproblem) mit Hilfe einer
2-Band-Turingmaschine und mit Hilfe einer
zweidimensionalen Turingmaschine.
55Äquivalenz von Turingmaschinenmodellen
Problem
Was leisten Mehr-Band-Turingmaschinen bzw.
zweidimensionale Turingmaschinen mehr als
Ein-Band-Turingmaschinen?
Satz Eine Funktion f N x N x ... x N ? N ist mit
einer Ein-Band-Turingmaschine berechenbar gdw
sie mit einer Zwei-Band-Turingmaschine
berechenbar ist gdw sie mit einer
Mehr-Band-Turingmaschine berechenbar ist.
56Beweisidee
Simulation der Aktionen einer Zwei-Band-TM auf
einem Band
I
I
I
Vgl. U. Mayr Theoretische Informatik am PC.
(Programm Bsp-a5.tm)
z0
I
I
I
zi
I
I
I
z0
I
I
I
I
I
zj
57Äquivalenz der Turingmaschinenmodelle
Problem
Was leisten Mehr-Band-Turingmaschinen bzw.
zweidimensionale Turingmaschinen mehr als
Ein-Band-Turingmaschinen?
Satz Eine Funktion f N x N x ... x N ? N ist mit
einer eindimensionalen (Ein-Band-) Turingmaschine
berechenbar gdw sie mit einer zweidimensionalen
Turingmaschine berechenbar ist.
58 59Teil 5
Universelle Turingmaschine
60Universelle Berechnungsmodelle
Computer sind programmierbar!
Daten
Computer alsprogrammierbaresSystem
Daten
Programm
Ein universelles Berechnungsmodell sollte in der
Lage sein, nicht nur Eingabedaten in einer ganz
bestimmten Weise zu verarbeiten, sondern
Eingabedaten nach einem beliebigen, ebenfalls
einzugebenden Verarbeitungsprogramm zu
verarbeiten.
61Universelle Turingmaschine
Universelle Turingmaschine als Turingmaschinen-Int
erpreter
Eingabeband
UniverselleTuringmaschine
Ausgabeband
Turingmaschine
Eine universelle Turingmaschine besitzt die
Fähigkeit, beliebige andere Turingmaschinen zu
simulieren. Als Eingabe erhält sie die
Beschreibung der zu simulierenden Turingmaschine
und der Daten auf dem Eingabeband für diese
Turingmaschine.
62Universelle Turingmaschine
Beispiel Invertieren einer 01-Zeichenkette
10110111
10R01R
UniverselleTuringmaschine
01001000
S
z1
z0
Eine universelle Turingmaschine besitzt die
Fähigkeit, beliebige andere Turingmaschinen zu
simulieren. Als Eingabe erhält sie die
Beschreibung der zu simulierenden Turingmaschine
und der Daten auf dem Eingabeband für diese
Turingmaschine.
63Universelle Turingmaschine
Simulation von Ein-Band-Turingmaschinen mit einer
univers. TM
Aktueller Zustand
Kodierung der TM
10R01R
S
z1
z0
Ein-/Ausgabeband
Vgl. Turingkara Aufgaben Die universelle
Turingmaschine
64Universelle Turingmaschine
Simulation von Ein-Band-Turingmaschinen mit einer
univers. TM.
Kodierung alter Zustand als Strichzahl1
Leerzeichen altes Zeichen neues Zeichen
Bewegung neuer Zustand als Strichzahl1
0
R
I
1
I
...
10
Kodierung der Turing-Tafel
10R01R
I
1
0
S
z0
z1
Ein-/Ausgabe-Band
Aktueller Zustand
Vgl. U. Mayr Theoretische Informatik am PC, S.
18 ff. Programm Bsp-206.tm
65Übung
Testen Sie die universelle Turingmaschine der
Turing-Kara-Umgebung bzw. des MPG-Simulators.
Versuchen Sie insbesondere zu verstehen, wie
diese universelle Turingmaschine arbeitet. Sie
können auch die jeweils vorgegebene
Turingmaschine und Bandbelegung durch eine andere
ersetzen.
66Universelle Turingmaschine
SatzEs gibt universelle Turingmaschinen.
Bemerkungen zum Beweis Die Existenz einer
universellen Turingmaschine zeigt man, indem man
eine TM konstruiert, die sich wie ein
Turingmaschinen-Interpreter verhält, d. h. diese
(zweidimensionale oder Mehr-Band-) Turingmaschine
simuliert das Verhalten einer beliebig
vorgegebenen Ein-Band-Turingmaschine bei einer
beliebig vorgegebenen Bandbelegung. Die
vorgegebene Turingmaschine und die vorgegebene
Bandbelegung müssen dabei geeignet kodiert
werden.
67Teil 6
Registermaschinen
68Präzisierung des Algorithmusbegriffs
Grundschema eines algorithmisch gesteuerten
Systems
Eingaben
Prozessor
Anweisungen
Ausgaben
Präzisierungsansätze
Maschinenorientierte Ansätze - Kara (mehr als
ein Spielzeug) - Turingmaschine (abstraktes
Rechnermodell) - Registermaschine (an realen
Rechnern orientiertes Modell)
69Berechnungsmodell Registermaschine
An realen Rechnern orientiertes Berechnungsmodell
Register
Adresse
Befehl
Progr.zähler
0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST
1gt 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9
TST 2 10 JMP 7 11 HLT
0 01 52 03 04 0..
Speicher (Registern)
Verarbeitungseinheit
70Registermaschinenbefehle
Erhöhe Register i um 1.Gehe zu Zeile x1.
gt x INC i
Erniedrige Register i um 1.Gehe zu Zeile x1.
gt x DEC i
gt x JMP i
Gehe zu Zeile i.
Wenn Register i ungleich 0 ist, dann gehe zu
Zeile x1, sonst zu Zeile x2.
gt x TST i
gt x HLT
Beende die Bearbeitung.
71Registermaschine in Aktion
gt 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST
1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9
TST 2 10 JMP 7 11 HLT
0 01 52 03 04 0..
0 JMP 4 1 DEC 1 2 INC 0 3 INC 2gt 4 TST
1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9
TST 2 10 JMP 7 11 HLT
0 01 52 03 04 0..
0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST
1gt 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9
TST 2 10 JMP 7 11 HLT
0 01 52 03 04 0..
0 JMP 4gt 1 DEC 1 2 INC 0 3 INC 2 4 TST
1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9
TST 2 10 JMP 7 11 HLT
0 01 52 03 04 0..
72Verhaltensbeschreibung
gt 0 JMP 4 1 DEC 1 2 INC 0 3 INC 2 4 TST
1 5 JMP 1 6 JMP 10 7 DEC 2 8 INC 0 9
TST 2 10 JMP 7 11 HLT
0 01 n2 03 04 0..
0 2n1 02 03 04 0..
Zustand vorher
RM-Programm
Zustand nachher
Die Registermaschine berechnet die
Verdopplungsfunktion auf natürlichen Zahlen, d.
h. f N ? N mit f(n) 2n
73Präzisierung von Berechenbarkeit
Definition Eine Funktion f N ? N heißt
Registermaschinen-berechenbar, gdw gilt Es gibt
eine Registermaschine mit der folgenden
Eigenschaft AZ Im Registern R1 befindet sich
der Ausgangswert. ZZ Fall 1 f(n) ist
definiert Die RM hält und in R0 befindet sich
der Ergebniswert. Fall 2 f(n) ist
undefiniert Die RM hält nicht.
0
n
0
0
...
...
...
f(n)
...
...
Analog für f N x N x ... x N ? N
74Äquivalenzsatz
SatzEine Funktion f N x N x ... x N ? N ist
Turingmaschinen-berechenbar gdw sie
Registermaschinen-berechenbar ist.
Beweis Der Beweis wird konstruktiv geführt. Man
konstruiert mit Hilfe einer Turingmaschine einen
Registermaschinen-Interpreter und umgekehrt mit
Hilfe einer Registermaschine einen
Turingmaschinen-Interpreter.
75Teil 7
LOOP- und WHILE-Programme
76Präzisierung des Algorithmusbegriffs
Grundschema eines algorithmisch gesteuerten
Systems
Eingaben
Prozessor
Anweisungen
Ausgaben
Präzisierungsansätze
Anweisungsorientierte Ansätze - Die
Programmiersprache LOOP - Die
Programmiersprache WHILE - Die
Programmiersprachen Pascal, Delphi, Java,
...
77LOOP-Programme
Bestandteile von LOOP-Programmen
Variablen x0 x1 x2 ... Konstanten 0 1 2
... Trennsymbole Operatoren
- Schlüsselwörter LOOP DO END
Aufbau eines LOOP-Programms
Jede Wertzuweisung der Form xi c oder xi xj
oder xi xj c ist ein LOOP-Programm. Falls P1
und P2 LOOP-Programme sind, dann ist auch die
Sequenz P1 P2 ein LOOP-Programm. Falls P ein
LOOP-Programm ist, dann ist auch LOOP xi DO P END
ein LOOP-Programm.
78LOOP-Programme
Beispiel eines LOOP-Programms
x0 x1 LOOP x2 DO x0 x0 1 END
Ausführung der LOOP-Anweisung
Eine LOOP-Anweisung der Form LOOP xi DO P END
wird wie folgt ausgeführt Die LOOP-Anweisung P
wird sooft ausgeführt, wie der Wert der Variablen
xi zu Beginn beträgt.
Bedeutung eines LOOP-Programms
x0 ... x1 5 x2 3 x3 ... ... x0
x1 LOOP x2 DO x0 x0 1 END x0 8 x1
5 x2 3 x3 ... ...
Das Programm berechnet die Additionsfunktion auf
natürlichen Zahlen f(m, n) m n
79WHILE-Programme
Bestandteile von WHILE-Programmen
Variablen x0 x1 x2 ... Konstanten 0 1 2
... Trennsymbole Operatoren
- Schlüsselwörter WHILE DO END
Aufbau eines WHILE-Programms
Jede Wertzuweisung der Form xi c oder xi xj
oder xi xj c ist ein WHILE-Programm. Falls
P1 und P2 WHILE-Programme sind, dann ist auch die
Sequenz P1 P2 ein WHILE-Programm. Falls P ein
WHILE-Programm ist, dann ist auch WHILE xi ? 0 DO
P END ein WHILE-Programm.
80WHILE-Programme
Beispiel eines WHILE-Programms
x0 x1 WHILE x2 ? 0 DO x0 x0 1 x2 x2
- 1 END
Ausführung der WHILE-Anweisung
Eine WHILE-Anweisung der Form WHILE xi ? 0 DO P
END wird wie folgt ausgeführt Das WHILE-Programm
P wird solange ausgeführt, wie der Wert der
Variablen xi ungleich Null ist.
Bedeutung eines WHILE-Programms
Das Programm berechnet die Additionsfunktion auf
natürlichen Zahlen f(m, n) m n
x0 0 x1 5 x2 3 x3 0 ... x0
x1 WHILE x2 ? 0 DO x0 x0 1 x2 x2 - 1
END x0 8 x1 5 x2 0 x3 0 ...
81Präzisierung von Berechenbarkeit
Definition Eine Funktion f N ? N heißt
LOOP-/WHILE-berechenbar, gdw gilt Es gibt ein
LOOP-/WHILE-Programm mit der Eigenschaft AZ Die
Variable x1 enthält den Ausgangswert x0
0 x1 n x2 0 x3 0 ... ZZ Fall
1 f(n) ist definiert Die Ausführung des
Programms endet und x0 enthält den
Ergebniswert. x0 f(n) x1 ... x2
... x3 ... ... Fall 2 f(n) ist
undefiniert Die Ausführung des Programms endet
nicht.
Analog für f N x N x ... x N ? N
82Übung
- Aufgabe 1
- Entwickeln Sie ein LOOP-Programm / WHILE-Programm
zur Berechnung der Verdopplungsfunktion /
Multiplikationsfunktion. - Aufgabe 2
- Welche Funktion wird durch das folgende
WHILE-Programm berechnet? - x0 x1
- WHILE x2 ? 0 DO x0 x0 1 END
- Aufgabe 3
- Gibt es Funktionen, die mit keinem LOOP-Programm
berechnet werden können?
83Unterschied LOOP-WHILE
Unterschied LOOP-berechenbar - WHILE-berechenbar
Die Ausführung jedes LOOP-Programms endet immer.
Ein WHILE-Programm kann dagegen eine
Endlosschleife enthalten.
x0 x1 WHILE x2 ? 0 DO x0 x0 1 END
Das gezeigte WHILE-Programm berechnet die
Funktion f N ? N mit f(m, n) IF(n0, m, ?).
SatzEs gibt Funktionen f N x N x ... x N ? N,
die WHILE-berechenbar, aber nicht
LOOP-berechenbar sind.
84Äquivalenzsatz
SatzEine Funktion f N x N x ... x N ? N ist
WHILE-berechenbar gdw sie Registermaschinen-berech
enbar ist.
Beweis Der Beweis wird konstruktiv geführt. Man
konstruiert zu jeder Registermaschine ein
entsprechendes WHILE-Programm und umgekehrt zu
jedem WHILE-Programm eine entsprechende
Registermaschine.
85Teil 8
Rekursive Funktionen
86Rekursive Funktionen
Grundschema eines algorithmisch gesteuerten
Systems
Eingaben
Prozessor
Anweisungen
Ausgaben
Grundidee
Man beschreibt die berechenbaren E/A-Zuordnungen
wie folgt Einige einfache Grundfunktionen
werden als berechenbar erklärt. Des weiteren
werden einige einfache Konstruktionsprinzipien
angegeben, die beschreiben, wie man aus
berechenbaren Funktionen weitere berechenbare
Funktionen erhält. Die zentrale
Konstruktionsoperation ist die dabei die
Rekursion.
87Rekursives Berechnungsschema
Beispiel Addition natürlicher Zahlen
add(x,0) x add(x,s(y)) s(add(x,y))
Bemerkungen
Die Nachfolgerfunktion s N ? N, die jeder
natürlichen Zahl ihren direkten Nachfolger
zuordnet, wird als gegebene berechenbare Funktion
betrachtet. Die Funktion add N x N ? N, die je
zwei natürlichen Zahlen ihre Summe zuordnen soll,
wird rekursiv festgelegt - Zunächst wird der
Rekursionsanfang addiere zur Zahl x die Zahl 0
festgelegt. - Anschließend wird der Fall
addiere zur Zahl x den Nachfolger s(y) einer
Zahl y auf den Fall addiere zu x die Zahl y
rekursiv reduziert. Bei der Festlegung werden
hier die Konstruktionsoperationen Rekursion und
Funktionskomposion und die Grundfunktion s
benutzt.
88Rekursives Berechnungsschema
Beispiel Addition natürlicher Zahlen
add(x,0) x add(x,s(y)) s(add(x,y))
Berechnung rekursiv festgelegter Funktionen
add(3,2) s(add(3,1)) s(s(add(3,0)))
s(s(3)) s(4) 5
gtadd(3,2) gtadd(3,1) gtadd(3,0) ltadd(3,0)3
ltadd(3,1)4 ltadd(3,2)5
89Übung
Entwickeln Sie rekursive Berechnungsschemata für
die folgenden Funktionen. Benutzen Sie nur die
vorgegebene Nachfolgerfunktion s und bereits
definierte Funktionen (wie add).
mult(x, y)
Beschreibt die übliche Multiplikation natürlicher
Zahlen
fakt(x)
Beschreibt die Fakultätsfunktionf(0) 1, f(1)
1, f(2) 21, f(3) 321, ...
exp(x, y)
Beschreibt die Potenzbildung für natürliche
Zahlen, d. h.exp(2, 3) 23
90Übung
Untersuchen Sie die folgenden rekursiven
Berechnungsschemata und beschreiben Sie die
jeweils berechneten Funktionen.
test(0)1test(s(x))0 pred(0)0pred(s(x))x subt
r(x,0)xsubtr(x,s(y))pred(subtr(x,y)) absdiff(x,
y)add(subtr(x,y),subtr(y,x)) equal(x,y)test(absd
iff(x,y))
91Übung
Welche Berechnungsschemata sind korrekt, sinnvoll?
subtr2(x, 0) xsubtr2(0, y) ysubtr2(s(x),
s(y)) subtr2(x, y) subtr3(x, 0) xsubtr3(0,
y) ysubtr3(x, y) subtr3(s(x), s(y)) add2(x,
0) xadd2(x,y) add(s(x),pred(y)))
92Primitive Rekursion
Rekursive Problemreduktionen
add(x,s(y)) s(add(x,y)) add2(x,y)
add2(s(x),pred(y))) subtr(x,s(y))pred(subtr(x,y))
subtr2(s(x), s(y)) subtr2(x, y) subtr3(x, y)
subtr3(s(x), s(y))
Primitives Reduktionsschema
add(x,s(y)) s(add(x,y)) f(x1,...,xn,s(y))
h(x1,...,xn,y,f(x1,...,xn,y))
In einem Schritt wird nur ein Argument um 1
reduziert.
93Primitive Rekursion
Primitives Reduktionsschema
add(x,0) x add(x,s(y)) s(add(x,y))
Formalisierung
f(x1,...,xn,0) g(x1,...,xn) f(x1,...,xn,s(y))
h(x1,...,xn,y,f(x1,...,xn,y))
Rekursionsanfang Die Funktion f kommt nicht auf
der rechten Seite vor. Rekursionsschritt Die
Funktion f kommt auf der rechten Seite vor, aber
nur ein Argument wird um 1 reduziert.
94Primitiv rekursive Funktionen
Definition Eine Funktion f N x ... x N ? N
heißt primitiv rekursiv, gdw gilt Die Funktion f
lässt sich mit Hilfe der Nachfolgerfunktion s als
Grundfunktion sowie Funktionskomposition und
primitiver Rekursion als Konstruktionsoperationen
berechnen.
- Satz
- Die folgenden Funktionen sind primitiv rekursiv
- f(m, n) m n
- f(m, n) IF(m?n, m-n, 0)
- f(m, n) m?n
- ...
95Übung
Testen Sie das folgende rekursive
Berechnungsschemata zur sogenannten
Ackermann-Funktion. Was beobachtet man, wenn die
Parameter (insbesondere der zweite) nicht sehr
klein gewählt werden?
Ack(0,y)s(y) Ack(s(x),0)Ack(x,1) Ack(s(x),s(y))
Ack(x,Ack(s(x),y))
96Ackermannfunktion
Rekursive Definition
Ack(0,y)s(y) Ack(s(x),0)Ack(x,1) Ack(s(x),s(y))
Ack(x,Ack(s(x),y))
BeachteEs handelt sich hier nicht um ein
primitiv rekursives Rekursionsschema.
SatzDie Ackermann-Funktion ist nicht primitiv
rekursiv.
Man muss zeigen, dass die Ackermannfunktion sich
nicht mit Hilfe eines primitiv rekursiven
Rekursionsschemas darstellen lässt. Zum Beweis
zeigt man, dass die Ackermann-Funktion schneller
wächst als jede primitiv rekursive Funktion.
97Übung
Wir betrachten die folgende informell definierte
Funktion. Berechnen Sie f(5, 2) und f(2, 5).
Beschreiben Sie das Verhalten der Funktion f.
f(x, y) das kleinste z mit yzx
98Partiell rekursive Funktionen
Definition Eine Funktion f N x ... x N ? N
heißt partiell rekursiv, gdw gilt Die Funktion
f lässt sich mit Hilfe der Nachfolgerfunktion s
als Grundfunktion sowie Funktionskomposition,
primitiver Rekursion und dem das
kleinste-Operator als Konstruktionsoperationen
berechnen.
SatzDie Ackermann-Funktion ist partiell rekursiv.
Beweis siehe Fachliteratur
99Äquivalenzsatz
Satz Eine Funktion f N x N x ... x N ? N ist
primitiv rekursiv gdw sie LOOP-berechenbar ist.
Eine Funktion f N x N x ... x N ? N ist
partiell rekursiv gdw sie WHILE-berechenbar ist.
Beweis siehe Fachliteratur
100 101Teil 9
Church-Turing-These
102Berechnungsmodelle
Grundschema eines algorithmisch gesteuerten
Systems
Eingaben
Prozessor
Anweisungen
Ausgaben
Präzisierungsansätze
Maschinenorientierter Ansatz Turingmaschine,
Registermaschine Zuordnungsorientierter Ansatz
partiell rekursive Funktion Anweisungsorientierter
Ansatz WHILE, Pascal, Delphi, C, Java, ...
103Äquivalenzsatz
Satz Gegeben ist eine Funktion f N x N x ... x N
? N. Die folgenden Aussagen sind äquivalent - f
ist Turingmaschinen-berechenbar. - f ist
Registermaschinen-berechenbar. - f ist
WHILE-berechenbar, - f ist partiell rekursiv. -
f ist Pascal-berechenbar. - ...
Bem. Alle Ansätze zur Präzisierung führen auf
dieselbe Klasse berechenbarer Funktionen.
104Church-Turing-These
These Die Klasse der im intuitiven Sinn
berechenbaren Funktion ist genau die Klasse der
Turingmaschinen-berechenbaren Funktionen bzw. die
Klasse der partiell rekursiven Funktionen bzw.
die Klasse der WHILE-berechenbaren Funktionen
bzw. ...
105Literaturhinweise
Gasper, Leiß, Spengler, Stimm Technische und
theoretische Informatik. Bayerischer
Schulbuch-Verlag 1992. U. Mayr Theoretische
Informatik am PC. SIL-Studienmaterial Band 142,
Speyer 1994. Reichert, Nievergelt, Hartmann
Programmieren mit Kara. Springer-Verlag 2004. D.
Harel Das Affenpuzzle und weitere bad news aus
der Computerwelt. Springer-Verlag 2002. U.
Schöning Theoretische Informatik kurzgefasst.
Spektrum Akademischer Verlag 2001.