PowerPoint

Werbung
Wiederholung
Was ist Informatik?
Wissenschaft, Technik und Anwendung der maschinellen Verarbeitung und
Übermittlung von Informationen
Grundlage der maschinellen Verarbeitung von Informationen sind
Algorithmen.
G.Heyer
1
Digitale Informationsverarbeitung
2. Algorithmenbegriff und Berechenbarkeit
Algorithmus:
Berechnungsvorschrift, die angibt, wie durch Ausführung bestimmter
Elementaroperationen aus Eingabegrößen Ausgabewerte ermittelt werden.
Berechnungsvorschrift muß präzise und endlich sein, löst Problemenklasse
Elementaroperationen müssen von Maschine durchgeführt werden können
Abfolge der Schritte liegt fest, bzw. Wahlmöglichkeiten sind festgelegt
Beispiele:
Algorithmen zu Addition, Subtraktion, Division, Multiplikation, ...
euklidischer Algorithmus, ...
Keine Algorithmen: Anleitungen, Kochrezepte, Wegbeschreibungen, ...
G.Heyer
2
Digitale Informationsverarbeitung
Ein Algorithmus?
Reifenauswechseln
1. Löse die Radmuttern.
2. Hebe den Wagen an.
3. Schraube die Radmuttern ab.
4. Tausche das Rad gegen ein anderes Rad aus.
5. Schraube die Radmuttern an.
6. Setze den Wagen ab.
7. Ziehe die Radmuttern fest.
Jeder Schritt definiert?
Festgelegte Folge von Ausführungsschritten?
Gibt es Elementaroperationen und wer führt sie aus?
G.Heyer
3
Digitale Informationsverarbeitung
Euklidischer Algorithmus
Gesucht: größter gemeinsamer Teiler positiver ganzer Zahlen n, m
1. Wenn m kleiner als n, vertausche Werte von m und n.
2. Dividiere m durch n, nenne den Rest r.
3. Wenn r gleich 0 ist, so gib n aus und terminiere.
4. Wenn r nicht gleich 0 ist, so weise m den Wert von n zu und n den von r.
5. Gehe zu 2.
Jeder Schritt definiert?
Festgelegte Folge von Ausführungsschritten?
Gibt es Elementaroperationen und wer führt sie aus?
Ein Nicht-Algorithmus
Wir machen Rührei
1. Erhitze Öl in der Pfanne bis sich Bläschen bilden.
2. Schlage die Eier in die Pfanne.
3. Füge eine Prise Salz hinzu und rühre gut durch.
4. Lasse alles brutzeln bis die Eier die richtige Konsistenz haben.
G.Heyer
4
Digitale Informationsverarbeitung
Eigenschaften von Algorithmen
• Abstraktion: Lösung einer Klasse von Problemen
• Finitheit: Beschreibung endlich, jeweils nur endlich viel Speicherplatz
• Terminierung: wenn Algorithmen bei jeder Eingabe nach endlicher Zeit
halten und ein Ergebnis liefern, so heißen sie terminierend
• Determinismus: Algorithmus heißt deterministisch, wenn zu jeder Zeit der
Ausführung nur eine Fortsetzungsmöglichkeit besteht
• Determiniertheit: Algorithmus heißt determiniert, wenn bei gleichen
Eingabewerten stets das gleiche Ergebnis geliefert wird
Deterministische Algorithmen immer determiniert, aber nicht umgekehrt!
Algorithmen sollten verständlich und effizient sein
G.Heyer
5
Digitale Informationsverarbeitung
Darstellung von Algorithmen
• natürlichsprachlich
für die Kommunikation von Ideen oft ausreichend, muß präzisierbar sein
• Stilisierte Prosa und Pseudo-Code
Mischung von Prosa und Konstrukten aus Programmiersprachen
• Graphische Darstellungen, Ablaufpläne, Struktogramme
machen Kontrollfluß sichtbar
• Formulierung in Programmiersprache
Präzision, Ausführbarkeit auf Maschine garantiert
G.Heyer
6
Digitale Informationsverarbeitung
Berechenbarkeit
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Intuitiv: wenn es einen Algorithmus gibt, der sie berechnet
Was heißt, eine Elementaroperation ist maschinell ausführbar?
Was verstehen wir unter einer Rechenmaschine?
verschiedene Ansätze zur Präzisierung des Berechenbarkeitsbegriffs:
• Turing-Berechenbarkeit
• While-Berechenbarkeit
• Goto-Berechenbarkeit
All diese Präzisierungen (und weitere) beschreiben exakt dieselbe
Klasse von Funktionen
==> Churchsche These: die so erfaßte Klasse von Funktionen ist identisch
mit der Klasse der intuitiv berechenbaren Funktionen
G.Heyer
7
Digitale Informationsverarbeitung
Turing-Maschinen: ein abstrakes Maschinenmodell
Eine Turing-Maschine M = <Z, , ,, z0, •, E> besteht aus
Z: endliche Zustandsmenge
: Eingabealphabet
:Arbeitsalphabet, enthält 
Überführungsfunktion Z  ---> Z   {L, R, N}
z0: Startzustand
•: Blanksymbol
E: Menge der Endzustände in Z
•
•
A
B
0
C
1
1
A
B
0
•
•
Schreib-Lesekopf
endliche
Kontrolleinheit
G.Heyer
8
Digitale Informationsverarbeitung
Berechnungen einer TM
Eingabe steht auf Band, pro Feld ein Symbol
SL-Kopf auf dem am weitesten links stehenden Eingabesymbol S
Zustand ist Anfangszustand
In Abhängigkeit von Zustand und gelesenem Symbol gibt  an
• Nachfolgezustand,
• auf Band geschriebenes neues Symbol,
• Bewegungsrichtung (Links, Rechts, Nicht bewegen)
Maschine führt so lange Aktionen aus, bis Zustand aus E erreicht wird
Ausgabe steht nun auf Band
Eine Funktion heißt Turing-berechenbar, wenn es eine TuringMaschine gibt, die sie (im genannten Sinn) berechnet.
G.Heyer
9
Digitale Informationsverarbeitung
Beispiel
Eingabealphabet: {0, 1}, Arbeitsalphabet: {0, 1, •}
Z = {z0, z1, z2, z3}, E = {z3}
Überführungsfunktion [(x, y) -> (z, v, w) statt (x,y) = (z, v, w)]:
(z0, •) -> (z3, 1, N)
(z0, 0) -> (z0, •, R)
(z0, 1) -> (z1, •, R)
(z1, •) -> (z3, 1, N)
(z1, 0) -> (z2, •, R)
(z1, 1) -> (z1, •, R)
(z2, •) -> (z2, •, R)
(z2, 0) -> (z2, •, R)
(z2, 1) -> (z2, •, R)
Maschine liefert 1 gdw auf Band eine Folge 0...01...1 steht.
Anzahl jeweils beliebig (auch null)
G.Heyer
10
Digitale Informationsverarbeitung
While-Berechenbarkeit
Ein While-Programm besteht aus folgenden Komponenten:
Variablen: x0, x1, x2, ...
Konstanten: 0, 1, 2, ...
Trennsymbole: ; :=
Operationszeichen: + Schlüsselwörter: WHILE DO END
Syntax von While-Programmen, induktive Definition:
1. Eine Wertzuweisung der Form xi := xj + c oder xi := xj - c (c Konstante)
ist ein While-Programm
2. Falls P1 und P2 While-Programme sind, so auch P1;P2
3. Falls P While-Programm ist, so ist auch WHILE xi ≠ 0 DO P END ein
While-Programm
4. Nur die durch 1-3 beschiebenen Konstrukte sind While-Programme
Semantik:
Wertzuweisung: xi erhält Wert von xj ± c
Sequenz: erst wird P1 ausgeführt, dann P2
Schleife: P wird so lange ausgeführt, bis xi = 0 gilt. Test vor P-Ausführung
Eingabewerte sind Werte der Variablen x1, ..., xn, alle anderen zunächst 0
G.Heyer
11
Digitale Informationsverarbeitung
Beispiel
Multiplikation: Eingabe: x1, x2, Ausgabe: x0
WHILE x1 ≠ 0 DO
x3 := x2;
WHILE x3 ≠ 0 DO
x0 := x0 + 1;
x3 := x3 - 1
END;
x1 := x1 - 1
END
andere Konstrukte können als Abkürzung eingeführt werden, etwa:
IF x ≠ 0 THEN P1 ELSE P2 END statt
x' := 1; x'' := x;
WHILE x'' ≠ 0 DO P1; x'' := 0; x' := 0 END;
WHILE x' ≠ 0 DO P2; x' := 0 END
Funktion ist While-berechenbar: es gibt While-Programm, das sie berechnet.
G.Heyer
12
Digitale Informationsverarbeitung
Goto-Berechenbarkeit
Goto-Programme:
Sequenzen von Anweisungen mit Marken: M1: A1; M2: A2; ...; Mk: Ak
(Marken, zu denen nie gesprungen wird, dürfen entfallen)
Anweisungen:
Wertzuweisungen:
unbedingter Sprung:
bedingter Sprung:
Stopanweisung:
Ai
xi := xj ± c
GOTO Mi (Ai wird als nächstes ausgeführt)
IF xi = c THEN GOTO Mi
HALT
While-Schleifen lassen sich mit Goto's simulieren:
WHILE xi ≠ 0 DO P END wird
M1: IF xi = 0 THEN GOTO M2;
P;
GOTO M1;
M2: ...
Funktion Goto-berechenbar: es gibt entsprechendes Goto-Programm
G.Heyer
13
Digitale Informationsverarbeitung
Ein Goto-Programm für die Multiplikation
Annahmen:
Eingabewerte x1 und x2, Ausgabe x0, x0 mit 0 vorbelegt
M1: IF x1 = 0 THEN GOTO M4;
x3 := x2;
M2: IF x3 = 0 THEN GOTO M3;
x0 := x0 + 1;
x3 := x3 - 1;
GOTO M2;
M3: x1 := x1 - 1;
GOTO M1;
M4: HALT
Programme mit GOTO schwer verstehbar und kaum verifizierbar
Konstrukt sollte deshalb beim Programmieren nicht verwendet werden
G.Heyer
14
Digitale Informationsverarbeitung
Äquivalenz der Präzisierungen von Berechenbarkeit
Theorem:
Die Begriffe
Turing-berechenbar, While-berechenbar und Goto-berechenbar
sind äquivalent.
Deshalb geht man davon aus, daß der intuitive Berechenbarkeitsbegriff
in diesen Präzisierungen adäquat erfaßt wurde.
Frage: gibt es Funktionen (über den natürlichen Zahlen), die
• mathematisch präzise beschrieben werden können, aber
• nicht berechenbar sind?
G.Heyer
15
Digitale Informationsverarbeitung
Nicht berechenbare Funktionen: ein Beispiel
Jede Turing-Maschine läßt sich eindeutig als natürliche Zahl codieren.
Unter dem speziellen Halteproblem versteht man folgendes Problem:
• gegeben: natürliche Zahl m • gefragt: terminiert Turing-Maschine mit
Code m bei Eingabe m?
Problem repräsentierbar als Funktion f: Nat --> {0, 1},
f(m) = 1 gdw TM mit Code m hält bei Eingabe m, f(m) = 0 sonst
Funktion f ist nicht berechenbar!!
Beweisskizze:
Angenommen es gäbe TM M, die f berechnet. Konstruiere daraus TM
M' wie folgt: M' führt erst M aus, danach wird getestet, ob das Band den Wert
0 hat. Falls ja terminiert M', falls nein geht M' in Endlosschleife. Sei n der
Code von M'. Es gilt:
M' hält bei Eingabe n <=> M bei Eingabe n liefert 0
<=> TM mit Code n hält nicht bei Eingabe n
<=> M' hält nicht bei Eingabe n
Widerspruch!!
G.Heyer
16
Digitale Informationsverarbeitung
Herunterladen