Theoretische Informatik und Logik Bernhard Gramlich, gramlich

Werbung
Theoretische Informatik und Logik
Homepage zu dieser LVA:
http://www.logic.at/lvas/wiki/185263
Bernhard Gramlich, [email protected]
Marion Oswald, [email protected]
1
Vorlesungsteil
Vorlesungtermine: Do, 18:15—19:45, HS 5
Fr, 15:15—16:45, Inf HS
Ausnahmen: Fr, 7.10., 15:15—16:45, HS 5
Fr, 21.10., 15:15—16:45, HS 6
2
Übungsteil
• Übungsgruppen (UE)
— betreut von TutorInnen
— Anmeldung ab nächster Woche im TUWEL
— Erste Übungseinheit: 19.10./20.10. 2011
— WICHTIG: Ankreuzen und uploaden (pdf) der
Übungsbeispiele im TUWEL (Termine beachten!)
— Übungsbeispiele rechtzeitig auf Homepage bzw. im TUWEL
• Abgabegespräche (AG)
— bei LVA-Leitern
— Anmeldung im TUWEL
— Termine: KW 46 bzw. KW 50/51
— Übungsbeispiele rechtzeitig auf Homepage bzw. im TUWEL
3
Beurteilung
Übung (max. 40 Punkte)
• Übungsgruppen (UE)
— 6 UE-einheiten
— 4 Beispiele pro Einheit
— Punkte pro Einheit: 0-4
• Abgabegespräche (AG)
— 2 Abgabegespräche
— 4 Beispiele pro AG
— Punkte pro AG: 0-8
4
Beurteilung
Vorlesungprüfung (max. 60 Punkte)
• Haupttermin: Do 19.01.12, 18:15-20:15, Anmeldung (TISS)!
• 3 Ersatztermine im Sommersemester
• Voraussetzung: positiver UE-teil
— mindestens 1 Punkte pro AG
— mindestens 10 Punkte in UE 1-3 und AG1
— mindestens 10 Punkte in UE 4-6 und AG2
5
Gesamtnote
Gesamtpunkte Note
100 − 86
1
85 − 71
2
70 − 61
3
60 − 51
4
50 − 0
5
6
Unterlagen
• Skriptum
• Vorlesungsfolien
• Bücher für ersten Teil:
— P.Linz: An Introduction to Formal Languages and
Automata. Jones and Bartlett Publishers Inc., 2001.
— J.Hopcroft, R.Motwani, J.Ullman: Einführung in die
Automatentheorie, Formale Sprachen und
Komplexitätstheorie. Pearson Studium, 2002.
Weitere Literatur: siehe Homepage der Lehrveranstaltung.
Weitere Informationen
• Primäre Anlaufstelle für Fragen:
http://www.logic.at/lvas/wiki/185263
• TU-Help-Form: www.informatik-forum.at
7
Lehrziel und Inhalt
Ziel: Vermittlung von Grundbegriffen der theoretischen Informatik
und der Logik, Einführung in ihre mathematisch-formale Methodik.
Inhalt:
• Formale Sprachen und Automaten
• Aussagenlogik
• Prädikatenlogik
8
Formale Sprachen und Automaten
Inhalt
• Grundlagen
• Reguläre Sprachen: reguläre Mengen, reguläre Ausdrücke
(Algebra, EBNF, grep), Syntaxdiagramme
• Endliche Automaten (EA):
reguläre Menge → NEA → DEA → reguläre Menge
• Grammatiken, Chomsky-Hierarchie
• Turingmaschinen
• Grenzen der Berechenbarkeit, (Un)Entscheidbarkeit
• Weiterführende Themen
9
Was sind formale Sprachen?
Formale Sprache: (un)endliche Menge von endlichen Zeichenketten
Beispiele:
Programmiersprachen (C, Java, . . . )
Markup-Sprachen (Html, . . . )
Kommunikationsprotokolle
Terme
prädikatenlogische Formeln
Warum formale Spezifikation?
Referenz für Anwender, Implementierer, Auftragnehmer/geber
Automatische Programmgenerierung: Compilergeneratoren
Formale Verifikation (Korrektheit, Deadlockfreiheit, . . . )
Automatisches Beweisen
Kriterium für Spezifikationsmethode: Endlichkeit
10
Beispiele für Spezifikationsmethoden
Reguläre Ausdrücke:
DOS: dira*.exe
Unix: ^[0-9]+\.[0-9]*(E[+-]?[0-9]+)?$
Syntaxdiagramme:
digit
digit .
ScaleFactor
11
Automaten:
digit
digit q0
q1
q4
+, − digit digit
digit
. digit
E q2
q3
q5
Grammatik:
Satz
→ HwP ZwP
HwP
→ Art Hw
ZwP
→ Hzw HwP Zw
Art
→ der | das
Hw
→ Student | Skriptum
Hzw
→ wird
Zw
→ lesen
12
Grundlagen: Wörter
Alphabet: endliche, nicht-leere Menge atomarer Symbole (Σ, T ).
Wort über Σ: endliche Folge von Symbolen aus Σ.
Länge eines Wortes w über Σ (geschrieben |w|): Anzahl der
Symbole, die w enthält.
Für ein Wort w (über Σ) der Länge n schreiben wir auch
w = a1 a2 . . . an
wobei jedes ai ∈ Σ
Wort mit der Länge 0: Leerwort, geschrieben ε, d.h.
|ε| = 0
13
Konkatenation: Hintereinanderschreiben von Wörtern
Seien x, y Wörter mit |x| = n, |y| = m, dann ist
x · y = xy
|xy| = n + m
Achtung: x · y = y · x
Potenzbildung: Verkettung eines Wortes w mit sich selbst
· . . . · w
wk = w
· w k
w0 = ε
wn = w · wn−1
14
Grundlagen: Sprachen
Σ+ : Menge aller Wörter über Σ.
Σ∗ : Menge aller Wörter (inklusive ε) über Σ.
Formale Sprache: beliebige Teilmenge L von Σ∗
L ⊆ Σ∗
Es gilt:
+
Σn
Σ =
wobei Σn = {s1 · · · sn | si ∈ Σ, 1 ≤ i ≤ n}
n≥1
Σ∗ = Σ+ ∪ {ε}
Σ∗ , ·, ε bildet Monoid.
15
Spezielle Eigenschaften von Wörtern
Für ein Wort w ∈ Σ∗ , wobei w = xuy für Wörter x, u, y ∈ Σ∗ heißt
x Präfix, u Teilwort und y Suffix von w.
Für ein Wort w ∈ Σ∗ und ein Symbol a ∈ Σ bezeichnen wir die
Anzahl der Symbole a in w mit |w|a
Sei w = a1 a2 . . . an−1 an .
Dann ist wr = an an−1 . . . a2 a1 das Spiegelbild von w.
Ein Wort w heißt Palindrom, wenn w = wr gilt.
16
Operationen auf Sprachen
P(Σ∗ ): Menge aller Sprachen L ⊆ Σ∗ .
Konkatenation von Sprachen L1 , L2 :
L1 · L2 = {w1 · w2 | w1 ∈ L1 , w2 ∈ L2 }
Potenzbildung einer Sprache L:
L0 = {ε} und Ln+1 = L · Ln für n ≥ 0.
∗
L =
Ln
n≥0
+
L =
Kleene-Stern“
”
Ln
n≥1
P(Σ∗ ), ·, {ε} bildet Monoid.
17
Rechenregeln für Sprachoperatoren
A · (B · C)
= (A · B) · C
A · (B ∪ C) = A · B ∪ A · C
Assoziativität von·
Distributivität von·
(B ∪ C) · A = B · A ∪ C · A Distributivität von·
(A ∪ {ε})∗
= A∗
{ε} · A = A
(A∗ )∗
= A∗
A · {ε} = A
A · A∗
= A+
{} · A = {}
A∗ · A = A+
A · {} = {}
A+ ∪ {ε} = A∗
P(Σ∗ ), ∪, ·, {}, {ε} bildet nichtkommutativen Semiring.
18
Reguläre Sprachen
• Gebildet durch Vereinigung, Konkatenation und Stern
• Äquivalent: endliche Automaten, reguläre Grammatiken
Anwendungen in der Informatik:
• Compilerbau: Tokens bilden reguläre Sprache, verarbeitet
durch Scanner (Lexer).
Reguläre Ausdrücke dienen als Eingabe für Scannergeneratoren
(lex, flex).
• Texteditoren: erweiterte Suche
• DOS, Unix-Shells, grep, awk, Perl, Xml, . . .
19
Induktive Definition
Gegeben:
Grundmenge A0 ⊆ B,
Bildungsregel f : B n → B
Stufenweise Konstruktion von Mengen:
Ai+1 = Ai ∪ {f (e1 , . . . , em ) | e1 , . . . , em ∈ Ai }
Limes von Ai für i nach unendlich:
A =
Ai
i≥0
Definition. A heißt abgeschlossen unter f , wenn gilt:
x1 , . . . , xn ∈ A ⇒ f (x1 , . . . , xn ) ∈ A
20
Beispiel:
B = N, A0 = {0}, f : N → N,
f (n) = n + 2.
Ai+1 = Ai ∪ {f (n) | Ai ∈ N | }
A = i≥0 Ai (gerade Zahlen)
A0 = {0},
A1 = {0, 2},
A2 = {0, 2, 4},
...
21
Satz.
(a) A ist abgegeschlossen unter f .
(b) Ist A′ abgeschlossen unter f und gilt A0 ⊆ A′ ⊆ B,
dann gilt A ⊆ A′ .
D.h.: A ist die kleinste Menge, die A0 enthält und abgeschlossen ist
unter f .
Schema der induktiven Definition
A ist die kleinste Menge, für die gilt:
(a) A0 ⊆ A
(b) x1 , . . . , xn ∈ A ⇒ f (x1 , . . . , xn ) ∈ A
(A ist abgeschlossen unter f )
22
Definition. Die Menge Lreg (Σ) der regulären Mengen (Sprachen)
über Σ ist die kleinste Menge, sodass
(a) {}, {a} ∈ Lreg (Σ) für alle a ∈ Σ
(b) A, B ∈ Lreg (Σ) ⇒ A ∪ B, A · B, A∗ ∈ Lreg (Σ)
Beispiel. Real-Zahlen
digit
= {0, . . . , 9}
scale
= {E, E+, E−} · digit +
real
= digit + · {.} · digit ∗ · ({ε} ∪ scale)
23
Algebraische Notation
s
statt
{s} für s ∈ Σ
ε
statt
{ε}
∅
statt
{}
∗
L1 + L2
statt
L1 ∪ L2
L1 L2
statt
L1 · L2
L∗
bleibt
L∗
hat die höchste Priorität, + die niedrigste.
Beispiel. Real-Zahlen (algebraisch)
digit
= 0 + ··· + 9
scale
= E (ε + + + −) digit digit ∗
real
= digit digit ∗ . digit ∗ (ε + scale)
24
EBNF-Notation
EBNF
reg. Menge
Kommentar
AB
A·B
Aufeinanderfolge
A|B
A∪B
Alternativen
[A]
{ε} ∪ A
{A}
A∗
Wiederholung
(A)
(A)
Gruppierung
"s"
{s}
s∈Σ
Option
Beispiel. Real-Zahlen (EBNF)
real = digit {digit} "." {digit} [scale]
scale = "E" ["+"|"-"] digit {digit}
digit = "0"|"1"|"2"| · · · |"9"
25
Syntaxdiagramme
Syntaxdiagramm
A
s A
A
A B A
B
A
reg. Menge
EBNF
A
A
{s}
"s"
A+
A{A}
A∗
{A}
A·B
AB
A∪B
A|B
A ∪ {ε}
[A]
26
Beispiel. Real-Zahlen (Syntaxdiagramm)
real
digit
digit .
scale
+
E
digit
27
scale
digit
0
1
..
..
..
.
.
.
9
Reguläre Definitionen
Verwendung von Abkürzungen für reguläre Teilausdrücke.
Erhöht nicht die Ausdruckskraft.
Bessere Strukturierung, bessere Lesbarkeit.
Keine direkte oder indirekte Rekursivität:
digit = {0, . . . , 9},
digits = digit · digits ∪ {ε}
ist nicht zulässig!
28
egrep unter Unix
Ausdruck
selektiert
s
Zeichen s (kein Spezialsymbol)
\s
Zeichen s
.
alle Zeichen außer Zeilenende
^
Zeilenanfang
$
Zeilenende
[s1 · · · sn ]
alle Zeichen in {s1 , . . ., sn }
[^s1 · · · sn ]
alle Zeichen außer {s1 , . . ., sn }
r*
null Mal oder öfter r
r+
ein Mal oder öfter r
r?
null oder ein Mal r
29
Ausdruck
selektiert
r{i}
i Mal r
r{i,}
i Mal oder öfter r
r{i,j}
i bis j Mal r
r1 r2
r1 gefolgt von r2
r1 |r2
r1 oder r2
(r)
r
Beispiel. Real-Zahlen (egrep)
^[0-9]+\.[0-9]*(E[+-]?[0-9]+)?$
30
Herunterladen