PDF-Version

Werbung
Informatik I, Seite 1
EINFÜHRUNG IN DIE INFORMATIK I
(Script zur Vorlesung vom 8.11.95, 76021 Brauer)
Zu Beginn der Vorlesung wurde folgende studienbegleitende Literatur empfohlen:
- Goos, Informatik I, Springer-Verlag,
- als Ergänzung: Broy, Informatik I, II .
Dann folgte eine Übersicht über den Stoff, der in Informatik I behandelt wird:
1. Konzepte und Denkweisen der Informatik
1.1 Informatik: Was ist - was war - was wird?
1.2 Rechnen und Argumentieren als Textverarbeitung
1.3 Grundbegriffe (Goos, Kap. 1)
2. Formalismen (Goos, Kap. 2, 3, 4)
3. Funktionales Programmieren (Goos, Kap. 5, 6, 7)
(verwendete Programmiersprache: Standard ML)
I. Was ist Informatik?
Hierzu einige Stichworte:
- eine neuartige Wissenschaft
- Informatik ist Kooperationspartnerin für jede andere Wissenschaft und jede andere Sparte
praktischer Tätigkeit
- nicht nur geistige Durchdringung des Problems (wie zB. in der Philosophie), sondern auch
praktische Machbarkeit ist relevant
- einerseits geisteswissenschaftliche Züge, andererseits ingenieurwissenschaftliche Aspekte
- oftmals wird die Bedeutung der Informatik unterschätzt (da sie nicht so offen in ihren
Produkten erkennbar ist).
Der Denkansatz der Informatik ist es, Aspekte intelligenten Verhaltens von Lebewesen formal
zu modellieren.
Beispiele für Intelligenzaspekte sind:
- Zahlenrechnen
- Logisches Schlußfolgern
- Suchen, Sortieren
- Formelmanipulation
- Analyse, Übersetzung formaler Sprachen
- Adaption
- Reagieren
- Lernen
- Klassifikation
- Gestalterkennung
- Aufmerksamkeitssteuerung
- Szenenanalyse /- interpretation
- Sprachverstehen
- Diagnostizieren
- Konfigurieren
- Planen
- Handeln
- Reflektieren / Nachdenken.
Klassisch wird die Informatik als Computerwissenschaft aufgefaßt:
Informatik = Information + Automatik.
Eine moderne Auffassung ist:
Informatik = Intelligenzformalisierungstechnik.
Informatik I, Seite 2
Zu den Aufgaben der Informatik gehört es, Wissen
- zu gewinnen,
- (wiederauffindbar) zu speichern,
- zu verarbeiten,
- anzuwenden (Intelligenz erfordernde Aufgaben zu erledigen).
Ein Informatiksystem ist die technische Realisierung eines formalen Modells.
Von der Realität zum formalen Modell:
Dieser Übergang findet nicht durch Abstraktion (die das Detail als unwichtig impliziert),
sondern durch Reduktion (= Zurückführen einer Sache (der Realität) auf eine ganz andere
Sache (die formale Beschreibung eines Informatiksystems)) statt.
Formale Modelle sind bestimmt durch
- die zu modellierenden Realitätsaspekte,
- die theoretischen Möglichkeiten und Grenzen für formale Beschreibungen,
- die Eigenschaften der zu konstruierenden Informatiksysteme.
II. Entwicklung der Informatik
Die Informatik hat sich in verschiedenen Stufen entwickelt:
1. Pionierzeit (30er Jahre):
- Turing-Zuse-Paradigma: Die rechnende Hilfskraft
- Schlagwort: Datenverarbeitung
- Computer simuliert den einzelnen Menschen als Rechnenden
- Computernutzung: Formelauswertung
- "Leerer" Computer:
Eingabe: 1. Programme (Maschinencode), 2. Daten
Tätigkeit: Berechnung einer Funktion
Ausgabe: Daten.
2. Aufbau der Informatik (70er Jahre):
- Erweitertes Turing-Zuse-Paradigma
- Schlagwort: Informationsverarbeitung
- Computer(system) - als Teil einer Organisation - simuliert:
Hierarchie von Informationsverarbeitern
- Computernutzung: Informatiksystem.
- "Nichtleerer" Computer:
Eingabe: 1. Programm in höherer Sprache, 2. Daten
Tätigkeit: verschiedene Interpretationen der Eingabe,
Berechnung einer Funktion: (1) Programm → Programm, (2) Daten → Daten
Ausgabe: 1. Programme, 2. Daten.
Informatik I, Seite 3
Parallel zum Wandel in Fragen der Unternehmensführung (Teams, Gruppen statt strenger
Hierarchie) änderte sich auch die Auffassung in der Informatik.
3. Auffassungsänderung (Ende der 80er Jahre):
- Neues Paradigma (Petri, Dijkstra, Hewitt, Milner, Minsky)
- Gruppe: autonome, intelligent miteinander kommunizierende Akteure (Individuen) in
Interaktion mit ihrer Umwelt.
- Schlagwort: Wissensverarbeitung (Repräsentationstransformation)
- Computernutzung: Verteiltes, nebenläufiges, reaktives System
(aus Menschen, Computern, Maschinen, ...) in Interaktion mit anderen Systemen
- Nebenläufigkeit: Unabhängigkeit, Einschränken durch Organisation wegen
(a) Konkurrenz (traditionelle Informatik), (b) Kooperation (KI)
- Computerinhalt:
strukturierte Ansammlung von Daten,
Verfahren zur Interpretation und Verarbeitung von Daten,
Verhaltensregeln für Kommunikation
- Computertätigkeit: reagieren auf Anfragen, steuern und regeln, lernen
Informatik I, Seite 4
EINFÜHRUNG IN DIE INFORMATIK I
(Script zur Vorlesung vom 9.11.95, 76021 Brauer)
Die Konsequenzen des neuen Paradigmas (sh. Vorlesung vom 8.11.95) sind:
• Der Computer ist nicht nur ein Werkzeug, sondern auch ein Medium für Kommunikation
(Petri) und "Partner" beim Problemlösen (KI). (Assistenzcomputer)
• Die Notwendigkeit, sich grundsätzlich und in jedem Einzelfall zu überlegen: Welche
Rolle spielen Mensch und Computer im System?
• Es wird ein ganzheitlicher Ansatz für die Systemplanung nötig (Einbindung in die
(Arbeits-) Welt, Prozeß- statt Produktverarbeitung (Qualitätskontrolle).
• Der Verzicht auf zentrale Steuerung (Zwang) und hierarchische Organisation
(Unterordnung) zugunsten von Kooperation und Selbstorganisation mit dezentraler
Entscheidungsfindung mittels Kommunikation.
• Bessere Anwendbarkeit
• Neue Sicht alten Informatikwissens
• Umfassender Begriff der Informatik
• Änderung von Ausbildungskonzepten.
III. Ursprünge der Denkansätze der Informatik
Die Informatik hat eine wesentlich breitere Grundlage als die Elektrotechnik oder die
Mathematik. Sie ist nicht bloß eine "formale Computerwissenschaft", sondern hat auch
Einflüße aus den Bio- und Humanwissenschaften.
Biologie:
• Allgemeine Systemtheorie, Kybernetik:
System, Information, Rückkopplung, laterale Inhibition, Selbstorganisation
• Neuroinformatik:
Neuron, Neuronales Netz, Neuronales Lernen
• Naturanalyse, Optimierungsverfahren:
Gene, Mutation, Selektion, Evolution
• Artifical Life, Comp. Ethology, bottom up AI, Verhaltensbasierte Robotik:
Sensomotorische Instruktion, Signalverarbeitung, funktionale Module
Beispiele von Wissenschaftlern:
Kybernetik: Wiener, Neuro.: McCulloch / Pitts, Evolut.: Rechenberg, Holland.
Informatik I, Seite 5
Humanwissenschaften:
• Kognitionswissenschaften, KI/Kerninformatik:
Symbolverarbeitung, Freges Kompositionsprinzip, Wissensrepresentationsformalismen
• Konnektionismus:
Vernetztes System von Prozessoren, Eingabeabh. Strukturveränderungen, Lernverfahren
• Artifical Life, Kognitive Robotik:
Sensomotorische Interaktion, Modulare Struktur
IV. Philosophische Überlegungen
Der traditionellen Grundvorstellung zufolge besteht ein enger Zusammenhang zwischen
Denken und Symbolverarbeitung (Fregesches Kompositionsprinzip), siehe Wittgenstein I
(Tractatus): logischer Aufbau der Welt.
Diese steht im Gegensatz zu zB. Heideggers Ansicht.
V. Zur Weiterentwicklung der Informatik
(siehe WorldWideWeb)
1.2 Rechnen und formales Argumentieren (Denken) als
Textverarbeitung
1.2.1 Informelle Begründung
Das Denken als Textverabeitung zu betrachten, ist unter anderem deshalb sinnvoll, da die
Produkte des Denkens, also zB. Sprache, Logik, Mathematik, als Texte darstellbar sind.
Zugrunde liegt dem Text ein Alphabet (Menge von Zeichen). Die Zeichenfolgen sollen linear
auf Karopapier geschrieben werden (ein Karo pro Zeichen), außerdem soll es Bleistift und
Radiergummi geben. Das elementare Alphabet ist: 0 = leeres Kästchen, 1 = Kästchen
markiert (zB. Darstellung komplexer Zahlen als Muster aus leeren und markierten Karos).
Beispiel: Die natürlichen Zahlen N = { 0, 1, 2, ... }
Darstellung von n ∈ N durch unäre Darstellung u(n):
Aktionen:
• Ein Karo betrachten, ob leer oder markiert
• Karo markieren (1 statt 0 schreiben)
• Markierung entfernen (0 statt 1 schreiben
• Karo nicht verändern
• Zum linken Nachbarkaro gehen (oder eine konstante Anzahl von Kästchen nach links)
• Zum rechten Nachbarkaro gehen (oder eine konstante Anzahl von Kästchen nach rechts)
Rechenoperation: Nachfolgerbestimmung
Der Nachfolger von n ∈ N ist n + 1:
Informatik I, Seite 6
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 15. und 16.11.95, 76021 Brauer)
Beispiel 1: Nachfolgerfunktion
Sei u(n) die in der Vorlesung vom 9.11.'95 beschriebene unäre Darstellung einer natürlichen
Zahl, s(n) die Nachfolgerfunktion mit s(n) = n + 1.
Eingabe (Argument): u(n)
Ausgabe(Fkts.-wert): u(s(n)) = u(n + 1)
Verfahren zur Berechnung: Eine 1 hinzufügen.
Im Prinzip ist es durch die Nachfolgerfunktion möglich, die gesamte Mathematik der
natürlichen Zahlen auf der Ebene der unären Darstellung zu beschreiben (auch wenn die
unäre Darstellung zweifellos nicht die effizienteste Repräsentation der natürlichen Zahlen ist).
Die Addition n + m kann natürlich auch auf die Nachfolgerfunktion zurückgeführt werden,
allerdings ist eine "trickreiche" Berechnung effizienter, wenn dies vielleicht auch auf Kosten
der Klarheit des Berechnungsverfahren geht:
Gegeben:
Verfahren: Den Zwischenraum markieren und links eine 1 entfernen.
Ergebnis:
Eine andere Kodierung als die unäre ist zB. die Braille-Schrift (zweidimensional). Außerdem
werden Kodierungen oft mit Zusatzeigenschaften ausgestattet (Verschlüsselung, Paritätsbit,
siehe Goos).
Beispiel 2: Logik
Logische Aussagen sind entweder wahr oder falscch.
Logische Operatoren sind zB. "und", "oder", "nicht", "Wenn ..., dann ...".
Beispiel: "Wenn es regnet, dann ist die Straße naß." (Gegebene Regel)
Feststellung: "Es regnet." (Eingabe)
Folgerung: "Die Straße ist naß." (Ergebnis)
Modus ponens: "Wenn A, dann B."
A

B
Logik kann also als Textverarbeitung gesehen werden.
Erster Versuch einer Modellbildung
"Maschinelle" Textverarbeitung mit Hilfe von Akteuren (Teams).
Akteure: Spezialisiert auf einzelne Aktionen.
T: if Karo leer then rufe x else rufe y.
M: ersetze 0 durch 1.
N: ändere nichts
E: ersetze 1 durch 0
Informatik I, Seite 7
Feststellung:
( T, M, E, N) - Akteure als Teams können jede beliebige Zeichenfolge ( 0/1-Folge) in jede
beliebige andere umformen; d.h. alle Textverarbeitungsaufgaben lösen (Instruktionen für
Team).
Zur Vereinfachung sollen im folgenden nur sequentielle Aktionen (im Gegensatz zu
parallelen) betrachtet werden.
Benötigt werden folgende Festlegungen:
(1) Es muß ein aktuelles Karo ausgezeichnet werden:
.
Nur das aktuelle Karo wird bearbeitet.
Beim Start ist das erste Karo links von der Eingabe das aktuelle Karo.
(2) Kooperation: Akteure erhalten Namen (Nummern 1, 2, ...).
Zur Bewegung auf dem Karo Papier werden neue Akteure eingeführt:
MR: Wie M, dann wird rechts benachbartes Karo aktuell.
ML: Wie M, dann wird links benachbartes Karo aktuell.
NR, NL, ER, EL analog.
S: Stop.
Beispiel 3:
Eingabe:
Ausgabe:
Instruktionsfolge:
T1: T( NRT2 , NLS )
T2: T( NLS , ERT3 )
T3: T( MRT4 , NLS )
T4: T( MRT5 , NLS )
T5: T( NLS , ERT6 )
T6: T( NLS , NRS )
Beispiel 4: Team für s(n)
Eingabe:
Instruktionsfolge:
T1: T( MLS, NRS)
Beispiel 5: Addition
Eingabe:
Instruktionsfolge:
T1: T( NRT1 , ERT2 )
T2: T( MLT3 , NRT2 )
T3: T( NRT4 , NLT3 )
T4: T( NRS , NLS )
Annahme: Das Karoband ist beliebig um leere Karos verlängerbar.
Informatik I, Seite 8
Definition:
Eine Funktion f: N → N heißt berechenbar (Team-berechenbar), wenn ein Team von
Akteuren existiert, das
in
umformt und stoppt für jedes n ∈ N.
1.2.2 Busy-Beaver-Spiel ( T. Rado 1960 )
Beim Busy-Beaver-Spiel starten die Teams auf einem leeren Band, schreiben 1'en, und
stoppen dann nach endlich vielen Schritten.
Beispiel 1:
Folgendes Team aus 2 Akteuren schreibt drei 1'en:
T1: T ( MRT2 , NLS )
T2: T ( MLT2 , NLT1 )
Beispiel 2:
Dieses Team aus 3 Akteuren schreibt sechs 1'en:
T1: T( MRT2 , NLT3 )
T2: T( MRT3 , NRS )
T3: T( MLT1 , ELT2 )
Wettbewerb der Kategorie n (∈
∈ N)
Zu n ist ein Team aus n Akteuren gesucht, das die Maximalzahl von 1'en auf das leere Band
schreibt.
Behauptung: (1) Für n = 2 ist Bsp. 1 kein Sieger,
(2) Für n = 3 ist Bsp. 2 ein Sieger.
Der Wettbewerb definiert eine Funktion R : N → N.
R ( n ) = Maximalzahl von 1'en, die n Akteure auf ein leeres Band schreiben und
(nach endlich vielen Schritten) stoppen können.
Bemerkung:
R ( n ) ist wohldefiniert für jedes n, eine Vorschrift zur Berechnung lautet:
2n
(a) Man stelle alle Akteurteams aus n Akteuren zusammen,d.h. [3⋅ 2 ⋅ ( n + 1)] Teams.
(b) Man lasse alle Teams arbeiten. Wenn sie fertig sind, stelle man die Zahl der 1'en fest,
die das Maximum bilden.
Tabelle bisher bekannter Werte der Rado-Funktion:
n
0
R(n) 0
1
1
2
4
3
6
4 5
6
13 ≥ 4098 ≥ 95524079
Für n ≥ 5 ist die Rado-Funktion noch nicht berechnet, nur untere Grenzen sind bekannt.
Zur Berechnung der unteren Grenze von R ( 5 ) wurden 11 Millionen Schritte gebraucht, für
die Berechnung der unteren Grenze von R ( 6 ) 8⋅ 1015 Schritte.
Informatik I, Seite 9
Eigenschaften von R
Feststellung:
R ist streng monoton wachsend: R (n + 1) > R (n), n ∈ N.
Beweis:
Im Team für R (n) ersetzt man S durch Tn+1 und fügt Tn+1: T ( MRS, NRTn+1 ) an.
Das so konstruierte Team besteht dann aus (n + 1) Akteuren und macht genau einen Strich
mehr als das Team für R (n), also R (n + 1) ≥ R (n) + 1 ⇒ R (n + 1) > R (n).
Theorem: R ist nicht berechenbar.
Beweis:
(1) Vorüberlegung:
Aus 2 Teams kann durch Hintereinanderschreiben von t Modifikationen ein neues Team
gebildet werden:
Team G
T1
T2
T3
...
Tn
Team F
T1
T2
T3
...
Tm
Team G • F
T1
...
Tn
Tn+1
...
Tn+m
Im neuen Team G • F sind die Akteure T1 bis Tn wie in G definiert, nur das S stets durch
Tn+1 ersetzt ist. Die Akteure Tn+1 bis Tn+m sind wie die Ti in F definiert, wobei aber
für Ti: T (...Tj, ...Tk) folgende Änderungen vorgenommen werden:
i → i + n , j → j + n , k → k + n.
Wenn G die Funktion g berechnet, F die Funktion f, dann berechnet G • F die Funktion
f ( g ( )).
(2) Teams bilden:
(a) B4: T1: T( MLT2 , ELT3 )
T2: T( MRT1 , NLT1 )
T3: T( NLS, NLT4 )
T4: T( MRT4 , ERT2 )
B4 schreibt 12 Einsen auf das leere Band:
(b) B4 • B4 •⋅ ⋅⋅ ⋅⋅ ⋅ •B4 = ( B4 ) schreibt 12 m Einsen.
m Stück
m
(c) B'4 entsteht aus B4 durch Ändern von T3.
Hier: T3: T( NRS, ... ), dadurch erfolgt der Stop direkt links neben den Einsen.
( ) n−1 • B' 4 , n ∈ Ν
(d) D n = B 4
Dn hat 4 n Akteure und schreibt 12 n Einsen.
Informatik I, Seite 10
(3) Indirekter Beweis:
Angenommen, die Behauptung ist falsch. Dann ist R (n) berechenbar für jedes n ∈ N;
d.h. es existiert ein Team TR von k Akteuren mit
Nun wird Dn • TR betrachtet.
Dieses Team schreibt R (12n) Einsen auf das leere Band und hat 4n+k Akteure. Also
kann es im Wettbewerb der Kategorie 4n+k mitmachen, wo es sicher nicht besser ist als
der Sieger. Es gilt also:
(I) R (4n+k) ≥ R (12n).
Da k eine feste Zahl ist, existiert ein n0 mit 12n0 ≥ 4n0+k, also gilt wegen der Monotonie
von R:
(II) R (12n0 ) < R (4n0+k).
Aus (I) und (II) folgt: R (4n0+k) ≥ R (12n0 ) > R (4n0+k), Widerspruch!
Also ist die Annahme falsch, das Theorem bewiesen.
Nachdenken:
(1) Berechenbarkeitsbegriff ist richtig.
(2) Busy-Beaver-Funktion:
In der Def. steckt das sog. "Halteproblem" (Frage, ob für eine Berechnungsvorschrift
feststellbar ist, ob sie zu Halt führt).
Folgerung:
Das Halteproblem für Teams von Akteuren ist nicht entscheidbar.
Folgerung:
R wächst schneller als jede berechenbare Funktion, d.h. es existiert zu jeder berechenbaren
Funktion f eine natürliche Zahl nf mit R (n) > f (n) für n > nf.
Informatik I, Seite 11
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 22.11.95 und 23.11.95, 76021 Brauer)
Bisher wurden sog. Teams von Akteuren betrachtet. Diese Teams sind in der Literatur unter
dem Namen Turingmaschinen bekannt ( A. M. Turing 1936). Dabei ist ein Team für eine
Aufgabe zuständig, die Berechnung eines Funktionswertes.
Im folgenden jedoch sollen Formeln ausgewertet werden:
"4 + 5" → "9"
"4 ⋅ 5" → "20"
"5 ⋅ ( x + 2 ) − 7 = 13" → "x = 2"
1.2.3 Wortverarbeitende Kalküle
Beispiel 1: Lösen von Gleichungen
Die Zahlen im Beispiel sollen unär dargestellt werden.
((( 5u ⋅ ( x + 2u )) − 7u ) = 13u
( 5u ⋅ ( x + 2u )) = ( 13u + 7u )
( F1 − F2 ) = F3
F1 = ( F3 + F2 )
Allgemeine Regeln
Prämisse
Konklusion
( 5u ⋅ ( x + 2u )) = ( 13u + 7u )
( 5u ⋅ ( x + 2u )) = 13u 7u
F1 = ( F2 + F3 )
F1 = F2 F3
Prämisse
Konklusion
Beispiel 2: Addition unärer Zahlen
111+11 → +11111
Regel:
1+
+1
Allgemeine Struktur von Regeln:
α1 , α2 , .... , αn
β
β
Prämissen
Konklusion
prämissenfreie
Regel
Der Kalkül: - Zeichen
- die zulässige endliche Menge von Regeln
- Vorschrift über die Anwendung der Regeln
- keine Anwendungsreihenfolge ( "nichtdeterminiert (nichtdeterministisch)" )
Definition:
Sei ein Alphabet A (endliche (geordnete) Menge von Zeichen) gegeben.
Eine beliebige Folge von Zeichen aus A, d.h.
a1 a2 .... an mit ai ∈ A, i = 1, ... , n, n ∈ N ( ≥ 0 ),
heißt Wort über A der Länge n.
Für n = 0 haben wir das sog. leere Wort ε.
Bezeichnungen:
| w | = Länge von w, |ε | = 0
A* = { w | w ist Wort über A }
A+ = A* \ {ε }
Informatik I, Seite 12
Auf A* ist die Verknüpfungsrelation Konkatenation (Hintereinanderschreiben, Verkettung)
folgendermaßen definiert:
w, v ∈ A* mit w = a1... an , v = b1... bm , dann ist w v = w . v = a1... an b1... bm.
Für die Konkatenation gilt:
1) | w v | = | w | + | v | für alle w, v aus A*
2) w ε = ε w = w für alle w aus A*.
Definition:
u ∈ A* heißt Teilwort von w ∈ A*, wenn w = v1 u v2, wobei v1, v2 ∈ A*.
u heißt Anfangswort von w, wenn v1 = ε.
u heißt Endwort von w, wenn v2 = ε.
Definition: Kanonischer Post-Kalkül ( E. Post, 1936 ) :
2 Alphabete: A Zeichenalphabet,
V Variablenalphabet,
A ∩ V = ∅.
Endlich (normalerweise) viele Regeln der Form
w1 Z1 w2 Z2 ......... wn Zn wn+1
w'1 Z'1 w'2 Z'2 ......... w'm Z'm w'm+1
mit wi , w'k ∈ A* und { Z'1, Z'2, ..... , Z'm } ⊆ { Z1, Z2, ..... , Zn } ⊆ V.
Beispiel 3: (siehe Beispiel 1)
w1 = ( , w2 = − , w3 = )= , w4 = ε , w'1 = ε , w'2 = =( , w'3 = + , w'4 = ) ,
Zi = Z'i = Fi , i = 1, 2, 3
Beispiel 4: Addition unärer Zahlen
Z1 1 + Z2
Z1 + 1 Z2
Beispiel 5:
aZ
bZ
a
Zab
Zc
Daraus läßt sich ableiten: a ⇒ a b ⇒ b a b ⇒ a b a.
Definition:
Ein Semi-Thue-System (STS) (Axel Thue, 1914 ), ist ein normaler Post-K. mit Regeln der
Gestalt :
Z1 u Z2
Z1 v Z2
Dadurch wird u durch v ersetzt, während der Kontext unverändert bleibt.
Andere Schreibweise für die Regeln eines STS sind: u → v oder ( u , v ).
Beispiel 4 stellt ein STS mit 1+ → +1 dar.
Beispiel 6:
STS:
+→ε
A={+,1}
Dieses STS liefert die Addition unärer Zahlen: 11+111 ⇒ 11111.
Informatik I, Seite 13
Dabei ist zu beachten, daß nun keine Karos mehr betrachtet werden, sondern einfach über A*
gearbeitet wird!
Es gilt:
Jeder wortverarbeitende Kalkül ( z.B. Kanon. Post-Kalkül ) läßt sich effektiv durch STS ( mit
Hilfszeichen ) simulieren.
Beispiel 7:
Alphabet: A = { a , b } , Regel: a b → ε.
Welche Worte w ∈ A* können zu ε reduziert werden ?
Beispiele für Reduzierungen: aababb ⇒ aabb ⇒ ab ⇒ ε und aabbaa ⇒ abaa ⇒ ε.
Setzt man a = Klammer auf = "( " und b = Klammer zu = ")", so erkennt man, daß die Regel
nichts anderes tut, als korrekte Klammerpaare aus dem Wort zu streichen, d.h. es werden alle
korrekten Klammerausdrücke zu ε reduziert.
Die Menge der durch obiges STS reduzierten wohlgeformten Klammerausdrücke heißen:
Dyck-Sprache über A.
Genauere Beschreibung von STS:
Metaregeln für die Anwendung der STS-Regeln: u→ v
1)
Prüfe, ob u im Wort w vorkommt. Wenn ja, dann heißt u → v anwendbar auf w.
2)
Wenn u → v anwendbar ist, wähle beliebiges Vorkommen von u in w (1. Grund für
Nichtdeterminismus), etwa w = s u t. Ersetze dies durch v, was w ' = s v t ergibt.
Schreibweise: w ⇒ w '.
⇒
D. h. die Regel: u → v definiert die Relation R (ableitbar) auf A*.
3)
Wenn mehrere Regeln gegeben sind, ist freigestellt, welche man anwendet (2. Grund
für Nichtdeterminismus).
Definition: Iterierte Anwendung von Regeln: "Allgemeine Ableitungsrelation"
Gegeben: STS : ℑ = ( A, ℜ ) ( mit ℜ als Regelmenge und A als Alphabet).
Für w, w ' ∈ A* gilt w ⇒* w ' genau dann, wenn
w = w ' ( Null Regelanwendungen) oder
w = w1 ⇒ w2 ⇒ ..... ⇒ wn+1 = w ', wobei n ≥ 0, wi ∈ A*, die Regeln natürlich aus ℜ
.
STS definieren auf verschiedene Weise Teilmengen von A* (formale Sprachen).
I.A. wählt man ein festes s ∈ A*
• Erzeugung: { w ∈ A* | s ⇒* w }
• Reduzierung: { w ∈ A* | w ⇒* s }.
Um die Erzeugungskapazität von STS zu erhöhen, nimmt man zum eigentlichen Alphabet A
noch ein Hilfsalphabet N von Nichtterminalen (Variablen, Hilfszeichen) hinzu.
Die Elemente von A heißen dann Terminale.
Ein solchermaßen erweitertes STS wird beschrieben durch ein Quadrupel:
STS: ℑ = ( A , N, ℜ , S ) , wobei S aus N ist und Startsymbol genannt wird.
Die Sprache von ℑ ( von ℑ erzeugte Sprache) ist:
L ( ℑ )= { w ∈ A* | S ⇒* w, wobei nur zur Ableitung nur Regeln aus ℜ benutzt werden }
= { v ∈ (A ∪ N )* | S ⇒* v } ∩ A*.
Das Arbeitsalphabet von ℑ, über dem die Regeln definiert sind, ist A ∪ N.
D.h. für (u → v) ∈ ℜ ist u, v ∈ ( A ∪ N )*.
Informatik I, Seite 14
Beispiel 8:
ℑ = ( { a , b} , { S }, ℜ , S ) mit ℜ = { ( S → aSb) , ( S → SS ), ( S → ε ) }.
Dann gilt: S ⇒* ab, da S ⇒ aSb ⇒ aSSb ⇒ aaSbSb ⇒ aabSb ⇒ aababb.
Im obigen Beispiel wird die linke Seite einfach ersetzt, was in folgender Definition
aufgegriffen wird:
Definition:
Ein verallgemeinertes STS (mit Nichtterminalen) G = ( A, N, P, S ) mit S ∈ N heißt
kontextfreie Grammatik, wenn gilt: wenn u → v aus P , so ist u ∈ N.
Definition:
Ein Markov-Algorithmus ( A.A.M, 1948 ) ist ein verallgemeinertes STS, bei dem
1) die Regeln numeriert sind: "i : u → v ",
2) gewisse Regeln als haltend ausgezeichnet sind: "→." .
Metaregeln für die Benutzung eines M.A.
Gegeben: ein Wort w.
• Wähle Regel mit kleinster Nummer, die auf w anwendbar ist: i : u → v.
• Ersetze das erste Vorkommen von u in w von links aus durch v.
• Ist die Regel haltend, so hält der Algorithmus.
Andernfalls beginne von vorne ( wende auf w ' (w ⇒1 w ' ) den Alg. an ).
Informatik I, Seite 15
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 29.11.95 und 30.11.95, 76021 Brauer)
Satz:
Die kontextfreie Grammatik G mit den Regeln
[1]
S → aSb
[2]
S → SS
[3]
S → ab
erzeugt genau die Worte aus { a, b}+, die durch das STS mit der Regel
ab → ε
auf ε reduziert werden.
Beweis:
(1) Behauptung: Wenn w ein von G erzeugtes Wort ist, dann ist w auch auf ε reduzierbar.
Beobachtung: Die Reihenfolge der Regelanwendungen ist beliebig.
Beweis:
Sei w gegeben mit S ⇒* w und w ≠ ε. Es wird die Länge |w| betrachtet:
|w| = 1: unmöglich.
|w| = 2: S ⇒ w = ab, w ist also reduzierbar.
|w| > 2:
Betrachte den letzten Schritt der Ableitung: S ⇒* uSv ⇒ uabv = w.
Suche Ableitung für uv = w': Wie entstand das S in uSv ?
Zwei Fälle sind möglich:
1) Durch Regel [1]: S ⇒* u'Sv' ⇒ u'aSbv' mit u'a = u und bv' = v.
Dann gilt auch: S ⇒* u'Sv' ⇒ u'abv' = uv = w'.
2) Durch Regel [2]: S ⇒* xSy ⇒ xSSy ⇒* uSv.
O.E.d.A. : "Das rechte S ist das letzte.": y ⇒* v, xS ⇒* u mit S ⇒* z, xz ⇒* u.
Dann gilt auch: S ⇒* xSy ⇒* xzy ⇒* uy ⇒* uv = w'.
Also: Ist w ableitbar, dann ist w reduzierbar auf w' = uv und w' ist wieder ableitbar
und kürzer als w. Auf w' obiges anwenden usw.: Fertig!
(2) Behauptung: Wenn w auf ε reduzierbar ist, dann existiert eine Ableitung S ⇒* w.
Beobachtung: Reihenfolge der Reduktionsschritte ist beliebig, also ganz links reduzieren!
Beweis: Ableitungsfolge aus umgekehrter Reduktionsfolge konstruieren: |w| betrachten:
|w| = 1: unmöglich
|w| = 2: w = ab, S ⇒ ab.
|w| = 3: unmöglich
|w| = 4: (i) w = aabb, S ⇒ aSb ⇒ aabb, (ii) w = abab, S ⇒ SS ⇒ abS ⇒ abab.
Annahme: Behauptung ist bewiesen für alle Wörte mit Länge ≤ m, m gerade.
Es wird also nun w betrachtet mit |w| = m+2:
Reduziere w: w = uabv mit u = ak, k ≥ 0 (wg. Reihenfolge) .
uv ist reduzierbar, da w reduzierbar ist, uv ist aber auch ableitbar (lt. Annahme!).
Dann sind wiederum zwei Fälle zu unterscheiden:
1) v = bv' : S ⇒* u'Sv' ⇒ u'abv' = uv.
Dann gilt: S ⇒* u'Sv' ⇒ u'aSbv' ⇒ u'aabbv' = uabv = w.
2) v = av' :
Dann existiert eine Zerlegung v' = zz' mit S ⇒* uSz' ⇒* uazz' = uv, S ⇒* az.
Dann gilt: S ⇒* uSz' ⇒ uSSz' ⇒ uabSz' ⇒ uabazz', d.h. S ⇒* uabv = w.
Informatik I, Seite 16
Beispiel für einen Markov-Algorithmus:
A = {a, b}, N = {X, Y, Z}
1: aaY → aYa
2: abY → bYa
3: baY → aYb
4: bbY → bYb
5: Xa → aYaX
6: Xb → bYbX
7: Y → z
8: Z
→ε
9: X →. ε
10: ε
→X
aba ⇒ Xaba ⇒ aYaXba ⇒ aYabYbXa ⇒ aYbYabXa ⇒ aYbYabaYaX ⇒ aYbYaaYbaX ⇒
aYbYaYabaX ⇒ aZbZaZabaX ⇒ abaabaX ⇒ abaaba.
Feststellung: Der MA berechnet d: A* → A* mit w → ww.
Bemerkung: Die Funktion kann von einem MA nicht ohne Hilfszeichen berechnet werden.
Feststellung: Die Teams von Akteuren sind durch einen MA simulierbar.
A = {0, 1}, N = { T1, T2, T3, ... , Tn }
Dabei wird
durch uTixv ersetzt.
Startregel des MA:
Schlußregel des MA:
ε → T10
S →. ε , (S bedeutet stop)
Die Teams werden durch Regelgruppen ersetzt, zB.:
Ti: T( MRX, ELY ) mit X, Y ∈ { Tj, Tk, S } wird ersetzt durch
Ti00
→
1X0
Ti01
→
1X1
Ti0
→
1X0
0Ti1
→
Y00
1Ti1
→
Y10
Ti1
→
Y00 .
Die Schlußregel muß ganz nach vorne.
Satz: Jede ( Team-) berechenbare Funktion ist MA-berechenbar.
Beweis: siehe oben und Zusammensetzen von MA'en
M1 • M2 : Erst M1, dann M2 anwenden.
Regeln von M1 • M2:
S →. ε : Schlußregel
M1'
: Regeln von M1, ohne Startregel, S durch Tn+1 ersetzen
M2'
: Regeln von M2, ohne Schlußregel, Ti durch Ti+n ersetzen.
ε →T10 : Startregel
Informatik I, Seite 17
Die so konstruierten MA sind spezielle MA:
In jeder Regel gibt es nur 1 Hilfszeichen, Weberschiffchen- (Shuttle-) Algorithmus.
(1) Jeder MA ist durch Shuttle-MA simulierbar.
(2) Jede berechenbare Funktion ist Shuttle-berechenbar.
(3) Busy-Beaver-Funktion ist nicht MA-berechenbar.
(4) Es gibt keinen Kalkül / Algorithmus, der von einem beliebigen Verfahren (Kalkül /
Algorithmus) feststellt, ob er angesetzt auf ein Wort je hält.
Bemerkung:
Ein Busy-Beaver-Team als Wort über: V = { 0, 1, ( , ), /, : , M, N, E, L, R, S}
Ti: T (ABTj , CDTk )
wird zu
T1...1: T(ABT1...1 / CDT1...1)
i Einsen
j Einsen k Einsen.
Definiere eine formale Sprache LBBH ⊆ V*:
LBBH sei die Menge aller Worte aus V*, die Darstellungen von BB-Teams sind, die halten
(nach einem Start auf leerem Band).
Satz: Die Frage, ob für w ∈ V* gilt w ∈ LBBH , ist nicht entscheidbar.
(wenn w ∈ V* nicht in LBBH ist, kann ich ewig warten...)
Aber es gilt: LBBH ist effektiv erzeugbar:
Man erzeuge die BB-Team-Worte (lexikographisch geordnet) und simuliere parallel jedes
BB-Team.
Zusammenfassung:
Alphabet A, Worte über A: A*
Funktionen f: A* → A*, diese können "partiell" sein, d.h. nicht überall definiert.
f: D → A* (mit D ⊆ A) heißt berechenbar, wenn ein Kalkül existiert, der zu d ∈ D stets f (d)
bestimmt (in endlicher Zeit).
U ⊆ A* heißt aufzählbar (berechenbar), wenn ein Kalkül existiert, und ein w ∈ A* mit w ⇒*
u (oder u ⇒* w) für jedes u ∈ U (LBBH ist aufzählbar).
U ⊆ A* heißt entscheidbar, wenn ein Kalkül existiert und w1, w0 ∈ A* mit
u ⇒* w1 (und w0 nicht aus u ableitbar) für alle u ∈ U
und mit
u ⇒* w0 für alle u ∈ A*\U (und w1 nicht aus u ableitbar).
Feststellung:
U ⊆ A* entscheidbar g.d.w. U und A*\U aufzählbar.
U ⊆ A* entscheidbar g.d.w. die sog. charakteristische Fkt. von U
chU: A* → {0, 1} mit w → 1, wenn w ∈ U, sonst w → 0,
berechenbar ist.
Es gibt aufzählbare, nicht entscheidbare Sprachen (L BBH).
Ist f: A* → A* berechenbar (total), dann ist f(A*) aufzählbar.
Informatik I, Seite 18
EINFÜHRUNG IN DIE INFORMATIK I
(Script zur Vorlesung vom 6.12.95, 76021 Brauer)
Zusammenfassung:
Alle "vernünftigen", "allgemeinen" Begriffe von Kalkül / Algorithmus sind gleichwertig.
"Berechenbar","entscheidbar","aufzählbar" sind allgemein.
Un-Berechenbarkeit, Un-.... bleibt Un-.....
1.3 Chomsky-Grammatiken und formale Sprachen
1.3.1 Allgemeine Konzepte
Trivialgrammatik des Deutschen:
Der Grammatik läßt sich auch so formulieren:
S → SG SA
SG → ArNo
SA → PrOb
Ar → der | die | das
usw.
Definition: Eine Phrasenstrukturgrammatik (Chomsky-Grammatik)
ist ein VSTS (verallgemeinertes STS): G = ( Σ, N, P, S ), Σ ∩ N = ∅.
P : Menge der Produktionen (Regeln, endlich viele),
V = Σ ∪ N,
S∈N
L ( G ) = { w ∈ Σ* | S ⇒* w } : die von G erzeugte Sprache.
Informatik I, Seite 19
Produktionen, Grammatiken und Sprachen werden in Typen eingeteilt:
Produktionen:
Typ 0 Ch-0: u → w , u, v ∈ V
Typ 1 Ch-1: uAv → urv , r ≠ ε ; kontextsensitiv
Typ 2 Ch-2: A → u , u ∈ V* ; kontextfrei
Typ 3 Ch-3: A → uB, u Σ*, B ∈ N ; rechtslinear (regulär)
Grammatik vom Typ i:
Alle Produktionen vom Typ k ≥ i ; mindestens eine vom Typ i.
Sprache vom Typ i:
Wenn eine Grammatik vom Typ i für die Sprache existiert.
Bemerkung: Eine durch eine Gr. vom Typ i gegebene Sprache kann vom Typ k+i ( k≥1) sein.
Beispiele:
AB → Ab, A → a, B → b, S → AS, S → B (Typ 1)
aber: S ⇒* A...AS ⇒ A...AB ⇒ A...Ab ⇒* a...ab ,
einfacher ist also: S → aS | b (Typ 3).
Satz:
Die Chomsky-Sprachklassen bilden eine echte Hierarchie, d.h. für i = 0,1,2 existiert eine
Sprache Li vom Typ i, die nicht vom Typ i+1 ist.
Zum Beispiel:
L2 = { anbn | n ≥ 1 } ist kontextfrei,
L1 = { anbncn | n ≥ 1 } ist kontextsensitiv,
L0 = LBBH ist aufzählbar, aber nicht entscheidbar, also nicht kontextsensitiv, denn:
Kontextsensitive Sprachen sind entscheidbar, denn
S ⇒* u ⇒* v für G vom Typ 1 impliziert |u| < |v|.
Entscheidungsverfahren:
Gegeben: G vom Typ i, w ∈ Σ*
Verfahren:
Versuche alle Ableitungen S ⇒* v mit |v| ≤ |w| (es sind ja endlich viele). Entweder kommt w
vor oder nicht.
Eine Grammatik für L1 ist:
S → abc | aAbc , Ab → bA , Ac → Bbcc , bB → Bb , aB → aaA, aB →aa .
1.3.2 Kontextfreie Grammatiken und Sprachen
Typische kontextfreie Sprachen sind: Dycksprache, Formeln der Arithmetik (arithmetische
Ausdrücke).
< ar. Ausdruck > ::= < ar. Ausdruck > + < ar. Ausdruck > |
< ar. Ausdruck > * < ar. Ausdruck > |
( < ar. Ausdruck > ) |
x
S → S + S | S * S | ( S ) | x , dabei entspricht → dem ::= und < ... > den Nichtterminalen.
Informatik I, Seite 20
Die Syntaxdiagramme sind eine graphische Darstellung für kontextfreie Grammatiken:
Sei ein vollständiges Team von Produktionen für A ∈ N gegeben, so daß keine andere
Produktion mit A links existiert: A → u1 | u2 | ... | un .
Das zugehörige Diagramm ist:
bedeutet :
für u = vav' (a ∈ Σ ),
für u = vBv' ( B ∈ N ).
Beispiel:
x + x * ( x + x ) wird in einem Baum analysiert:
Informatik I, Seite 21
Kapitel 2
2.1 Halbgruppen und Monoide
Definition:
Sei H eine Menge, • eine zweistellige Verknüpfung auf H: h • h' ∈ H für alle h, h' aus H.
Es gelte das Assoziativgesetz a • ( b • c ) = ( a • b ) • c für alle a, b, c aus H.
Dann heißt ( H , • ) Halbgruppe.
Informatik I, Seite 22
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 13.12.95 und 14.12.95, 76021 Brauer)
(im folgenden wird noch einmal an Kapitel 1 angeschlossen)
Syntaxanalyse:
Finden aller (allerwesentlich verschiedenen) Ableitungen eines Wortes (Satzes, Programms).
In natürlichen Sprachen gibt es zahlreiche Mehrdeutigkeiten:
Prinzipielle Verfahren zur Syntaxanalyse
Testen, ob w ∈L(G), w ∈∑*
1. Erzeugung:
Versuche Ableitung "Top-Down" zu finden. Start mit S, dann werden die Regeln angewendet:
S ⇒ w1 ⇒ .... ⇒ wn ≈ w ,
wobei durch ≈ angedeutet werden soll, daß während der Anwendung der Regeln auf das
Ergebnis geschaut wird. Während der Ableitung kann man in Sackgassen gelangen, dann
wird Rücksetzen notwendig.
2. Reduktion
Starte mit w, versuche die Produktionen "rückwärts" anzuwenden.
v→u
u→v
Statt G jetzt R G anwenden, solange bis S erreicht ist.
Auch hier Sackgassen, Rücksetzen.
Kapitel 2: Halbgruppen und Relationen
2.1 Halbgruppen und Monoide
Definition:
Sei H eine Menge, Κ eine zweistellige Verknüpfung: K: H × H → H
Es gelte das Assoziativgesetz a • ( b • c ) = ( a • b ) • c für alle a, b, c aus H.
Dann heißt ( H , • ) Halbgruppe.
Eine Halbgruppe heißt Monoid, wenn sie ein Einselement (neutrales Element) e besitzt mit
e • h = h • e = h für alle h ∈ H.
Feststellung: Eine Halbgruppe hat höchstens ein Einselement. Ein Monoid genau eines.
Beweis:
Indirekt, Annahme: Es existieren zwei verschiedene Einselemente e und e'.
Widerspruch durch: e = e • e' = e'.
Informatik I, Seite 23
Beispiele:
1. A sei eine Menge, dann ist A* Monoid mit ε als Einselement.
Bem.: A* ist sogar ein freies Monoid, d.h. aus a1 • a2 • ..... • an = b1 • b2 • ..... • bm
folgt n = m, ai = bi für i = 1, 2, ..., n.
2. ( N, ⋅ ) ist Monoid, 1 ist Einselement.
( N0, +) ist Monoid, 0 Einselement (neutrales Element).
3.
4.
( H, ⋅ ) Halbgruppe, P( H ) = Menge aller Teilmengen von H (Potenzmenge).
Verknüpfung auf P(H) : Komplexprodukt: U • V = { u ⋅ v | u ∈ U, v ∈ V }, U, V ⊆ H.
Dann ist ( P(H), • ) Halbgruppe. Sie ist nicht frei , denn ∅ • U = ∅.
Ist ( H, ⋅ ) Monoid, dann auch ( P(H), • ) mit dem Einselement {e}.
Definition:
Sei ( H, ⋅ ) Halbgruppe, U ⊆ H.
U heißt Unterhalbgruppe von ( H, ⋅ ), wenn U • U ⊆ U.
U heißt Untermonoid, wenn H Monoid mit Einselement e und e ∈ U ist.
E ⊆ H. Dann wird definiert: E1 := E, für i ∈ N: Ei+1 := Ei ⋅ E.
Weiterhin:
∞
+
i
E =
E = {e 1 ⋅ e 2 ....⋅e n | n ∈ Ν, e i ∈ E}
U
i=1
E+ ist die von E erzeugte (Unter-) Halbgruppe (von (H, ⋅ )), denn E+ • E+ ⊆ E+ und E+ ist
die kleinste (bzgl. ⊆ ) Unterhalbgruppe U ⊆ H mit E ⊆ U.
Ist ( H, ⋅ ) Monoid, e Einselement. Dann: E° := {e}, E* := E° ∪ E+ .
E* ist das von E erzeugte Monoid.
Beispiele:
( N, ⋅ ) = ( P*, ⋅ ) ( P = die Menge der Primzahlen )
( N0, ⋅ ) = ({1}*, + )
Σ Alphabet, ( Σ*, • ) = ( Σ*, • )
Satz:
E endlich, E ⊆ H, ( H, • ) Halbgruppe.
Dann ist E* aufzählbar, wenn • effektiv berechenbar ist.
Beweis: Bilde E1, E2, E3, .....
Informatik I, Seite 24
2.2 Relationen
Definition:
Seien M, N Mengen. Jede Teilmenge ζ ⊆ M × N heißt Relation (zweistellig).
ζ = Menge von Paaren "Graph der Relation". Statt (x, y) ∈ ζ wird auch geschrieben: x ζ y.
Beispiel: M Einwohner, N gemeldete Autos. ζ entspricht "besitzt".
Definition:
Umkehrrelation ζ -1 zu ζ (Inverse, Konverse, Transponierte): ζ-1 = { (y,x) | (x,y) ∈ ζ }.
Ein häufiger Fall ist: M = N.
Eigenschaften der Relation ζ ⊆ M × M:
reflexiv: x ζ x für alle x ∈ M
irreflexiv:
für kein x gilt x ζ x
symmetrisch:
x ζ y impliziert y ζ x f.a. x, y ∈ M
antisymmetrisch:
aus x ζ y und y ζ x folgt stets x = y
transitiv:
x ζ y und y ζ z impliziert x ζ z f.a. x, y, z ∈ M
Äquivalenzrelation (verallg. Gleichheit): Rel., die reflexiv, symmetrisch und transitiv ist.
Feststellung:
Die Äquivalenzrelation ζ definiert eine Zerlegung von M in Äquivalenzklassen
[x]ζ = { y ∈ M | x ζ y }
Gilt nicht a ζ b, dann [a]ζ ∩ [b]ζ = ∅ (wegen Transitivität).
M=
U
[ x]ζ
x∈M
z ∈ [x]ζ impliziert [z]ζ = [x]ζ, also unabhängig vom Repräsentanten.
partielle Ordnung: reflexive und transitive Relation
Halbordnung: antisymmetrische Relation
totale / lineare Ordnung: Halbordnung und für x, y ∈ M gilt stets x ζ y oder y ζ x.
strenge Halbordnung: irreflexive Halbordnung
Beispiele: M = N (ohne die 0):
ζ: ≤ auf N (partiell), x ζ y: x teilt y (Halbordnung), ζ: < auf N (streng).
Definition: Verknüpfung ( 2-stelliger) Relationen ζ ⊆ L × M, τ ⊆ M × N:
ζ • τ = { (x, z) | x ∈ L , z ∈ N, es ex. y ∈ M mit (x, y) ∈ ζ, (y, z) ∈ τ }.
Feststellung: Verknüpfung ist assoziativ.
Also bilden Rel. auf M einen Monoid mit Einselement ∇ = { (x, x) | x ∈ M }.
Bemerkung:
1.
Relation ζ ⊆ M × N ist auffaßbar als Transformation ζ: M → N (oder Abb. M → P(N))
x → { y ∈ N | x ζ y } = ζ (x)
2.
Ist | ζ(x) | = 1 für jedes x ∈ M, dann ist ζ Abb. (totale).
3.
Ist | ζ(x) | ≤ 1, dann partielle Abb.
Informatik I, Seite 25
Allgemeine Bemerkung:
I.a. werden n-stellige Relationen ζ ⊆ M1 × M2 × .... × Mn betrachtet.
relationale Datenbanken ≈ Ansammlungen von Relationen
Operationen auf Relationen:
∪, \, ∩ (Mengenoperationen)
Komponentenauswahlen (Selektion) ( , ↑, ..... , ↑, ..... )
Weglassen von Komponenten (Projektion)
Zusammenkleben ( ..... () ...... )
Datendefinitionssprachen, Datenmanipulationssprachen (zB. SQL) arbeiten mit Relationen.
2.3 Graphen
Definition:
Sei E Menge (Ecken, Knoten).
Dann heißt G = ( E, K ) mit K ⊆ E × E gerichteter Graph (Digraph)
K heißt die Menge der Kanten.
Graphische Darstellung: Ecke x:
Kante (x, y) :
x•
x→y
Beispiel:
G = ( {a, b, c, d} , { (a, b), (a, c), (a, d), (b, c), (d, b), (d, c) } )
Bemerkung: Rel. ζ ⊆ E × E definiert Graph: Gζ = ( E, ζ ).
Definition: ζ sei symmetrische Relation über E.
Dann heißt (E, ζ ) ungerichteter Graph (kurz Graph). Statt (x, y) ∈ ζ und ( y, x ) ∈ ζ: { x, y
}.
Definition: (E, K) sei Digraph.
Für E' ⊆ E und K' = { (x, y) ∈ K | x, y ∈ E' } ist G' = (E', K') der von E' erzeugte Teilgraph.
Vollständigkeit eines Graphen bedeutet, daß zwischen je zwei Ecken x u. y (x ≠ y) eine
Kante (x, y) existiert.
Weg im Graph: Kantenfolge (e0, e1), (e1, e2 ), ....., (en-1, en), ei-1≠ ei, (ei-1, ei ) ∈ K;
"von e0 nach en", Länge n.
Ein Weg der Länge ≥ 1 heißt Kreis (Zyklus), wenn e0 = en.
Beim ungerichteten Kreis heißt der Graph
eulersch: Jede Kante des Graphen kommt genau einmal vor,
hamiltonsch: Jede Ecke des Graphen kommt genau zweimal vor.
Bemerkung: Eulersche Kreise finden ist leicht, hamiltonsche sehr schwer.
Informatik I, Seite 26
Definition:
Ein Graph heißt zusammenhängend, wenn "zwischen je zwei Ecken x, y ein Weg von x nach
y oder von y nach x existiert".
Ein gerichteter Graph ohne Kreise heißt azyklisch, ein ungerichteter Graph ohne Kreis
kreislos oder Wald.
Ein zusammenhängender, kreisloser, ungerichteter Graph heißt Baum.
Satz: G sei ein ungerichteter Graph, n Ecken, m Kanten. Dann sind äquivalent:
1.
G ist Baum.
2.
Zwischen je 2 Ecken existiert genau ein Weg.
3.
G zusammenhängend; durch Weglassen einer (bel.) Kante wird G
unzusammenhängend.
4.
G zusammenhängend und m = n - 1.
5.
G kreislos: Hinzufügen einer Kante ergibt genau einen Kreis.
Informatik I, Seite 27
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 20.12.95 und 21.12.95, 76021 Brauer)
Welche Repräsentation für Relationen und Graphen?
G = { e1, e2, ... , en } , K = ( E, K )
Adjazensmatrix: n x n - Matrix
A = (aik ) über { 0, 1 } mit aik = 1, wenn (ei ,ek ) ∈ K, sonst aik = 0
Zum Graphen aus der letzten Vorlesung entsteht also folgende Adjazensmatrix:
a
b
c
d
0
1
1
1
a
0
0
1
0
b
0
0
0
0
c
0
1
1
0
d
A entspricht der charakteristischen Funktion von K ⊆ E×E.
Adjazensliste:
Jeder Ecke ei wird die Menge Ei = { es | (ei , es) ∈ K } zugeordnet. Diese wird als Liste
dargestellt.
A-Matrix von Φ•Γ: Normiertes Produkt der A-Matrizen von Φ und Γ ( normiert ≈ jedes k ≥
1 durch 1 ersetzt)
Φ ⊆ E×E sei Relation, transitive Hülle von Φ ist Φ+ im Monoid der Rel., reflexive Hülle
transitive Hülle von Φ ist Φ* = ∆ ∪ Φ+ .
(x, y) ∈ Φ g.d.w. ein Weg im Graphen von Φ von x nach y existiert.
Satz:
(1)
Φ = Φ+ g.d.w. Φ transitiv
(2)
Φ = Φ* g.d.w. Φ transitiv und reflexiv
(3)
Φ = (Φ ∪ Φ-1) g.d.w. Φ Äquivalenzrelation
(4)
Floyd-Warshell:
Φ Relation über E={ e1, e2, ... , en }
Für k ≥ 2 sei Γ(k) = { (ei, es) | es ex. Weg (ei, x1), (x1, x2), ... , (xl-1, es), l ≤ k, xr ∈
{ e1, e2, ... , en }, r = 1, 2, ..., l - 1}, ferner sei Γ(1) = Φ.
Für k ≥ 1 gilt: Γ(k) = Γ(k-1) ∪ { (ei, es) | ei Γ(k-1) el und el Γ(k-1) es }
Es ist: Φ+ = Γ(n), für reflexives Φ ist Φ* = Φ+ ∪ ∆.
Beweis (von (4)):
(a)
Φ+ ⊆ Φn-1 , weil Φn ⊆ Φn-1, denn Kantenfolge der Länge n im Graph ( E, Φ )
geht über n+1 Ecken - nicht alle können verschieden sein. Also Kantenf. verkürzbar
(Zyklus weglassen) ergibt Kantenf. mit Länge ≤ n-1.
(b)
Beweis von (*) mit vollständiger Induktion über k.
Γ(n) = Φn-1
(c)
Anmerkung: (4) kann auch als Algorithmus zur Bestimmung der kürzesten Wege dienen.
Informatik I, Seite 28
2.4 Ordnungsrelationen
a)
b)
c)
d)
Φ azyklische Relation (d.h. mit azyklischem Graph) auf U,
definiert eine Halbordnung ≤ auf U: a ≤ b g.d.w. a Φ* b.,
definiert eine strenge Halbordnung < auf U: a < b g.d.w. a Φ+ b.
Halbordnung ≤ liefert eine azyklische Relation Φ durch a Φ b g.d.w. a ≠ b und a ≤ b.
Φ ist die zu ≤ gehörige strenge Halbordnung.
Menge U mit HO ≤ (bzw. strenge HO < ), dann heißt (U, < ) streng halbgeordnete
Menge.
Seien Φ, Γ azyklische Relationen. Wenn Φ+ = Γ+ , so definieren beide die gleiche
strenge HO.
Feststellung: Φ ⊆ Γ ⊆ Φ+ impliziert: Φ+ = Γ+.
Beweis: Φ•Φ ⊆ Õà ⊆ Φ+•Φ+=Φ+, usw. (Iteration):
+
Φ(n) ⊆ Γ(n) ⊆ Φ+ für alle n, also
n
n
+
+
Φ = UΦ ⊆ U Γ = Γ ⊆ Φ
n
.
n
Definition:
Gegeben eine Relation Γ. Der Graph G(Φ) der kleinsten (im Teilmengensinne) Relation Φ
mit Φ ⊆ Γ ⊆ Φ+ = Γ+ heißt Hasse-Diagramm zu Γ. G(Φ) ist Teilgraph von G( Γ ) , der
dieselbe strenge HO wie Γ definiert und minimal ist.
Bemerkung: Das Hasse-Diagramm existiert nicht immer.
Satz:
Sei (U, Γ ) eine endliche streng halbgeordnete Menge.
Dann definiert Γ − Γ2 das Hasse-Diagramm zu Γ.
Beweis: Benutze (Γ − Γ2)+ = Γ+.
e)
( U, ≤ ) HO, T ⊆ U
t ∈ T heißt minimales Element von T, wenn t' ≤ t ⇒ t' = t gilt.
Definition:
(U, ≤ ) heißt fundiert, wenn jede nichtleere Teilmenge von U ein minimales Element besitzt.
Relation
Φ
Graph
*
Φ : "ausführlich",
"minimal",
"Hasse-Diagramm"
Matrizen / Listen
Verwendung:
Verwendung:
Verwendung:
Rechnen mit Beziehungen
Suchen, Wandern
Algorithmen für Rechner
Satz: Sei ( U, ≤ ) HO. Dann sind äquivalent:
(i)
U ist fundiert
( ii )
Es existiert keine unendliche absteigende Kette .... u2 < u1 < u0 .
( iii ) Jede absteigende Kette ... u2 ≤ u1 ≤ u0 ist endliche.
Anmerkung: ( ii ), ( iii ) beschreiben eine noethersche HO.
Informatik I, Seite 29
Beweis:
( ii ) ist äquivalent zu ( iii ), klar.
( i ) impliziert ( iii )
( iii ) impliziert ( i ):
Annahme: ≤ ist nicht fundiert, d.h. es existiert T ⊆ U, ∅ ≠ T,
T ohne minimales Element.
Da ti nicht minimales Element, muss es ti+1 geben mit ti+1 < ti ,
konstruiere unendliche absteigende Kette .... < t2 < t1 < t0 ∈ T,
Widerspruch!
Bemerkung: Lexikographische Ordnung von A*:
absteigend geordnetes Alphabet a < b, a, b ∈ A.
ε ≤ x , x ∈ A*
w = uv, dann u ≤ w
xay < xby' , xy, y' ∈ A*, a,b ∈ A, a < b
Die Lex. O. ist nicht noethersch im Sinne von Goos.
Die inverse Ordnung ist nicht fundiert:
a < aa < aaa < ... < an < ... < b , falls a < b.
Auf Am ist die Ordnung noethersch und artinsch.
Theorem: (Noethersche Induktion, fundierte Induktion) (*)
Sei ( U, ≤ ) fundierte HO, < die zu ≤ gehörige str. HO.
Aussage: P(x) ist für alle x ∈ U wahr, g.d.w. für jedes y ∈ U gezeigt werden kann:
"Ist P(z) wahr für alle z < y, so ist auch P(y) wahr"
(und für alle minimalen Elemente u ∈ U ist P(u) wahr ).
Beweis:
Sei Up = { x ∈ U | P(x) wahr }, M = U \ Up
M ≠ 0, wg. Fundiertheit existiert ein minimales Element m ∈ M.
Ist nun P(m) falsch, aber ist für alle z < m P(z) wahr, so gibt es genau zwei Möglichkeiten
a)
m ist auch minimales Element in U, d.h. es existiert kein z mit z < m.
Dann muß nach (*) P(m) gelten, Widerspruch!
b)
m ist kein minimales Element, d.h. es existiert z mit z < m, also ist P(m) wegen (*)
wahr.
Bemerkung: U = N (natürliche Zahlen), ≤ ergibt vollständige Induktion.
Folgerung:
Sei Φ azyklische Relation, Φ* fundiert, (in der Vorlesung war unklar, ob auch V(y) = { z ∈ U
| y Φ z } endlich für jedes y ∈ U gefordert werden muß).
Φ heiße lokal endlich, wenn für jedes x ∈ U DiNf(x) = { y ∈ U | y Φ x } endlich ist.
Φ heiße global endlich, wenn für jedes x ∈ U Nf(x) = { y ∈ U | y Φ* x } endlich ist.
Dann gilt: Φ* global endlich, wenn Φ lokal endlich.
Beweis: Noethersche Induktioin anwenden auf ( U, Φ* )
P(x) ≈ "Nf(x) ist endlich"
Sei z minimal in U, d.h. Nf(z) = {z}, stimmt.
Sei y ∈ U, y nicht minimal: Nf(y) = {y} ∪ { q | q ∈ Nf(z), z Φ y }(ist endlich, da lokal
endlich). Jetzt (*) anwenden: Wenn alle Nf(z) endlich, ist Nf(y) endlich.
Also: Nf(x) ist stets endlich.
Informatik I, Seite 30
Anwenden auf Bäume:
T Baum, wähle beliebige Ecke t0.
t0 ist die Wurzel.
Nachfolger von t0 (Sohn, Kind, Tochter) ist jede Ecke t mit (t0, t) ∈ K.
Nachfolger einer Ecke t, die Nachfolger einer Ecke t' ist: jedes t'' ≠ t' mit (t', t) ∈ K.
strenge HO auf Baum T: t < t', wenn t direkter Nachfolger von t' ist.
Dann ist T gerichteter Graph ("Knoten" statt "Ecken",ein Knoten ohne Nachfolger heißt
Blatt).
Spezialfall obiger Folgerung für Bäume (Lemma von König):
T sei Baum mit (a) es existiert kein unendlich langer Weg (Ast) in T
(b) Von jedem Knoten sind nur endlich viele Knoten zu erreichen.
Dann ist T endlich.
Beweis:
" Nf (t0) endlich" ist zu zeigen: d.h. globale Endlichkeit.
Einige Vergnüglichkeiten über Weihnachten :-)
STS: 0011 → 111000
Frage: Ist jede Ableitung w ∈ { 0, 1}* endlich? (Zantema)
Time flies like an arrow.
Fruit flies like a banana.
(Groucha Marx)
Informatik I, Seite 31
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 10.1.96 und 11.1.96, 76021 Brauer)
Anmerkung zum Script vom 20.12.95, Folgerung aus der Noetherschen Induktion:
V(y) endlich ist als Forderung überflüssig !!
Rückblick auf das letzte Jahr:
A.
Was ist Informatik / Wie arbeiten Informatiker/-innen ?
Verantwortung / Ethik in der Informatik: Studentenpfarrer Probst wird am 18.1 und
15.2 noch Vorlesungen zu diesem Thema halten.
B.
Beschreiben von Systemen und dem Verhalten von Systemen.
Text → Textverarbeitung: STS
C.
Gegenstände und ihre Beziehungen:
Verküpfungen (Monoide), Relationen, Funktionen, Ordnungen
D.
Behandeln komplizierter Gegenstände, Systeme
- Analysieren: Zerlegen, Reduzieren, Top-Down
- Konstruieren: Erzeugen, Zusammensetzen, Bottom-Up
•
•
•
•
sequentiell / parallel / nebenläufig
deterministisch / nichtdeterministisch (Beschreibungsebene)
Korrektheit:
- nichts läuft falsch (safety)
- es gibt tatsächlich Resultate (terminiert, lebendig)
direkte Beweise
- Induktion: über den natürlichen Zahlen, strukturelle, noethersche
- logische Schlußketten
Kapitel 3: Algebren und Termalgebren
Es besteht ein grundsätzlicher Unterschied zwischen
a) einer Formel und dem Ergebnis der Auswertung der Formel
b) der Spezifikation und der Realisierung
Formeln:
Sei A eine Menge, n ∈ N0 : eine Abbildung f: An → A heißt n-stellige Operation auf A.
Σ ist die Menge aller Operationen auf A und heißt Signatur.
Σ = Σ(0) ∪ Σ(1) ∪ Σ(2) .... , wobei Σ(i) die Menge der i-stelligen Operationen in Σ ist.
(A, Σ ) ist eine Struktur, die Objekte/Gegenstände und die zulässigen Operationen auf diesen
Objekten zusammenfasst.
Ist f ∈Σ(0), dann ist f ein Operator ohne Argumente, also eine Konstante. I.a. ist Σ(0) ≠ ∅
und aufzählbar.
Sei nun Σ Signatur, X die Menge aller möglichen Argumente/Elementaroperanden (Σ(0) ⊆
X)
Dann ist ein wohlgeformter Term über Σ und X :
• Jedes a ∈ X.
• Wenn f ∈ Σ(n) und a1, a2, ..., an Terme sind, dann ist auch f(a1, ..., an) ein Term.
• Sonst nichts (d.h. ein Term muß in endlich vielen Schritten aus den beiden obigen
Formen konstruierbar sein.
Informatik I, Seite 32
Terme lassen sich darstellen als gerichtete Bäume:
f( a1, a2, ..., an) entspricht:
a ∈ X entspricht :
Beispiel:
Sei U eine Menge, ( Ρ(U), Σ(0), { C }, { ∩ , ∪ } ), wobei P(U) die Potenzmenge von U und C
der Komplemenoperator ist.
Außerdem gilt: Σ(0) ⊆ P(U), Σ(0) = P(U) für U endlich.
Der Term C (N ∩ M) ∪ K mit M, N, K ⊆ U läßt sich folgendermaßen als Baum darstellen:
Schreibweisen für Terme (Formeln / Ausrücke):
•
f (a1, a2, ... , an ) : Funktionsschreibweise
•
a f b : Infix-Schreibweise, wenn f zweistellig ist
•
f a1 a2 ... an : Präfix-Schreibweise, wenn f n-stellig ist
•
a1 a2 ... an : Postfix-Schreibweise, wenn f n-stellig ist
Zwischen der Schreibweise von Termen und der Durchlaufsteuerung der zugehörigen Bäume
besteht ein Zusammenhang. Beispielsweise gehören folgende Durchlaufsteuerungen zur
Präfixschreibweise:
Beginne mit Wurzel
Schreibe Ecke auf (f)
Schreibe die Terme der Unterbäume a1, a2, ... an auf (von links
nach rechts)
bzw. zur Infixschreibweise:
Schreibe Term für linken Unterbaum
Schreibe Ecke (f)
Schreibe Term für rechten Unterbaum
Informatik I, Seite 33
Sei Σ Signatur,
X die Menge von Elementaroperanden, X ⊇ Σ(0),
T die Menge der Terme über Σ und X,
Q die Menge von Gesetzen (Axiomen) über die Anwendung von
Operatoren("Gleichungen")
Dann heißt @ = ( T, Σ, Q ) algebraische Struktur oder abstrakte Algebra.
Für Terme t, t' gilt t =Q t' genau dann, wenn t sich mit den Gesetzen aus Q in t' umformen
läßt und umgekehrt.
Beispiel: Boolesche Algebra
B = ( Tbool , Σbool , Qbool ) mit
Σbool = { 0 , 1, C, ∨, ∧ } mit Σ(0) = {0, 1}, Σ(1) = { C }, Σ(2) = { ∨ , ∧ }
Tbool : Menge der Terme über Σbool und X = { 0, 1, x, y, z, ... } (x, y, z sind mögliche
konkrete Elemente)
Qbool : Axiome B1, B2 , ... , B10 der booleschen Algebra
B1: (Assoziativgesetz)
(x ∧ y) ∧ z = x ∧ ( y ∧ z )
(x ∨ y) ∨ z = x ∨ ( y ∨ z )
B2: (Kommutativgesetz ) x ∧ y = y ∧ x
x∨y=y∨x
B3: (Indempotenz)
x∧x=x
x∨x=x
B4: (Verschmelzung)
(x ∨ y) ∧ x = x
(x ∧ y) ∨ x = x
B5: (Distributivgesetz) x ∨ (y ∧ z) = (x ∨ y) ∧ (x ∨ z)
x ∧ (y ∨ z) = (x ∧ y) ∨ (x ∧ z)
B6: (Modularität)
x ∧ (y ∨ z) = (x ∧ y) ∨ z , falls x ∧ z = z ("Nebenbedingung")
B7: (Neutrale Elemente) x ∧ 0 = 0
x∨0=x
x∧1=x
x∨1=1
B8: (Komplement)
x∧Cx=0
x∨Cx=1
B9: (Involution)
C (C x) = x
B10: (De Morgansche ...) C ( x ∧ y) = C x ∨ C y
C (x ∨ y) = C x ∧ C y
Über algebraische Strukturen Aussagen machen:
• Auf B ist eine Halbordnung ≤ definiert durch x ≤ y g.d.w. x ∧ y = x (g. d. w. x ∨ y = y).
• Gelten in B' = ( Tbool , Σbool , Q'bool) die jeweils ersten der Gesetze B1 - B5 und
entweder B8 oder B10 , so ist B' boolesche Algebra.
• Ist A eine Menge mit Σ(0) ⊆ X ⊆ A und zu jedem f ∈ Σ(n) eine Abb. fA: An → A, die Q
erfüllt, gegeben, so ist @ = (A, Σ, Q) konkrete Algebra, A ihre Trägermenge.
@ heißt Σ - Algebra, wenn Σ wichtig ist und betont werden soll.
Beispiele:
(P(U), Σbool , Qbool ): konkrete boolesche Algebra für U endlich
(N0 , +) konkretes Monoid.
Informatik I, Seite 34
Strukturerhaltende Abbildung zwischen Algebren:
( A, Σ, Q ) , (B, Σ', Q' ), Σ und Σ' sind gleichartige Signaturen, Q und Q' sind gleichartige
Gesetze: bis auf Umbenennungen gleich, in Q' eventuell mehr Gesetze. Dann heißt
h : A → B Homomorphismus,
wenn für alle Paare f ∈ Σ(n) , f ' ∈ Σ' (n) (die "gleiche" Operatoren bezeichnen), die mittels h
in Beziehung stehen, gilt: h(f (x1 , x2 , ...., xn )) = f ' (h (x1), h(x2), ... , h(xn)) für alle
x1,...,xn , d.h. das Diagramm
kommutiert (Homomorphismusbedingung).
Beisp.: (N, ⋅ ) → ( No , + )
⋅ →+
1→0
p → 1 für alle Primzahlen p
zB.: 2 ⋅ 2 = 4 → 1 + 1, 2 ⋅ 3 = 6 → 1 + 1
Sei h: (A, Σ, Q) → (B, Σ ', Q ' ) Homomorphismus.
Dann ist ≡h mit a ≡h b g.d.w. h (a) = h (b) eine Äquivalenzrelation auf A. Außerdem ist ≡h
eine Kongruenzrelation. Für ai ≡h bi , i = 1, ..., n, f ∈ Σ(n) gilt stets
f (a1, ... , an) ≡h f(b1,...,bn) (Homomorphismus-Bedingung).
Die Äquivalenzklassen entsprechen den Kongruenzklassen: [a]h = { a' ∈ A | a ≡h a ' }
Für A/≡h = { [a]h | a ∈ A } heißt (A/≡h, Σ, Q ) Quotientenalgebra.
Ein surjektiver Homomophismus heißt Epimorphismus, ein bijektiver Homomorphismus heißt
Isomorphismus.
Beispiel: h (N, ⋅ ) → (N0 , +)
[n]h = alle Zahlen, die gleich viele Faktoren wie n in der Primfaktorzerlegung haben.
Isomorphe Algebren werden oft als gleich angesehen (miteinander identifiziert).
Informatik I, Seite 35
EINFÜHRUNG IN DIE INFORMATIK I
(Script zur Vorlesung vom 17.1.96, 76021 Brauer)
KORREKTUR zum 10/11.1.96
Das 6. Axiom der Booleschen Algebra (B6, Modularität) muß folgendermaßen lauten:
x ∧ (y ∨ z) = (x ∧ y) ∨ z , falls x ∧ z = z ("Nebenbedingung") oder
(x ∧ (y ∨ (x ∧ z)) = (x ∧ y) ∨ (x ∧ z) und x ∨ ( y ∧ (x ∨ z)) = (x ∨ y) ∧ (x ∨ z))
Termalgebren
Sei gegeben eine Signatur Σ, eine Menge X ⊇ Σ(0) von Elementaroperationen. Sei T die
Menge der Terme über Σ und X. Dann ist ( T, Σ, ∅ ) freie Termalgebra. Die Anwendung von
f ∈ Σ(n) auf t1, t2, ..., tn ∈ T ergibt:
Zwei Terme sind nur dann gleich , wenn sie identisch sind (induktiver Vergleich).
Beispiel:
X = Σ(0) = {a}, Σ(1) = {f}, Σ(i) = ∅ für i ≥ 2
T = {a, f(a), f (f (a)), ... }
Wenn wie im obigen Beispiel X = Σ(0) gilt, dann heißt T0 = T0 ( Σ ) initiale
Grundtermalgebra (inital: jeder Term wird nur von c ∈ Σ(0) ausgehend aufgebaut,
Grundterm:die Terme aus T kommen in jeder Σ-Algebra vor).
Beispiel:
ΣN = {0}, ΣN(1) = {succ} (succ(n) = n+1), ΣN(i) = ∅, i ≥ 2.
T0 ( ΣN ) hat die Termmenge T0 = { 0, succ ( 0 ), succ ( succ ( 0 ) ), ... }.
T0 ist also die Algebra der natürlichen Zahlen
Sei
A = (A, Σ, Q ) beliebige Σ-Algebra, A(0) entspreche Σ(0) durch die bijektive Zuordnung:
Φ: Σ(0) → A(0)
Φ läßt sich eindeutig zum Homomorphismus erweitern durch:
Φ: T0 ( Σ ) → (A, Σ, Q )
f ( t1, ... , tn ) → f ( Φ ( t1) , ... , Φ ( t2 )) (induktiv)
Φ heißt Spezialisierungsabbildung , Φ( T0 ) ⊆ A Spezialisierung von T0 .
heißt von T0
erreichbar, wenn Φ Epimorphismus ist.
T0/≡Φ hängt (außer von Σ ) nur ab von Q, also wird T0/≡Φ als T0 ( Σ, Q ) bezeichnet. Ist
erreichbar, so folgt die Isomorphie von
und T0 ( Σ, Q ).
A
A
Beispiel:
B ist Grundtermalgebra zu Σ = { 0, 1, C, ∧ , ∨ }.
Konkrete Boolesche Algebra ({ F, W }, {C, ∧ , ∨}, {B1, ... , B10})
Φ : 0 → F, 1 → W oder Φ : 0 → W, 1 → F
B
Prinzip der strukturellen Induktion auf Termalgebren T über Σ , X
Für alle Terme t ∈ T gilt die Aussage p(t) ("Eigenschaft" p), wenn gilt:
1. p(a) gilt für jedes a ∈ X
2. Für jedes n ∈ N und jedes f ∈ Σ(n) gilt:
Falls p (a1), ... , p(an) für a1, ... , an ∈ T gilt, so gilt auch p ( f (a1, ... , an )).
A
Informatik I, Seite 36
Das ist ein Spezialfall der noetherschen Induktion, wenn man folgende Halbordnung < auf T
betrachtet: t < t' genau dann, wenn t weniger Operatoren als t' enthält.
Beispiel: In B ist jedes Element durch einen Term ohne ∧ darstellbar.
Beweis:
p (t) : t ist ohne ∧ darstellbar
1.
p(0), p(1) gelten
2.
Seien t1, t2 Terme, für die p(t1) und p(t2)
Dann gelten auch p( Ct1), p( t1 ∨ t2 ).
Wegen t1 ∧ t2 = C(Ct1 ∨ Ct2) gilt auch p( t1 ∧ t2 ).
Termalgebren mit Variablen
"allgemeine" Formeln, Variable ≈ Unbestimmte ≈ logische Variable
V sei eine aufzählbare Menge von Variablenbezeichnern.
Dann kann man X = Σ(0) ∪ V als eine Menge von "Konstanten" auffassen.
(T, Σ, ∅) : Algebra mit Variablen
T0 ( Σ ) : Unteralgebra ohne Variablen.
Die Spezialabbildung Φ wird folgendermaßen erweitert:
für a ∈ Σ(0) : Φ(a) wie früher
für v ∈ V: Φ(v) ∈ A beliebig.
A
Sei
= (A, Σ, Q) Σ - Algebra, die Spezialisierung von T( Σ, V ) sein soll.
Wie ist ≡Q definiert ? Umformungen mittels Q sollen "Gleiches" ergeben, also:
t =Q t' g.d.w. Φ(t) = Φ(t') bei beliebiger Wahl von Φ(v) für v ∈ V.
Informatik I, Seite 37
EINFÜHRUNG IN DIE INFORMATIK I
(Script zur Vorlesung vom 25.1.96 und 26.1.96, 76021 Brauer)
Eine (abstrakte) Semantik erreicht man durch Einschränkungen für die "Bedeutung" der
Symbole der Signatur.
→ Quotientenalgebra der Grundtermalgebra ≈ abstrakten Datentyp ADT.
Je mehr Gleichungen Algebren haben, desto weniger verschieden sind sie:
In der Informatik sind ADTs zumeist nicht homogene Algebren, sondern heterogene
Algebren. In diesen gibt es Konstanten verschiedener Sorten , die Operatoren sind deshalb
sortenbezogen.
Beispiel: NAT (natürliche Zahlen)
Signatur:
ΣNAT
Konstanten:
0 : {∅} → NAT
true, false : {∅} → BOOL
Operatoren:
s: NAT → NAT
+: NAT × NAT→ NAT
≤: NAT × NAT → BOOL
∧ , ∨ : BOOL × BOOL → BOOL
C: BOOL → BOOL
Gesetze:
x+0=x
x + s(y) = s(x+y)
0 ≤ x = true
s(x) ≤ 0 = false
s(x) ≤ s(y) = x ≤ y
Informatik I, Seite 38
Eine anschauliche Darstellung eines ADT ist das Signaturdiagramm:
Allgemeiner Signaturbegriff
Eine Signatur ist ein Paar ( S, F), wobei S eine Menge von Sortenbezeichnern (für
verschiedene Trägermengen) ist, und F eine Menge von Operatorbezeichnern mit Angabe von
Argumentsorten und Ergebnissorten. Ein Operator f aus F hat also folgende Funktionalität:
f: (s1, ... , sn ) → sn+1 , si ∈ S,
weiter wie im vorher definierten spezielleren Signaturbegriff.
WICHTIG: Jeder Term hat eine Sorte, d.h. die Ergebnissorte des "obersten" Operators.
Bemerkung:
Ein ADT ist nur eine Spezifikation. Diese kann verschieden implementiert werden.
Bei der Programmentwicklung sollte also erst der ADT definiert und bewiesen werden, daß er
die Benutzeranforderungen erfüllt. Dann erst wird der ADT implementiert und wiederum für
die Implementierung bewiesen, daß sie die Gleichungen des ADT erfüllt.
Rechnen in Termalgebren mit Variablen
T( Σ, V), V = U Vs , wobei Vs die Menge der Variablen der Sorte s ist.
s∈ S
Terme können als Formulare aufgefaßt werden, die Variablen entsprechen den Feldern für die
Eintragungen.
Informatik I, Seite 39
Beispiel: Fläche des Kreisrings
Eine besondere Spezialisierungsabbildung ist G : T( Σ, V ) → T( Σ, V), wobei G durch die
Abbildung G : V → T( Σ, V ) bestimmt wird. G (v) ≠ v gilt dabei nur für endlich viele v ∈ V,
zB. v1, ... , vn. Dann schreibt man: G = [ t1/v1, ... , tn/vn ], mit G (vi ) = ti ( t/v bedeutet: t
ersetzt v). G heißt dann Substitution.
Regeln zur Anwendung der Substitution G = [ t / v ]
• G (u) = t, falls u = v
• G (u) = u, falls u ≠ v, u ∈ X = Σ(0) ∪ V
• G ( f (u1, ... , un )) = f ( G (u1), ... , G (un)), n ≥ 1
Bemerkungen:
1. G (to) = to , wenn to Grundterm ist.
2. Ist t1 Grundterm, so heißt G = [t1/v] Grundsubstitution.
Termersetzungssysteme
Beispiel: Boolesche Algebra
(a ∧ b) ∨ ( b ∧ a) umformen:
mit B2: (a ∧ b) ∨ ( a ∧ b)
mit B3': (a ∧ b)
Hier funktionieren die Axiome des ADT als Ersetzungsregeln.
Termersetzungsregeln:
l → r , mit l, r ∈ T ( Σ, V ), l und r sind von gleicher Sorte, l ∉ V, Var (r) ⊆ Var (l)
(Var ( t ) = Menge aller Variablen in t).
Die Gleichung a = b ergibt 2 TE - Regeln: a → b, b → a.
l → r wird folgendermaßen auf t ∈ T ( Σ, V ) angewendet:
Sei t' irgendein "Unterterm" von t ("Unterbaum"), etwa t = f ( ... , g ( ... , t', ... ), ...). t' wird
durch s' ersetzt, wenn t' → s' eine "Instanz" der Regel l → r ist.
Informatik I, Seite 40
Beispiel:
(a ∧ b ) ∨ (b ∧ a) : b ∧ a → a ∧ b ist Instanz von B2 mit G = [ b/x, a/y ]
⇒
(a ∧ b ) ∨ (a ∧ b) : (a ∧ b) ∨ (a ∧ b) → (a ∧ b) ist Instanz von B'3 mit G = [ a ∧ b / x
]
⇒
(a ∧ b )
Ein allgemeines Termersetzungssystem besteht aus einer Menge von TE-Regeln, Metaregeln
wie bei STS plus Anwendungsregel.
Textersetzung ist ein Spezialfall der Termersetzung, ein Wort ist dabei ein kammartiger
Term:
Eine Regel, zB. nt → nat , wird dann dargestellt wie folgt:
Kapitel 4: Logik
An die Stelle inhaltlicher Überlegungen treten in der Logik formale (syntaktische,
strukturelle) Schlüsse (Umformungen).
Die Vorgehensweise dabei ist:
• "Elementaraussagen" (Operanden) festlegen
• Logische Operatoren festlegen
Die "Wahrheit" der komplexen Aussagen, die auf diese Weise gebildet werden können, wird
durch Termauswertung ermittelt: Zuerst wird die Wahrheit der Elementaraussagen
festgestellt, und dann die Operatoren angewendet (Fregesches Kompositionsprinzip).
4.1 Aussagenlogik
Eine Aussagenlogische Formel ("Aussage") ist ein Term der initialen (freien) Termalgebra
T( ΣB, V) zur Signatur ΣB zur Booleschen Algebra B = ( {0, 1}, {¬ , ∧ , ∨ }).
Damit ist die Syntax festgelegt.
0 und 1 stehen für Wahrheitswerte falsch, wahr bzw. false, true.
Informatik I, Seite 41
Als Abkürzungen werden neue Operatoren eingeführt:
• p → q für ¬ p ∨ q
• p ≡ q für ( p → q) ∧ ( q → p)
•
•
n
0
i =1
i =1
n
0
i =1
i =1
V p i für p1 ∨ ... ∨ pn , V p i = 0
Λ p i für p1 ∧ ... ∧ pn , Λ p i = 1
Die Variablen stehen für Elementaraussagen.
Die konkrete Bedeutung einer logischen Formel ergibt sich aus der Festlegung auf ein
bestimmtes Szenarium, hier "Interpretation" I genannt:
I:
0 → f (falsch, false)
1 → w (wahr, true)
Eine Zuordnung (Substitution) der Variablen zu f, w, heißt "Belegung" der Variablen:
G : V → {f, w}
Um eine Vorschrift zur Auswertung der Formeln angeben zu können, ist eine Interpretation
der Operatoren nötig:
I ( ¬ A) = f, wenn I(A) = w, sonst f
I ( A ∧ B ) = w, wenn I (A) = I (B) = w, sonst f
I ( A ∨ B ) = f, wenn I (A) = I (B) = f, sonst w
Hierbei ist I Homomorphismus von T ( ΣB , V ) → B' = ( {f, w}, {¬, ∧ , ∨ } ).
Informatik I, Seite 42
EINFÜHRUNG IN DIE INFORMATIK I
(Script zur Vorlesung vom 31.1.96 und 1.2.96, 76021 Brauer)
In der Aussagenlogik gibt es für eine Formel A nur endlich viele Interpretationen IG .
Wahrheitstafel: Seien x1, ... , xn alle Variationen in A:
G(x1) ............................................ G(xn) IG (A)
f ................................................ f
f ................................................ w
.
.
.
.
f ................................................ w
w ............................................... f
.
.
.
.
w ............................................... w
z.B. A = p ∧ ( ¬ p ∨ q ) :
p
f
f
w
w
q
f
w
f
w
¬p
w
w
f
f
¬p∨q
w
w
f
w
A
f
f
f
w
Definition:
Eine aussagenlogische Formel A heißt erfüllbar (satisfiable), wenn IG existiert mit IG (A) = w
(Erfüllbarkeitsproblem). Dann heißt IG Modell für A.
A heißt unerfüllbar, wenn kein Modell für A existiert. A heißt allgemeingültig (ist
Tautologie) , wenn alle Interpretationen Modelle sind.
Satz:
A ist allgemeingültig ⇔ ¬ A ist unerfüllbar
(denn es gibt nur die zwei Wahrheitswerte w und f ).
Satz:
Ersetzt man in den Axiomen B1, ... , B10 der Booleschen Algebra stets
=
C
0
1
durch
durch
durch
durch
≡
¬
f
w
so sind die so entstehenden aussagenlogischen Formeln Tautologien.
Informatik I, Seite 43
Folgerungen und Kalküle
Aus einer Menge von Formeln sollen logische Konsequenzen gefolgert werden.
Dabei heißt IG Modell für , wenn IG Modell für jedes F aus ist.
Eine Formel A ∈ T ( ΣB , V ) folgt automatisch aus , wenn jedes IG , das Modell für ist,
auch Modell für A ist, in Zeichen :: A (logischer Schluß, von wird auf A geschlossen, A
kann aus hergeleitet werden). Wenn
= ∅ und :: A, dann ist A Tautologie.
F
F
F
F
F
F
F
F
F
F
Frage: Kann man logische Schlüsse auch syntaktisch (d.h. durch Formelmanipulation)
gewinnen ?
Antwort: Ja, durch logische Kalküle.
Ein Kalkül ist eine Sammlung von Regeln. Eine "Ableitung" (hier Herleitung) wird
geschrieben als: # A (A ist aus ableitbar). Für ein Kalkül ist stets zu zeigen:
1. Korrektheit: Wenn # A, dann auch :: A.
2. Vollständigkeit: Wenn :: A, dann # A.
F
F
F
F
F
F
4.1.2 Sequenzenkalkül
Die Regeln im Sequenzenkalkül haben die Form:
F1
F2
F3
1
2
3
F
F
F
G1
G2
G3
mit Zusatzbedingungen
Eine Zeile F G heißt Sequenz und bedeutet: Aus der Voraussetzung (Formelmenge) und
der Zusatzvoraussetzung F (Formel) folgt logisch als Konsequenz G (Formel), d.h.
∪ {F} :: G.
Die gesamte Regel bedeutet: Aus der Sequenz 1 F1 G1 und der Sequenz 2 F2 G2 folgt die
Sequenz 3 F3 G3.
F
F
F
F
F
F
Beispiel: (Indirekter Beweis)
F
F
F
¬p
¬p
p
q
¬q
Eine Herleitung ist eine Folge von Regelanwendungen auf
Basisregeln:
L 1: Annahme, Voraussetzung
, wenn F ∈
F
L 2: Erweiterung, Monotonie
F
, wenn
F
F
F '
F
F
F
⊆
F
'
F
bis A entsteht:
F
# A.
Informatik I, Seite 44
L 3: Disjunktion (A)
F
F
G
F
F
(F ∨ G)
H
H
H
L 4: Disjunktion (B)
F
F
F
(F ∨ G)
F
F
F
(G ∨ F)
L 5: Fallunterscheidung
F
G
F
G
F
¬F
G
F
L 6: Widerspruch
F
¬F
F
¬F
F
F
G
¬G
Der Kalkül ist korrekt (unmittelbar klar) und vollständig (schwerer zu beweisen).
Beispiel I
Behauptung: (ex falso quodlibet , "aus dem Falschen was beliebt")
F
F
F
¬F
G
F
Herleitung:
(1) F F
F ¬F
Voraussetzungen
(2) F ¬ G F
F ¬G ¬F
wegen L2
(3) F G
wegen L6
Beispiel II
Behauptung: (Kettenregel)
F
F
F
G
F
G
F
Herleitung:
(1) F F
(2) F F G
(1) und (2) sind die Voraussetzungen
(3) F ¬ F F
L2 mit (1)
(4) F ¬ F ¬ F
L1
(5) F ¬ F G
e.f.q. mit (3), (4)
(6) F
G
L5 mit (2), (5)
Informatik I, Seite 45
Beispiel III
Behauptung:
F
F
F
F
( F→G )
G
Herleitung:
(1) F F
(2) F ¬ F F
(3) F ¬ F ¬ F
(4) F ¬ F G
(5) F G G
(6) F (¬F ∨ G) G
(7) F (¬F ∨ G)
(8) F G
L2
L1
e.f.q.
L1
L3
Voraussetzung
Kettenregel
4.1.3 Hornklauseln, Resolution (Grundlagen für Prolog)
Klausellogik:
Eine Formel F heißt Klausel, wenn sie von der Form
P1 ∧ P2 ∧ .... ∧ Pm → Q1 ∨ Q2 ∨ .... ∨ Qn , m, n ≥ 0 ist.
Obige Formel ist äquivalent zu: ¬ P1 ∨ ¬ P2 ∨ .... ∨ ¬ Pm → Q1 ∨ Q2 ∨ .... ∨ Qn .
Die Pi , Qh heißen Atome (Variablen, Konstanten), Atome und negierte Atome heißen
Literale.
Eine Klausel heißt eine Hornklausel, wenn n ≤ 1, also von der Form
P1 ∧ P2 ∧ .... ∧ Pm → Q ist. Für m ≥ 1 liegt eine Implikation vor, für m = 0 das Faktum Q.
Implikationen und Fakten bilden zusammen die Datenbasis D bilden.
Um festzustellen, ob D :: A gilt, A also die logische Konsequenz aus D ist, wird geprüft,
ob D ∧ ¬ A unerfüllbar ist (wegen D → A = ¬ D ∨ A = ¬ (D ∧ ¬ A) ). Diese Überprüfung
wird durch den Resolutionskalkül (Widerlegungskalkül) durchgeführt. Dieser ist zwar
allgemein anwendbar auf Klauseln, "effizient" aber erst bei Hornklauseln.
Grundidee der Resolution
( ¬ A ∨ B ) ∧ (A ∨ C ) ≡ ( ¬ A ∨ B ) ∧ (A ∨ C) ∧ ( B ∨ C) (*)
Wenn also (B ∨ C) (die sogenannte Resolvente) unerfüllbar ist, dann ist auch (*) unerfüllbar.
Die Resolvente ist genau dann unerfüllbar, wenn sie leer ist.
Verfahren:
Gegeben ist eine aussagenlogische Form als Konjunktion von Klauseln, versuche zwei
Disjunktionen zu finden, die sich resolvieren lassen (auf die (*) anwendbar ist), solange, bis
eine Resolvente leer wird. Dieses Verfahren ist korrekt und vollständig.
Beispiel:
(A ∨ B ∨ ¬ C) ∧ (¬ A) ∧ ( A ∨ B ∨ C ) ∧ (A ∨ ¬ B )
(1)
(2)
(3)
(4)
Aus (1) und (2) ergibt sich die Resolvente (A ∨ B) (5),
aus (4) und (5) ergibt sich A (6),
aus (2) und (6) ergibt sich schließlich die leere Resolvente.
Informatik I, Seite 46
Um F :: A zu beweisen, wendet man auf F ∪ { ¬ A } die Resolution an. Voraussetzung
dafür ist, daß alle Formeln als Konjunktionen von Klauseln vorliegen.
4.2 Prädikatenlogik
Im Gegensatz zur Aussagenlogik gibt es in der Prädikatenlogik Individuen, deren
Eigenschaften durch Prädikate festgelegt werden. Diese Individuen sind dabei Terme wie bei
den ADT's, also Funktionen, Variablen und Konstanten. Die Prädikate sind n-stellige
Funktionen: Term → { w, f }.
Die logischen Junktoren sind ¬, ∧ , ∨ .
Die Quantoren beziehen sich auf Individuen:
Allquantor: ∀x , "für alle, für jedes"
Existenzquantor: ∃x , "es existiert"
Mit diesen Mitteln wird die Prädikatenlogik erster Stufe gebildet.
Beispiel: (Wege in gerichteten Graphen)
x, y, z
: Variable (für Ecken)
kante (x , y)
: 2-stelliges Prädikat, "es führt eine gerichtete Kante von x nach y"
weg (x, y)
: 2-stelliges Prädikat, "es gibt einen Weg von x nach y"
Folgende Aussagen können nun gemacht werden, die immer gelten sollen (Regeln):
• ∀x weg (x, x)
• ∀x ∀y ∀z (kante (x, z) ∧ weg (z, y) → weg (x, y))
Um einen speziellen Graphen zu beschreiben, sind weitere Aussagen (Fakten) nötig:
• kante (a, b)
• kante (a, e)
• kante (b, c)
• kante (c, d),
wobei a, b, c, d, e Konstante sind.
Um nun z.B. auf die Anfrage weg (a, d) eine Antwort zu erzeugen, werden die Regeln auf die
Fakten angewandt, wobei die Variablen substituiert werden:
Versuche:
(1) z = e: kante (a, e) // Cut-Off
(2) z = b: kante (a, b) ∧ weg (b, d) → weg (a, d) mit x = a und y = d,
also versuche weg (b, d) zu beantworten
....
kante (c, d) ∧ weg (d, d) ist erfüllt, also ...
Bemerkungen:
(1) Es muß eine passende Variablensubstitution gefunden werden (Unifikation) !!
(2) Die Resolution ist nichtdeterministisch.
Syntax der Prädikatenlogik erster Stufe mit Gleichheit (Identität)
Alphabet: A = V ∪ Σ ∪ P, wobei V, Σ und P paarweise disjunkt sind.
V = { v0, v1, ... } aufzählbare Menge von Variablen
Σ = Σ(0) ∪ Σ(1) ∪ Σ(2) .... Funktionssymbole mit Stelligkeit
Terme sind Elemente von T( Σ, V ) (somit freie Termalgebra).
Informatik I, Seite 47
P = P(1) ∪ P(2) .... Prädikatensymbole (Relationssymbole) mit Stelligkeit.
In P(2) liegt das spezielle Prädikat "=" (Infixnotation: t = t' ).
p (t1, t2, ... , tn) mit p ∈ P(n) und ti ∈ T(Σ, V) Terme heißt atomare Formel (einfachste
Formel, die wahr oder falsch sein kann).
F0 = F0( P, Σ, V ) sei die Menge der atomaren Formeln. Dann läßt sich die Menge F der
syntaktisch korrekten Formeln der Prädikatenlogik 1. Stufe folgendermaßen induktiv
definieren:
(1) F0 ⊆ F
(2) F, G ∈ F impliziert ¬ F, F ∧ G, F ∨ G ∈ F
(3) F ∈ F, v ∈ V impliziert ∀v F, ∃v F ∈ F
(4) sonst nichts
Ein Literal ist eine atomare Formel oder eine negierte atomare Formel:
p(...) , ¬ p(...), t1 = t2 , ¬ (t1 = t2).
Eine quantorenfreie Formel ist eine Formel, in der keine Quantoren auftreten.
Variablenbindung:
In ∀x F, ∃x F ist x eine gebundene Variable.
x ∈ V heißt frei in F, wenn sie in F vorkommt und nicht gebunden ist.
Beispiel: F = ( ∃x p(x, f (y))) ∨ ¬ ∀ y g ( y, g (k, h(x))) , k konstant
(1) (2) (3)
(4) (5)
(6)
(1), (2), (4), (5) sind gebunden, (3) und (6) sind frei.
Informatik I, Seite 48
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 7.2.96, 8.2.96 und 14.2.96, 76021 Brauer)
In prädikatenlogischen Formeln treten zwei Arten von Variablen auf:
1. die freien Variablen: das sind die wirklichen Variablen, die globalen Variablen/Größen
2. die gebundenen Variablen: die scheinbaren Variablen, die lokalen Variablen/Größen
Die Bindung von Variablen kann ineinander verschachtelt sein; welche Variable gemeint ist
mit ein und derselben Bezeichnung hängt also vom Bindungsbereich (scope,
Gültigkeitsbereich) ab. Um Verwechslungen zu vermeiden, sollte man also statt
∃ x (p(x) ∧ ∀ x g (x , y) ∨ g(x, x))
zB. das innere x in z umbenennen, so daß die Formel folgende Gestalt annimmt:
∃ x ( p(x) ∧ ∀ z g (z , y) ∨ g(x, x)).
Induktive Definition der Menge frei ( F ) der freien Variablen in der Formel F:
•
frei ( L ) = Menge der Variablen in L, wenn L ein Literal ist ( (¬) p(t1, ..., tn))
•
frei ( F • G ) = frei ( F ) ∪ frei ( G ) für • = ∨ , ∧ , →, ≡
•
frei ( Q x F ) = frei ( F ) \ { x } für Q = ∀, ∃
In der Definition soll dabei der Bindungsbereich für die Variable x die kleinste Teilformel
anschließend an Q x sein. Um den Bindungsbereich auszudehnen, benutzt man zB. die
Schreibweise ∀ x : A ... B und meint damit ∀ x (A ... B) .
Gebundene Variablen sind in Variablen, die noch nicht in der Formel erscheinen,
umbenennbar (siehe oben).
Semantik prädikatenlogischer Formeln
Szenario, Weltausschnitt festlegen:
1.
Es muß ein Universum bzw. ein Individuenbereich U definiert sein, aus dem die Werte
für Variablen und Konstanten stammen. U darf nicht leer sein.
2.
Des weiteren muß eine Abbildung I der Funktionen und Prädikatensymbole vorliegen:
Σ ∪ P → Menge der Fkt. /Präd. über U, dh.:
f ∈ Σ(m) , I f : Um → U
p ∈ P(n), I p : Un → {w, f } oder I (p) ⊆ Un
WICHTIG: das "=" aus P wird stets als die Gleichheit in U interpretiert!
A
= ( U, I ) heißt Struktur.
Für eine feste Struktur sind verschiedene Belegungen (von Variablen) möglich.
Eine Belegung α : V → U wird erweitert auf α ' : T ( Σ, V ) → U.
A
Induktive Definition der Interpretation von Formeln:
Gegeben sei die Interpretation I = ( , α )mit der Belegung α :
•
I ( t1 = t2 ) = w , wenn α (t1) = α (t2), sonst f
•
I ( p (t1, ..., tn)) = w, wenn (α (t1), ..., α (tn)) ∈ I( p ), sonst f
•
I ( ¬ F ) = w, wenn I (F) = f, sonst w
•
I ( F ∧ G ) = w, wenn I (F) = w und I(G) = w, sonst f
•
I ( F ∨ G) = w, wenn I (F) = w oder I(G) = w, sonst f
•
I ( ∀ x F ) = w, wenn für jedes a ∈ U gilt: I[a/x] (F) = w, sonst f
•
I ( ∃ x F ) = w, wenn es ein a ∈ U gibt mit I[a/x] (F) = w, sonst f
Dabei ist I [a/v] die Interpretation , die aus I entsteht, wenn man α durch α [a/v] ersetzt:
α [ a/v ] (x) = α (x), wenn x ≠ v, sonst a.
Informatik I, Seite 49
I heißt Modell für die Formel F, wenn I(F) = w.
F heißt erfüllbar, wenn F ein Modell besitzt.
F heißt unerfüllbar, wenn F kein Modell besitzt.
F heißt allgemeingültig , wenn ¬F unerfüllbar ist.
Die Formel F und G heißen semantisch äquivalent g.d.w.
jedes Modell von F Modell von G ist und umgekehrt.
Offenbar gilt: ¬∃ x F ist semantisch äquivalent zu ∀ x ¬F.
Satz:
Kommt die Variable y nicht in F vor, so gilt:
I ist Modell für ∀ x F ⇔ I ist Modell für ∀ y F [ y/x ].
Beispiel: F = ∀ x p(x, f(x)) ∧ q (g(a, f(z)))
U = N0 = {0, 1, 2, ... }
I p = { (m,n) ⊆ U2 | m < n }
I q = { n ∈ U \ {0} | n ist Primzahl }
I f = succ
I g = add
Ia=2
Belegung:
α1: α1(z) = 2, I1(F) = w
α2: α2(z) = 1, I2(F) = f
Erweiterung des Sequenzenkalküls: Neue Regeln
L 14: Spezialisierung (gilt nur wegen U nichtleer)
F
∀xF
F
F
L 15: Generalisierung (falls x nicht frei in F)
F
F
F
∀xF
L 16: Existenzialisierung S
F[ t / x ]
F
F
∃xF
L 17: Existenzialisierung A (falls y in der unteren Sequenz nicht frei ist)
F F[ y / x ] G
G
F
∃xF
L 18: Gleichheit
t=t
L 19: Substitution
F
F
t = t'
F[t / x]
F[t' / x]
Satz: Der erweiterte Sequenzenkalkül ist korrekt und vollständig.
Informatik I, Seite 50
Beispiel:
Behauptung (L20):
F ∀x ∀y F
F ∀y ∀x F
Beweis: x, y nicht frei in F
F ∀x ∀y F
F
∀y F
F
F
F
∀x F
F ∀y ∀x F
Annahme
L14
L14
L15
L15
Behauptung:
t1 = t2
F
t
F
2 = t1
Beweis:
F
F
F
F
t1 = t2
t 1 = t1
t1 = t2
L18, L2
t2 = t1 L19 auf t1 = t1 ≈ (x = t1) [t1 / x] anwenden
t2 = t1 Kettenregel
Satz 1: Die allgemeingültigen (bzw. unerfüllbaren) Formeln der Prädikatenlogik 1- Stufe
sind aufzählbar (Allgemeingültigkeit ist semientscheidbar, wenn sie vorliegt, kann das
festgestellt werden).
Satz 2: Allgemeingültigkeit ist nicht entscheidbar.
Bemerkung: Es existieren prädikatenlogische Formeln, die erfüllbar sind, aber nur
unendliche Modelle besitzen.
Frage: Wie kann man die Prädikatenlogik 1. Stufe zur Aussagenlogik spezialisieren?
Antwort: Indem man alle Quantoren und Variablen verbietet.
Atomare Formeln
p (t1, ... , tn ) hat für eine feste Struktur einen festen Wahrheitswert, entspricht also einer
aussagenlogische atomaren Formel.
Verschiedene Strukturen entsprechen verschiedenen Belegungen der aussagenlogischen
atomaren Formel.
Bemerkung:
∀ x ∈ N ∃ y ∈ Z : p (x, y) ist zu lesen als Ableitung von:
∀ x ( N(x) → ∃ y ( Z(y) ∧ p(x , y))
Die Mengen bzw. ADT's N und Z sind in "reiner" Prädikatenlogik als Prädikate zu schreiben.
Informatik I, Seite 51
Normalformen
Satz: Jede quantorenfreie prädikatenlogische Formel F hat eine sematisch äquivalente
Darstellung in konjunktiver Normalform (Nf):
n mi
∧∨L
ij
F semantisch äquivalent zu i = 1 j =1
, wobei die Lij Literale sind.
Analog gibt es eine disjunktive Normalform (∨ ∧).
Satz: Jede prädikatenlogische Formel F hat eine pränexe Nf , d.h. ist semantisch äquivalent
einer Formel der Gestalt Q1 x1 Q2 x2 ... Qn xn F' mit Qi = ∀, ∃ und F' quantorenfrei.
Beweis (strukturelle Induktion):
a)
Ist F quantorenfrei, so stimmt die Behauptung.
b)
F = ∀ x A ∧ ∀ y B ist sem. äq. zu ∀ x ∀ y ( A ∧ B ), wenn F "bereinigt" ist, d.h. keine
verschiedenen Variablen mit gleicher Bezeichnung auftreten.
usw.
Satz: Jede prädikatenlogische Formel F hat eine SKOLEMSCHE NF, d.h. ist
erfüllbarkeitsäquivalent zu einer Formel in pränexer Nf ohne Existenzquantoren (d.h. eine
universell quantifizierte Formel ) : ∀ x1 ∀ x2 ... ∀ xn G, G quantorenfrei.
Eine Formel G heißt erfüllbarkeitsäquivalent zu F g.d.w.
Wenn F ein Modell hat, so auch G und umgekehrt (die Modelle können verschieden sein).
Beweis:
Sei F in pränexer Nf: F = ∀ x1 ... ∀ xn ∃ y M (M kann Quantoren enthalten).
Das ∃ y kann nun durch folgenden Trick von Skolem eliminiert werden:
Wenn ein y zu jedem xi so existiert, daß M ( ... ) erfüllbar ist, dann kann ein neues f ∈ Σ(n)
definiert werden mit f (x1,...,xn) = y.
Dann gilt: F ist erfüllbar g.d.w ∀ x1 ... ∀ xn M[f(x1,...,xn) / y] erfüllbar ist.
Logisches Programmieren
Die Resolution wird für die Skolemform ohne Quantoren durchgeführt.
Bei der Suche nach ¬a bzw. a muß am Terme mit Variablen vergleichen: Dann werden die
Terme miteinander unifiziert, d.h. es wird eine geschickte Substitution gesucht, die die Terme
gleich macht.
Informatik I, Seite 52
Kapitel 5 : Funktionales Programmieren
Gleichzeitig zur Erfindung der Turingmaschine 1936 wurde 1936 auch der Lambda Kalkül ( λ - Kalkül ) von A. Church als Funktionsbeschreibungsformalismus eingeführt.
Beide Begriffe sind äquivalente Begriffe für Berechenbarkeit.
Es gibt 4 Arten von Programmiersprachen:
•
funktionale / applikative Sprachen:
Programm: Definition von Funktionen/Termen (inklusive Daten)
Ausführung: Anwendung der Definition liefert das Ergebniss rückstandsfrei, d.h. ohne
Seiteneffekte / Nebeneffekte.
•
logische / deklarative Sprachen:
Programm: Deklarationen (entsprechen den Prädikaten)
Ausführung: Feststellen, ob das Prädikat erfüllbar ist.
Ausgabe: Erfüllende Belegung.
•
imperative / prozedurale Sprachen:
Programm: Folge von Anweisungen zur Änderung des Speicherinhalts
Ausgabe: Teil des Speicher-Inhalts
•
objektorientierte Sprachen:
Programm: Objekte ≈ ADT (abstrakte Datentypen)
Ausgabe: Kommunikation ; Nachrichtenversand
Prinzip der funktionalen Programmiersprachen
Ein funktionales Progmrmm ist ein Ausdruck E (der sowohl Algorithmen als auch Eingabe
enthält). E wird verändert mittels eines Termersetzungssystems, d.h. ein Teilterm P wird in P'
geändert: E[P] → E[P'] ( P ⇒* P' bzgl. der Regeln).
Beispiel: (7+4)*(8+5*3) → 11*(8+15) → 11*23 → 253.
Elementarer λ - Kalkül
Der λ-Kalkül ist eine Notation/Sprache zur Beschreibung aller berechenbarer Funktionen.
Funktionen werden nicht als Argument/Werte-Paare, sondern als "Vorschriften" zur
Berechnung angesehen. Statt f(x) = 2*x+1, wobei f der Name der Funktion ist, wird jetzt die
anonyme Funktionsdefinition (ohne Namen), aber mit Angabe des Arguments (der Variablen)
angegeben:
λ x . 2*x+1
einstellige Funktion
λ y . 2*y+1
ist dieselbe Funktion
Es gibt drei Regeln zur Verarbeitung von λ-Ausdrücken:
α - Konversion:
Durch diese Regel wird die Umbenennung gebundener Variablen vorgenommen:
λ x . M →α λ y . M[ y / x ]
β - Konversion:
Durch sie wird die Anwendung von Funktionen auf Daten (Application) geregelt:
(λ x . 2*x+1) 3 →β 2 * 3 + 1
( λ x . M ) N →β M[ N / x ]
Bei der Substitution von x durch N muß auf Namenskonflikte geachtet werden, so ist etwa
( λ x . ( λ y . y + x )) y NICHT zu λ y . y+y ableitbar, sondern vor der Substitution muß noch
eine α-Konversion durchgeführt werden: →α (λ x . (λ z .z+x)) y →β λ z . z+y
Durch Substitution von N für x [N / x] in M darf keine in N freie Variable in M gebunden
werden. Dann ist [N / x] zulässig für M.
Informatik I, Seite 53
η - Konversion:
Diese Regel ist für das Weglassen "redundanter" λ's zuständig: (λ x . M x) ist dieselbe
Funktion wie (M), wenn M keine freien Vorkommen von x enthält.
λ x . M x →η M
Beispiel:
λ x . 1+x →η 1+ (wird als einstellige Funktion succ aufgefaßt).
λ x . λ y . * y x →η λ x . * x →η *
Formale Syntax von λ -Ausdrücken
Gegeben seien eine aufzählbare Menge V von Variablen und eine aufzählbare Menge C von
Konstanten. Die Terme über V und C, die Funktionen beschreiben, heißen λ -Ausdrücke.
Induktive Definition von λ-Ausdrücken:
• v ∈ V und c ∈ C sind λ-Ausdrücke
• F und A seien λ-Ausdrücke. Dann ist auch (F A) ein λ-Ausdruck (F ist die Funktion/der
Algorithmus, die/der auf A angwendet wird). Für F und A ist keinerlei (Typ-)
Einschränkung gegeben (ungetypter λ -Kalkül), so ist zB. FF ein erlaubter λ-Term.
• Ist x ∈ V und M ein λ-Ausdruck, so ist auch (λ x . M) ein λ-Ausdruck.
Bemerkung: Ist x freie Variable in M, dann ist λ x . M Funktion: x → M[x/x].
Die so erzeugte initiale Termalgebra sei Λ.
Im λ-Ausdruck (λ x . F) heißt x Parameter und F Funktionsrumpf.
Der Bindungs-/Freiheitsbegriff für Variablen ist analog zur Prädikaten-Logik, so sind zB. in
λ x . F alle x in F gebunden, in λ x . y x hingegen ist y frei.
F heißt geschlossener λ -Ausdruck, wenn F keine freien Variablen enthält.
Notation
(1) (λ x1 x2 ... xn . M) statt (λ x1 . (λ x2 . ( ... (λ xn . M) ... ))),
d.h. Funktionen mit mehreren Argumenten werden durch iterative Zusammensetzung
einstelliger Funktionen konstruiert (currying ) (zB. add(x , y) = addy (x)).
(2) F M1 M2 ... Mn statt (... (F M1) M2) ... Mn )
Beispiel: Kombinatoren
I=λx.x
K = λ x y . x entspricht λ x . (λ y . x)
K* = λ x y . y
S = λ x y z . x z ( y z ) entspricht λ x . (λ y . (λ z . ((x z) (y z))))
Generalvoraussetzung:
Von λ-Ausdrücken soll stets angenommen werden, daß bei Anwendung der α - oder βKonversion keine Namenskonflikte entstehen, d.h. im ganzen Ausdruck ist keine gebundene
Variable so bezeichnet wie eine freie Variable (kann durch α-Konversion erreicht werden), es
liegt also ein bereinigter λ -Ausdruck vor.
Beispiel:
(1) I M →β M
(2) K M →β λ y . M (Aufpassen: K y ⇒α , β λ z . y). Also:
K M N = (K M) N →β (λ y . M ) N →β M (da y nach Generalvor. nicht frei in M)
(3) K* M N →β (λ y . y) N →β N
(4) S M N L ⇒* M L (N L)
Informatik I, Seite 54
Operationelle Semantik
Durch die oben eingeführten α, β und η-Konversionen ist ein Kalkül definiert, der
verschiedene λ-Ausdrücke, die die gleiche Funktion darstellen, auf Normalform bringt.
Also sind F und F' gleiche Funktionen, wenn F ⇒*α, β, η F' .
Ein λ-Ausdruck ist also dann in Normalform, wenn keine β- oder η- Konversionen
anwendbar sind.
Aber: (λ
λ x . x x) (λ
λ x . x x) hat keine Normalform !!
Informatik I, Seite 55
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 21.2.96 und 22.2.96, 76021 Brauer)
Wdh.: Operationelle Semantik des λ -Kalküls (Transformationsregeln)
Auf der Algebra der λ-Ausdrücke wird durch die 3 Regeln α, β, η (Konversionsregeln) ein
Reduktionssystem (Termersetzungssystem) definiert (sh. Script vom 7/8/14.2.96).
Reduktionsrelation:
F ⇒x F' , wenn F' aus F in einem Schritt durch x-Konversion (x = α, β, η) entsteht.
⇒α, β, η* ist dann die transitive Hülle der Vereinigung von ⇒α , ⇒β , ⇒η.
⇔α, β, η* ist die transitive Hülle der Vereinigung von ⇒α, β, η* und (⇒α, β, η*) -1.
Satz:
i. ⇒α, β, η* ist konfluent, hat also auch die Church-Rosser-Eigenschaft, d.h.:
Gilt F ⇒α, β, η* F1 und F ⇒α, β, η* F2, dann existiert stets F3 mit F1 ⇒α, β, η* F3
und F2 ⇒α, β, η* F3.
Gilt F ⇔α, β, η* F' , so existiert stets G mit F ⇒α, β, η G und F' ⇒α, β, η G.
ii. Definition: Der λ-Ausdruck N heißt Normalform Nf des λ-Ausdrucks F, wenn
F ⇒α, β, η* N und N ist nicht durch β- oder η-Konversionen veränderbar.
Dann gilt: Jeder λ-Ausdruck hat höchstens eine Nf (bis auf α-Konversionen). Diese kann
durch Linksauswertung gewonnen werden ((λ ... M) N).
iii. Nicht jeder λ-Ausdruck hat eine Nf [Bsp.: (λ x . x x) (λ x . x x)] und es gibt λ-Ausdrücke,
bei denen nicht jede Reduktionsfolge ⇒α, β, η* zu einer Nf führt, obwohl sie existiert.
Faule Auswertung (lazy evaluation)
Unter fauler Auswertung versteht man bei Linksauswertung (z.B. (λ a b . M[a,b] ) A B ) eine
so vorgenommene Auswertung, daß A, B nicht angesehen (ausgewertet) werden, sondern daß
die β-Konversion linksangewendet wird: ⇒β M [A/a , B/b], egal was A, B ergeben würden.
Faule Auswertung heißt auch verzögerte Auswertung oder auch call by need / call by name.
Der Gegensatz zur faulen Auswertung ist die strikte Auswertung (eager evaluation, call by
value). Diese Auswertungsstrategie berechnet erst alle Argumente und übergibt sie erst dann
an die Funktion (d.h. in ((λ a b . M[a,b]) A B ) erst Nf für A (NA) und für B (NB) bestimmen
und dann β-Konversion anwenden: ((λ a b. M) NA NB) ⇒β M[ NA/a , NB/b]. Eventuell
können aber NA und NB nicht bestimmt werden! ).
Beim λ-Kalkül führt bei bestimmten Ausdrücken nur call-by-name (lazy evaluation) zum
Erfolg.
Funktionsdefinitionen
Sei v Variable, F λ-Ausdruck. Dann ist (v = F ) eine benannte Funktionsdefinition (mit v als
Namen), die Variable v wird also an F gebunden (deutbar als Belegung von v).
Eine Folge (v1 = F1) ... (vn = Fn) F mit n ≥ 0 heißt Programm (in F werden dann v1, ... , vn
vorkommen).
Informatik I, Seite 56
Beispiel:
(f = ( λ v . v ))
f t
liefert t.
Rekursion
Eine Funktionsdefinition ( w = λ v . t ) darf in t wieder die Variable w enthalten. Das ergibt
einen rekursiven Aufruf von w.
Beispiel:
( w = λ x y . x (w K* ( t y )) y )
w K z
wird folgendermaßen ausgewertet:
wkz=
((λ x y . x (w K* (t y ) ) y) K z) = ((λ y . K ( w K* (t y )) y ) z ) = ( K (w K* (t z)) z) = (w K*
(t z)) = (( λ x y . x (w K* ( t y )) y ) K* (t z)) = (K* (w K* (t (t z))) (t z)) =
=tz
Bei der Auswertung rekursiver Programme muß lazy evaluation angewendet werden, wie aus
dem obigen Beispiel ersichtlich wird.
Bei strikter Auswertung kann Endlosrekursion entstehen:
(w = λ v . w v) w F würde folgendermaßen ausgeführt: w F = (λ v . w v) F= w F usw.
Bedingte λ -Ausdrücke
b t t' = { für b = K : t , für b = K* : t'
Also können im λ-Kalkül Wahrheitswerte durch K für wahr und durch K* für falsch definiert
werden. ifthenelse wird dann definiert durch:
ifthenelse = λ b t' t''. (b t' t'')
Beispiel:
ifthenelse B R T = (λ b t t''. b t' t'') B R T = B R T (verzögerte Auswertung von B, R und T !),
wird B zu K ausgewertet, ist B R T = R, wird B zu K* ausgewertet, ergibt sich B R T = T.
Darstellen der booleschen Algebra (Aussagenlogik) im λ -Kalkül
true = K, false = K* , für ifthenelse b t' t'' wird kurz geschrieben: B → t' | t''.
Dann wird weiterhin definiert:
not = λ b . ( B → K* | K )
and = λ p q . ( p → q | K* )
or = λ p q . (p → K | q )
Bei der Auswertung solcherart definierter boolescher Ausdrücke wird wieder lazy evaluation
benutzt!
Darstellung natürlicher Zahlen (A. Church)
Sei fn x Abkürzung für f (f ... (f x) ...) , n ∈ N0, z.B. f0 x = x = x , f2x = f (f x)
Dann seien die natürlichen Zahlen im λ-Kalkül repräsentiert durch:
c0 = (λ f x . x), c3 = (λ f x . f (f (f x))), cn = (λ f x . (fn x))
Informatik I, Seite 57
Sei A+ = (λ x y p q . (x p (y p q))). Dann gilt: A+ cn cm = cn+m.
Sei A* = (λ x y z . (x (y z))). Dann gilt: A* cn cm = cn*m.
usw.
Daß heißt, alle berechenbaren Funktionen über N0 sind im λ-Kalkül darstellbar.
"Nächster Schritt": LISP
Das Hauptproblem von LISP besteht darin, daß nicht statische Bindung (wie im λ-Kalkül
gefordert) vorliegt, sondern dynamische Bindung. Neue LISP-Varianten (z.B. SCHEME) sind
mit statischer Bindung ausgestattet.
Die wichtigste Idee von LISP ist die Darstellung von Fakten und Daten in einer
Datenstruktur, der Liste (≈ Baum).
Definition der Liste
a) Eine Liste ist aufgebaut aus Atomen (an Blättern):
Jede Folge von Buchstaben / Ziffern ist Atom.
Das ausgezeichnete Atom nil repräsentiert den Wahrheitsdefiniert falsch als auch den
Sachverhalt des undefinierten.
Das ausgezeichnete Atom t repräsentiert den Wahrheitswert wahr.
Also: B = {nil, t}
b) Listendefinition in BNF (Backus-Nauer-Form):
Liste ::= Atom | ' ( ' Liste '.' Liste ' ) '
(Kontextfreie Notation: L → A | ( L . L ) )
Beispiel: a, b, c, d, e sind Atome, ((a . (b . nil )).((c . nil) . (d . (e . nil )))) eine Liste.
c)
Operationen:
eq: Atom × Atom → B (Gleichheit)
atom: Liste → B ( t, wenn Argument Atom ist, sonst nil )
car: Liste → Liste ( (car (x . y)) = x // Linkes Register)
cdr: Liste → Liste ( (cdr (x . y)) = y // Rechtes Register)
d)
LISP-Schreibweise von λ -Ausdrücken
λ x1 ... xn . s ≈ (lambda (x1 ... xn) s)
s n ≈ (s n)
(f = s) ≈ (label f s)
a ≈ (quote a) kurz 'a (das Atom a, nicht eventueller Funktionsname)
(b → s | u ) ≈ (cond (b s) (t u)) (Spezialfall von (cond (B1 s1) ... (Bn sn)) )
Informatik I, Seite 58
Beispiel: Erweiterung des Vergleichsoperators eq auf Listen
equal: Liste × Liste → B
a)
λ-Kalkül:
equal = λ s1 s2 . (atom s1 → (atom s2 → (eq s1 s2) | nil ) | (atom s2 → nil | (equal (car
s1) (car s2) → (equal (cdr s1) (cdr s2)) | nil )))
b)
LISP:
(label equal (lambda (s1 s2) (cond ((atom s1) (cond ((atom s2) (eq s1 s2)) (t nil)))
(cond ((atom s2) nil ) (t (cond ((equal (car s1) (car s2)) (equal (cdr s1) (cdr s2))) (t nil
)))))))
Informatik I, Seite 59
EINFÜHRUNG IN DIE INFORMATIK I
(Script zu den Vorlesungen vom 28.2.96 und 29.2.96, 76021 Brauer)
Eigenschaften von SML
•
•
•
•
•
•
statische Bindung
strikte Auswertung , call by value (außer bei ifthenelse)
strenge Typisierung (Typinferenz)
polymorphes Typsystem (Typvariable, Unifikation), damit ist nicht Overloading gemeint
Ausnahmemechanismus (exceptions)
Modulkonzept (separate Übersetzung)
Grundlegende Programmiermethoden
Grundidee: Komplexitätsreduktion
(für Aufgabenst., Programmierer, Wartungsingenieure)
Man versucht ein großes Programmier-Projekt in Teile zu zerlegen, wobei auf folgendes zu
achten ist:
1. Die Teile sollen einfacher bearbeitbar sein als das Ganze.
2. Eventuell schon vorhandene Teile sollen wiederverwendet werden.
3. Die Zusammensetzung der Teile soll einfach sein bzgl. der Kommunikation, die
zwischen den Teilen stattfindet.
Einfachste Schemata für das Vorgehen
•
Fallunterscheidung:
ifthenelse
(cond ( , ) ( , ) ... ( , ))
case of (bewachte Anweisung)
•
Sequentielle Zerlegung:
Schritte, die nacheinander abgearbeitet werden
•
Rekursion:
Kombination von Fallunterscheidung und sequentieller Zerlegung (Problem der
Terminierung)
Beispiel:
Die n-te Fibonacci-Zahl (n = 0, 1, ...) ist die Zahl der Knoten auf Stufe n.
Das rekursive Bildungsgesetz lautet dann:
Fib(0) = Fib(1) = 1
Fib(n) = Fib(n-1) + Fib (n-2) für n > 1
Informatik I, Seite 60
Bewertung der Knoten der Bäume
1.
Knoten numerieren: mit 0 beginnen, schichtenweise
2.
den Knoten Werte zuordnen; W(k) ist der Wert des k-ten Knotens:
W(0) = 0
W(k) = k - W(Vorgängernummer)
Beobachtung: Nummer des Vorgängers des k-ten Knotens = Wert des (k-1)sten Knotens
Also neue Definition von W:
W(0) = 0
W(k) = k - W( W(k-1))
Es liegt eine geschachtelte Rekursion vor.
Achtung: Kleine Änderungen der Definition haben große Wirkungen:
(1) W'(0) = 1
W'(k) = k - W( W(k-1))
Dann: W'(1) = 1 - W'(W'(0)) = 1 - W'(1), hat keine Lösung in Z!
(2) W''(0) = 0
W''(k) = k+W''( W''(k-1))
Dann: W''(1) = 1, W''(2) = 2+W''(1) = 3, W''(3) = 3+W''(3), hat keine Lösung!
Weiteres Beispiel:
Sei g: N0 × N0 → N0 definiert durch:
g(0, y) = 1, y ∈ N0
g(x, y) = g(x-1, g(x-y, y)) (nur für x,y ∈ N0, x ≥ y, vollständig definiert)
Dann: g(1,2) = g (0, g (-1, 2)).
Bei verzögerter Auswertung ergibt sich 1, ansonsten ist g(1,2) undefiniert.
Bei rekursiven Funktionen muß also
a) die Terminierung und
b) die partielle Korrektheit
beachtet werden!
Kapitel 6
"Mehrfachmengen" / Multimengen: siehe GOOS
Kapitel 7 : Algorithmenkonstruktion
Komplexität von Algorithmen / Programmen
Ein Algorithmus / Programm arbeitet auf Klassen von Einzelaufgaben, -fällen, -problemen.
Der "Aufwand" des Algorithmus hängt also von der "Größe" der Eingabe ab.
Der Aufwand von Algorithmen wird in drei Größen gemessen:
•
Zeit in Elementarschritten (die eine konstante Zeit benötigen)
als Elementarschritt können zB. Addition, Subtraktion verwendet werden,
nicht Multiplikation, da diese schon eine auf der Addition und Subtraktion aufbauende
komplexere Operation ist.
•
Platz in Speicherstellen für Zwischenrechnungen
•
Kommunikationsaufwand
Die Größe der Eingabe ist die Zahl der Basiselemente, aus denen die Eingabe besteht.
Informatik I, Seite 61
Komplexitätsfunktionen K(n):
Komplexitätsfunktionen bilden die Größe n der Eingabe eines Problemfalles auf ein Maß für
den Aufwand der Lösung ab. Mögliche Fälle von Eingaben sind:
• der schwierigste Fall (worst case)
• der mittlere Fall (average case)
• der einfachste Fall (best case)
Gesucht sind zu Algorithmen / Programmen die Funktionen: Kwc (n), Kac (n) und Kbc (n).
Diese Funktionen werden meist nur in Schranken angegeben (wc: obere Schranke, bc: untere
Schranke).
Die O-Notation (und verwandte Notationen)
Beispiel:
Gegeben: endliche Menge S ⊆ Z, c ∈ Z
Gesucht: Antwort auf die Frage: c ∈ S ?
Also wird ein Algorithmus gesucht für die Berechnung der Funktion contains:
Ρ(Z) × Z → BOOL
( S, c) → true, falls c ∈ S, false sonst
Lösung: contains (S, c) = false für S = ∅, true für selel (S) = c, sonst contains (S\{selel(S)}, c)
mit selel: Ρ(Z) → Z, S → s, s ∈ S
Zeitkomplexität T...(n)
Größe des Problems: n = |S|
Twc(n) = 3n+1, wenn c ∉S
Tvery best(n) = 1+1+1, falls c ∈ S und selel liefert sofort c
Taverage(n) = (3n+3n+1)/2 = 3n+1/2
Anmerkung: obige Zeitangaben hängen natürlich von der Wahl der Elementarschritte ab.
Definition: O-Notation : obere Schranke
Gegeben: Zwei stetige Funktionen f, g : N0 → R+
"f wächst höchstens so schnell wie g", d.h. f = O(g) (f ist Groß O von g), wenn
∃n0 ∈N0 ∃c ∈ R+ ∀ n ≥ n0 : f(n) ≤ c g(n).
Achtung:
O(g) = { f | f = O(g) im obigen Sinne }, d.h. f = O(g) :⇔ f ∈ O(g). Die Schreibweise O(g) = f
ist also unsinnig.
Die O-Notation wird für worst-case-Abschätzungen benutzt.
Beispiel:
n + 3 = O(n)
3n+7 = O(n)
700 n2 + 10n + 2700 = O(n2)
Satz: f = O(g) g.d.w. limn→∞(f(n)/g(n)) existiert.
Bemerkungen:
• die O-Notation betrachtet die Funktion asymptotisch
• logb x = (logb a) (loga x), deshalb bei O-Notation nur log schreiben (ohne Basis)
• O(n) = O(n/2)
• O(1) = O(n) = O(nk) = O(2n) (von links nach rechts lesen, "=" bedeutet hier "⊆").
• der Aufwand für Elementarschritt / Elementarspeicherstelle: O(1) (also konstant)
Informatik I, Seite 62
Typische Laufzeiten von Algorithmen
O(log n):
logarithmisch, Suchen in Mengen
O(n):
lineare Laufzeit, Bearbeitung jedes Elementes einer Menge
O(n log n):
Gute Sortieralgorithmen
O(n2):
quadratisch, primitive Sortierverfahren
O(nk), k ≥ 2:
polymielle Laufzeit: vertretbare Laufzeit
O(2n)
exponentielle Laufzeit: Backtracking
Weitere Notationen:
(1) f wächst mindestens so schnell wie g
f = Ω (g) (Großomega) g.d.w g = O(f)
für untere Schranken
(2) f u. g wachsen in etwa gleich schnell
f = Θ(g) (Theta), falls g = O(f) und f = O(g)
(3) f wächst langsamer als g
f = o(g) g.d.w. limn→∞ (f(n)/g(n)) = 0
(4) f wächst schneller als g
f = ω (g) g.d.w. g = o(f)
Herunterladen