• Keine Ergebnisse gefunden

Grundlagen der Informatik

N/A
N/A
Protected

Academic year: 2021

Aktie "Grundlagen der Informatik"

Copied!
31
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Grundlagen der Informatik

[Prof. Hermann, Folien auf K:\Her\Gundlagen Informatik]

Vorgeschichte 1) Kippschalter Zustand: Ein/Aus

Drücken des Schalters: Zustandswechsel 2) Schlüsselwort „then“

Strukturelle Repräsentation

Grammatiken nützlicher Modelle zum Entwurf von Software, die Daten mit einer rekursiven Struktur verarbeiten.

Parser: E ⇒ E + E → kontextfreie Grammatiken

Reguläre Ausdrücke: Struktur von Daten; insbesondere von Text-Zeichenreihen ≡ endliche Automaten Unix-Stil: [A-Z][a-z]*[ ][A-Z][A-Z]

Compilerbau

Ziel: Computer soll eine vorgegebene Aufgabe lösen

1. Programm in einer formalen und maschinenlesbare Sprache 2. Computer erkennen: Formulierung zulässig?

3. Computer erstellt internen Arbeitsplan und Ausführung der Aktionen Formulierung = Theorie der formalen Sprachen

Erkennungsaspekt = Automatentheorie Arbeitsplan + Aktionszeit = Turing Maschine

reguläre Sprachen

lexikalische Analyse Scanner endliche Automaten

kontextfreie Sprachen

syntaktische Analyse Parser, Kellerautomat

semantische Analyse

+ Codegenerierung attributierte Grammatiken

Turing - Maschinen Codeoptimierung

Komplexität Grenzen der Belastbarkeit

- Was können Computer überhaupt leisten? „Entscheidbarkeit“

- Was können Computer effizient leisten? „Handbarkeit“

- Anwachsen des Zeitverbrauches

Aus Ein

Start Zustand

Drücken

Drücken

Start t

t h th e n

the then t

f

Quellprogramm Folge von Token

Ableitungsbau Zielprogramme Optimiertes Programm

(2)

Aussagenlogik

Einfache Verknüpfung wie „und“, „oder“, „nicht“ zwischen atomaren Gebilden.

A = Paris ist die Hauptstadt von Frankreich B = „Mäuse jagen Elefanten“

Von Wahrheitswerten der atomaren Bestandteile → von komplizierten sprachlichen Gebilden z.B. A und B ⇒ A = „Otto wird krank“, B = „Der Arzt verschreibt Otto eine Medizin“

Umgangssprache: „A und B“ ≠ „B und A“

Aussagenlogik: A und B ≡ B und A

Konvention: Alle atomaren Gebilde sind ohne inhaltliche Interpretation durchnummeriert und werden

mit A1, A2,… bezeichnet.

Definition: (Syntax der Aussagenlogik)

Eine atomare Formel hat die Form A, (mit i=1, 2,…) Formeln werden durch folgende induktiven Prozess definiert 1. Alle atomare Formeln sind Formeln

2. Für alle Formeln F und G sind (F v G) [Konjunktion], (F w G) [Disjunktion] Formeln 3. Für jede Formel F ist ┐F [Negation] eine Formel

Eine Formel F, die als Teil einer Formel G auftritt, heißt Teilformel von G

Beispiel: F = ┐((A5 v A6) w A3) ist eine Formel und sämtliche Teilformeln von F F, ((A5 v A6) w A3), A5 v A6, A6, A5, A3

Abkürzung

A, B, C statt A1, A2,…

(F1 → F2) statt (┐F1 w F2)

(F1 ↔F2) statt (F1 v F2) v (┐F1 v ┐F2) Definition (Semantik der Aussagenlogik)

Die Elemente der Menge {0,1} heißen Wahrheitswerte. Eine Belegung ist eine Funktion A: D→{0,1}, wobei D eine Teilmenge der atomaren Formeln ist. Wir erweitern A zu einer Funktion Ā:E→{0,1}, wobei E ⊇ D die Menge aller Formeln, die nur aus den atomaren Formeln in D aufgebaut sind.

1. Für jede atomare Formel A 0 D ist Ā(A) = A(A) 2. Ā((F v G)) = { 1, falls Ā(F) = 1 und Ā (G) = 1

0, sonst

3. Ā((F w G)) = { 1, falls Ā(F) = 1 oder Ā(G) = 1 0, sonst

4. Ā(┐F) = { 1, falls Ā(F) = 0 0, sonst

Ā = A

Beispiel: Es sei Ā(A) = 1, A(B) = 1, A(C) = 0

A(┐((A v B) w C)) = { 1, falls A((A v B) w C) = 0 0, sonst

= { 0, falls A((A v B) w C) = 1 1, sonst

= { 0, falls A((A v B)) = 1 oder A(C) = 1 1, sonst

= { 0, falls A((A v B)) = 1 1, sonst

= { 0, falls A((A)) = 1 und A(B) = 1 = 0 1, sonst

(3)

Wirkung der Operatoren v, w, ┐ist durch Wahrheitstafeln darstellbar für Formeln F v G

v = „und“

für Formeln F w G

w = „oder“

für Formeln ┐F

┐ = „nicht“

Beispiel:

Definition: (Modell, erfüllbar, Tautologie)

Es sei F eine Formel und A eine Belegung. Falls A für alle in F vorkommenden atomaren Formeln definiert ist, so heißt A zu F passend. Falls A zu F passend ist und A(F) = 1, so ist A ein Model für F. Eine Formel F heißt erfüllbar, falls F mindestens ein Model besitzt, andernfalls heißt F unerfüllbar.

Eine Formel heißt Tautologie, falls jede zu F passende Belegung ein Modell für F ist.

Satz: Die Formeln (p w ┐p) ist eine Tautologie

Beweis: Jede passende Belegung A Beweis: Es sei A eine beliebige passende Belegung A((p w ┐p)) = 1

A((p w ┐p)) = 1, falls A(p) = 1, oder A(┐p) = 1 Fall 1: A(p) = 0 ⇒ A(┐p)=1 ⇒ A(p w ┐p) = 1 Fall 2: A(p) = 1 ⇒ A(p w ┐p) = 1

Satz: Die Formel (p v ┐p) ist unerfüllbar Beweis: Es sei A eine passende Belegung, beliebig A((p v ┐p)) { 1, falls A(p) =1 und A(┐p) = 1

0, sonst

Fall 1: A(p) = 1 ⇒ A(┐p) = 0 ⇒ A((p v ┐p)) = 0 Fall 2: A(p) = 0 ⇒ A(┐p) = 1 ⇒ A((p v ┐p)) = 0 A(F) A(G) A(F v G)

0 0 0

0 1 0

1 0 0

1 1 1

A(F) A(G) A(F w G)

0 0 0

0 1 1

1 0 1

1 1 1

A(F) A(┐F)

0 1

1 0

A(F) A(G) A(F→G) = A((┐F w G)

0 0 1

0 1 1

1 0 0

1 1 1

A(F) A(G) A(F↔G) = A((F v G) w ( ┐F v ┐ G)

0 0 1

0 1 0

1 0 0

1 1 1

A(p) A(p w ┐p)

0 1

1 1

A(p) A(p v ┐p)

0 0

1 0

(4)

Satz: Eine Formel F ist eine Tautologie genau dann, wenn ┐F unerfüllbar ist.

Beweis: Es gilt F ist eine Tautologie

⇔ jede zu F passende Belegung ist ein Modell für F.

⇔ jede zu F (und damit auch ┐F) passende Belegung ist kein Modell für F.

⇔ ┐F besitzt kein Modell ⇔ ┐F ist unerfüllbar (w.z.b.w.)

Übergang von F zu ┐F (bzw. Von ┐F zu F) kann durch folgendes „Spiegelungsprinzip“ Veranschaulicht werden.

Fazit: Für die Erfüllbarkeit einer Formel F genügt es, nur die endlich vielen Belegungen zu testen, die genau auf den in F vorkommenden atomaren Formeln definiert sind.

Algorithmus zur Erfüllbarkeit von Formeln

Gegeben: Formel F besteht aus n atomaren Formeln

1. Erstellung aller 2n möglichen Belegungen für die n-atomaren Formeln 2. Ermittlung des Wahrheitswertes von F für jede dieser Belegung

3. Ist einer dieser Wahrheitswerte 1, so gebe „F ist erfüllbar“ aus, andernfalls gebe „F ist nicht erfüllbar“ aus.

Beispiel: F = (┐A → (A → B)) Tautologie?

Erweitern der Formeln um Quantoren (œ, ›),und damit Variablen, Funktionssymbole und Prädikatensymbole ≡ Prädikatenlogik 1. Stufe

Beweisarten

Deduktive Beweise

→ Folgen von Aussagen, die entweder als Wahr gegeben sind, oder logisch aus vorangegangenen Aussagen folgen.

Üblich zu beweisende Aussageform - „wenn dann“ – Aussage wenn (etwas), dann (etwas anderes) Aussagelogik H → K Hypothese Kontusion

Deduktiven-Prinzip-Folge startet mit der Hypothese und ist beendet, wenn die Kontusion (erreicht) abgeleitet wurde.

((H → K) v H) → K = Tautologie

„Genau dann wenn“ – Aussage (etwas) genau dann, wenn (etwas anderes) Tautologien Erfüllbare Formeln

Aber keine Tautologie

Unerfüllbare Formeln

A B ┐A A → B F

0 0 1 1 1

0 1 1 1 1

1 0 0 0 1

1 1 0 1 1

(5)

N Beweis durch Umkehrung

Statt: „wenn H, dann K“ beweise „wenn nicht K, dann nicht H“

Beweis: H → K ⇔ ┐K → ┐H ist zu beweisen, über:

- Wahrheitstafel

- Umformung (deduktive Beweise)

H → K ⇔ ┐H w K ⇔ ┐K w H ⇔ ┐K → ┐H (w. z. b. w.) Beispiel: Wenn X ≥ 4, dann 2x ≥ x2

Umkehrung: Wenn nicht 2x ≥ x2, dann nicht x ≥ 4

Beweis durch Widerspruch

Statt: „wenn H, dann K“ beweise „H und nicht K impliziert Falschheit“

Beweis: H → K ⇔ H v ┐K → falsch

H → K ⇔ ┐H w K ⇔ ┐(H v ┐K) ⇔ ┐(H v ┐K) w falsch H v ┐K → (w. z. b. w.)

Beweis durch Gegenbeweis

Beispielsweise: Angeblicher Satz: Alle Primzahlen sind ungerade Gegenbeispiel: 2 ist eine Primzahl und 2 ist gerade

Induktive Beweise (Vorraussetzung: rekursive definierte Objekte)

Induktive Beweise mit natürlichen Zahlen

Bewiesen werde die Aussage S(n) für eine ganze Zahl n.

Induktionsanfang: Zeige S(i) gilt für eine bestimmte ganze Zahl i, [i=0; i=1]

Induktionsschritt: Für n ≥ i (i aus Induktionsanfang), wenn S(n), dann S(n+1) n

Beispiel: ∀ n ≥ 0 ∑ i = n (n+1)

i=1 i

n Induktionsbeginn: n = 0 ∑ i = 0

i=1

n

Induktionsschritt: (n → n+1). Es gilt ∑ i = (n (n+1)) behaupte:

i=1 2

n+1 n+1 n

∑ i = (n+1)(n+2) ⇒ ∑ i = ∑ i + (n+1) = n(n+1) + (n+1)

i=1 2 i=1 i=1 2

= n(n+1)+2(n+1) = (n+2)(n+1) (w. z. b. w.)

2 2

Strukturelle Induktion: verschiedene rekursiv definierte Strukturen Wichtige Beispiele: Bäume und Ausdrücke

T1 T2 Tk

Definition: (Bäume)

Induktionsbeginn: Ein einzelner Knoten ist ein Baum und dieser Knoten ist die Wurzel des Baumes Induktionsschritt: Wenn T1, T2,.. Tk Bäume sind, dann kann ein neuer Baum gebildet werden.

1. Starte mit neuen Knoten N, N = Wurzel des Baumes 2. Füge Kopien aller Bäume T1,... Tk hinzu

3. Füge Kanten von Knoten n zu den Wurzeln der einzelnen Bäume T1,T2,...Tk hinzu

(6)

Definition: (+, *) = Ausdruck

Induktionsanfang: Jede Zahl oder Buchstabe (also eine Variable) ist ein Ausdruck

Induktionsschritt: Wenn E und F Ausdrücke sind, dann sind auch E+F, E*F, € Ausdrücke.

Beispiel: 2 und x = Ausdruck: x+2, 2+x, (2+x)+2

Satz: Jeder Baum besitzt genau einen Knoten mehr als Kanten

Beweis: formale Aussage: S(T), wenn T ein Baum ist und n-Knoten und e-Kanten, dann gilt: n = e+1 Induktionsanfang: T ist ein Baum aus einem Wurzelknoten N und K kleinen Bäumen T1, …Tk; (Anzahl Knoten (T) > 1)

Es gelten: S(Ti): Wenn Ti ni = Knoten und e-Kanten: ni = ei+1

Knoten von T: Knoten N und der Knoten von T1, T2, ...Tk

T hat Knoten (T) = 1 + n1 + n2 + n3 +...nk

Kanten von T: Knoten von T1, T2, …Tk plus k Kanten von N zu den Bäumen T1, T2, … Tk

Kanten (T) = k + e1 + e2 + e3 + … ek

Ersetze n durch ei+1: Knoten (T) = 1+(e1+1)+(e2+1)+…+(en+1) = k+1+e1+e2+e3+…+ek

= Kanten (T) +1 (w. z. b. w.)

Beweisprinzip der strukturellen Induktion

Vorraussetzung: Induktive Definition einer Struktur x und Aussage S(x) Induktionsanfang: S(x) für die Basisstrukturen von x bewiesen wird Induktionsschritt: Struktur x aus Teilstrukturen y1, y2, …yk definiert ist.

Wenn S(y1), S(y2), S(yk) gilt, dann ist zu beweisen S(x) gilt.

Behauptung: für eine Formel F

Induktionsanfang: Beweis für atomare Formeln

Induktionsschritt: Behauptung gilt für die Formeln F und G Beweis: Behauptung gilt für F w G, F v G, ┐F

Handelt es sich bei folgenden Gebilden um Bäume?

1) (a+a)*2+3 1) ja

2) a+(a)*2+(3

2) nein ja, Kopie des Knotens, mit anderen verbinden

(7)

Arbeitsweise von Automaten / Programme zu beweisen

Gruppen von Aussagen, die die Zustände beschreiben: S1(n), S2(n),..Sk(n)

⇒ S1(n) v S2(n) v … v Sk(n)

gegenseitige Induktion über n

S1(n) = Der Automat befindet sich nach n-maligen drücken genau dann im Zustand aus, wenn n gerade ist.

S2(n) = Der Automat befindet sich nach n-maligen drücken genau im Zustand ein, wenn n-ungerade ist.

Fall:

1) [S1 ⇐] 0 ist eine gerade Zahl, zeigen nach 0-maligen drücken ist der Automat im Zustand „aus“, da

„aus“ der Startzustand ist.

2) [S1 ⇒] Der Automat ist nach 0-maligen drücken im Zustand „aus“. Zeige 0 ist gerade 3) [S2 ⇐] Hypothese: 0 ist eine ungerade Zahl. [H→K]. Hypothese ist falsch

4) [S2 ⇒] Hypothese: Automat ist nach 0-maligen drücken im Zustand „ein“. Hypothese falsch.

Induktionsschritt: Annahme: S1(n) und S2(n) sind wahr: Zeige S1(n+1) und S2(n+1) sind wahr.

1) [S1 ⇐] (n+1) ist gerade ⇒ n ist ungerade, wenn Teil S2(n): nach n-maligen drücken im Zustand „ein“

2) [S1 ⇒] Automat ist nach n+1 maligen drücken im Zustand „aus“

⇒ Nach n-maligen drücken im Zustand „ein“ gewesen sein

„⇒“ von S2(n):n ist ungerade ⇒ (n+1) ist gerade

3) [S2(n+1) ⇐] Vertausche die Rollen S1 und S2 sowie „gerade“ und „ungerade“

4) [S2(n+1) ⇒] wie bei 3.

Formale Sprachen

Ansatz:

- Menge von syntaktischen Regeln

- Vorschrift wie aus Regeln Programme gebildet werden

- Definieren einer Semantik, die von Computer verstanden wird) Definition: (Alphabet, Wort, Sprache)

Ein Alphabet ist eine endliche, nicht leere Menge von Zeichen. Es sei V ein Alphabet und k ∈ ù (natürliche Zahlen) (ù = {0,1…}. Endliche Folgen (x1, x2,... xk) mit xi ∈ V (i=1,...ik) heißen Wörter über V der Länge k.

Das Wort der Länge 0 wird mit ∈

ε

(Epsilon) bezeichnet. Die Länge eines Wortes x wird durch |x| dargestellt.

Für eine Menge M bezeichnet |M| die Mächtigkeit von M. V* bezeichnet die Menge aller Wörter V.

V* = V*\{

ε

}. Jede beliebige Teilmenge von V* wird als Sprache (L) bezeichnet. Die Menge der Wörter über V mit der Länge n ist Vn = {x ∈ V*, |x| = n} für n ∈ ù.

Bemerkung: |

ε

| = 0; (w und v sind Worte) |wv| = |w| + |v|; |wn| = n*|w|; wobei wn = www…w = n-mal.

Definition: (Verkettung)

Es sei V ein Alphabet. Die Verkettung () von Wörtern x,y ∈ V* ergibt ein neues Wort: x  y = xy = x1….xk y1….yk (xi,yi ∈V)

x,y ∈ V* ⇒ x  y ∈ V* (Abgeschlossenheit) (x  y)  z = x  (y  z) = xyz (Assoziativität)

(

ε

 x) = x 

ε

= x (

ε

ist ein neutrales Element)

Aus Ein

Start Zustand

Drücken

Drücken

(8)

Beispiele:

1. V = {0, 1}, V* = {ε, 0,1,001,10,0001,…}

L = {0, 1, 10, 11,100} ist eine Sprache über V

2. V = {0,1…9} natürliche Zahlen wie 30714 in Dezimalschreibweise Definition: Es sei A, B Teilmengen von V* (also Sprachen) dann definieren wir:

ƒ AcB = {x, x ∈ A oder x ∈ B} (Vereinigung)

ƒ A1B = {x, x ∈ A und x ∈ B} (Schnittmenge)

ƒ A\B = {x, x ∈ A und x ó B} (Differenzmengemenge)

ƒ Ā = V* \ A (V ohne A) (Komplementmenge)

ƒ AB = {xy, x ∈ A und y ∈ B} (Produktmenge)

Es sei ÷ (deutsch C) eine Klasse von Mengen (Sprachen), dann heißt ÷ abgeschlossen gegenüber Schnitt, Vereinigung, Komplement, Produkt falls A ∈ ÷ und B ∈ ÷ folgt AcB, A1B, Ā, AB ist ∈ ÷

_ _ _ _ Beachte: AcB = A 1 B und A1B = A 1 B

Jede Klasse, die gegen Komplement und Schnitt abgeschlossen ist, ist immer auch gegen Vereinigung abgeschlossen.

Definition: Für eine Sprache A setzen wir AE = {

ε

} und An+1 = AnA Es gilt: AiAj = Ai+j; A* = cAn; A*= cAn; (Ai)j = Aij

n≥0 n≥1

Definition: (Relation R)

Eine 2-stellige Relation R auf eine Grundmenge V ist definiert durch eine Menge Paaren (x,y) von Elementen aus V. R ⊆ V X V

Definition: Es seien R,S zweistellige Relationen auf V* (also R, S ⊂ V*X V*) RS = {(x,y); es gibt ein z mit xRz und zSy}

Für eine Relation R: RE = {(x,x), xRx} und Rn+1=RRn Damit Rx = c Rn, Ry = cRn

n≥0 n≥1

xRxy bedeutet x=y, es gibt z1, z2,.., zn für x ≥ 1 dann gilt xRz1; z1Rz2,…Zn-1 Rzn, ZnRy Definition: Eine Relation R ⊆ V*X V* heißt rekursiv, wenn für alle x ∈V* gilt xRx

Sie heißt transitiv, falls aus xRy und yRz (für x,y,z∈V*) gilt xRz Sie heißt symmetrisch, falls mit xRy (für x,y∈V*) gilt yRx

Satz: R* ist die kleinste reflexive und transitive Relation, die R umfasst.

(die reflexive und transitive Hülle von R) R* ist die kleinste transitive Relation, die R umfasst.

Beispiele: Wörter; Sprachen

(a) V = {a,b,c…z}

→ Sprache

Wörter über V = V

*

= Wortschatz einer natürlichen Sprache (Deutsch: Duden)

= {V

1

,…,V

n

,… } = V

1

Wörter über V

1

→ Sätze einer Sprache (deutsche Sprache)

2 Betrachtungsebenen: Von Buchstaben über Worte zu Sätzen.

(9)

(b) Programmiersprachen V = ASCII, V = EBCDIC

1. Wörter über V→ Eingabezeichen eines Compilers

z.B. C: 5 Sorten von Eingabesymbolen, Schlüsselworte, Bezeichner, Literale, Operatoren und Begrenzer

Kompilieren im 1.Schritt: einzelne Eingabesymbole erkennen

z.B. while – Schlüsselwort

whilex – Bezeichner 2. V = { Eingabesymbole einer Programmiersprache }

Sprache = Programmiersprache = Menge aller endlichen Folgen von Eingabesymbolen die ein korrektes Programm darstellen.

2 Betrachtungsebenen: Buchstaben→Eingabesymbole→Programme einer Programmiersprache

z.B. C: while (x3<100) x3++;

Problem: Automatentheorie

Ist ein gegebenes Wort Element einer Sprache?

Es sei V ein Alphabet und L eine Sprache über V.

Dann lautet das Problem zu L: Gegeben sei ein Wort x

V

*. Entscheiden Sie, ob x in L enthalten ist oder nicht.

Beispiel: Parser eines C-Compilers

Lc = Menge der gültigen C-Programme

⇒ Problem P ∈ Lc ? ASCII – Zeichenreihe P sei gegeben

Klassen von unendlichen Sprachen

Definition: Es sei

ƒ:A→B, b∈ B ƒ-1

(b) = {a

∈ A, ƒ(a)=b} ist die Menge der Urbilder von b.

Eine Funktion

ƒ heißt:

injektiv, wenn | ƒ

-1(b)

| ≤ 1

surjektiv, wenn | ƒ

-1(b)

| ≥ 1

bijektiv, wenn | ƒ

-1(b)

| = 1

Definition: Eine Menge M ist abzählbar, falls es eine Funktion gibt ƒ:ù→M, die surjektiv ist,

oder falls M=∅.

Bemerkung: Sind M und ù gleich mächtig, so wird M auch abzählbar unendlich genannt.

Sprachen sind Mengen, abzählbare Sprachen.

Beispiel: Die Menge der Zweierpotenzen ist abzählbar.

Beweis:

ù

M ƒ:ù→M zeige:

ƒ ist surjektiv für ein beliebiges b ∈ M. |ƒ-1

(b)| ≥ 1

0 → 1 = 20

n→2

n

b

∈ M ⇒ › m mit b = 2m

1 → 2 = 21

und

ƒ-1

(b) = m

⇒ |ƒ-1

(b)| =1 ≥ 1

2 → 4 = 22

(10)

Satz: Jede endliche Menge ist abzählbar.

Satz: Die Menge der rationalen Zahlen ist abzählbar.

Beweis: 1. Cantorsche Diagonalverfahren (Georg Cantor 1845-1918)

Jede rationale Zahl lässt sich durch einen Bruch darstellen. p/q mit p und q ∈ Ζ 0 → 1 → - 1 2 → -2 - 3 ……..

1 1 1 1 1 1 - 1 2

2 2 2

1 - 1 3 3

1 4

- alle rationalen Zahlen kommen in dem Schema vor

- jede rationale Zahl wird auf dem Weg genau einmal getroffen - jeder Schritt des Weges hat eine Nummer

-

ƒ(i) = rationale Zahl nach den i-ten Schritt des Weges

-

ƒ ist surjektiv p/q mit p und q ∈ Ζ |ƒ-1

(

p/q

)| ≥ 1

Satz: Die Menge der reellen Zahlen ist nicht abzählbar.

Beweis: - Betrachte die reellen Zahlen zwischen 0 und 1.

Indirekter Beweis: Menge der reellen Zahlen zwischen 0 und 1 ist abzählbar Folge der reellen Zahlen r

1

,r

2

,r

3

zwischen 0 u. 1

Jede diese reellen Zahlen r

j

bekommt ein Intervall ij zugeordnet mit der Länge 1 . Alle ij (j ≥ 1) sind im Intervall von 0 bis 1.

10

j

- Die reellen Zahlen zwischen 0 und 1 decken das Einheitsintervall vollständig ab.

- Die Intervalle i

1

, i

2

,… decken das Einheitsintervall mit Überschneidungen ebenfalls vollständig ab.

a

S = Σ 1 es muss gelten: [S≥1]

i=1 10j

laut Formelsammlung: Geometrische Reihe: a

Σ qk-1 = a mit

|q| < 1

k=1 1-q

1

Hier: a = 1; q=1; S = 1 * Σ * 1 = 10 = 1 ⇒ < 1 Widerspruch 10 10 10 j=1 10j-1 1-1 9 nicht abzählbar

10

Abzählbare Sprachen Aufzählbahre Sprachen

Entscheidbare Sprache

(11)

Satz: Menge V* aller Wörter über einem Alphabet V ist abzählbar.

Beweis: ù {a, b}* a << b

0 → ε lexikographische Ordnung 1 → a

2 → b 3 → aa 4 → ab 5 → ba 6 → bb

• V = {x1,...xn}, Ordnungsrelation „<<“ auf V, Beschränkung der Allgemeinheit x1<<x2<<…<<xn

• Ordne die Menge der Wörter über V*

• Alle Wörter der Länge 0

• Alle Wörter der Länge 1

• Alle Wörter der Länge 2

• u.s.w.

• Wörter gleicher Länge werden lexikographisch geordnet

→ Reihenfolge der Wörter über V* (w.z.b.w.)

Satz: Jede Teilmenge einer abzählbaren Sprache M ist abzählbar.

ù M ù M ƒ

ƒ

ƒ´ ƒ´

∀ b ∈ M’ zeige Ζ |ƒ`-1(b)| ≥ 1, |ƒ`-1(b) | ≥ 1 |ƒ-1(b) | ≥ 1 (w.z.b.w.) Folgerung: Jede Sprache L ist abzählbar

Definition: Ein Algorithmus ist eine endliche Menge Wohldefinierter Regeln, mit der Eingabe auf einer vorgegebenen Menge schrittweise in eine Ausgabe in einer bestimmten Form transferiert werden.

Definition: (Abzählbarkeit)

Eine Menge M ist aufzählbar, fall es eine surjektive Funktion ƒ: ù→M gibt und ein Algorithmus, der es gestattet für jedes n aus natürlichen Zahlen den Wert ƒ(n) zu berechnen, oder falls M = ∅.

Die Menge {ƒ(0), ƒ(1), ƒ(2),…} heißt Aufzählung von M. Entsprechend von Aufzählbahren Sprachen sprechen.

Satz: Jede endliche Menge ist aufzählbar.

M = {m1, m2,… mn} ƒ(i) = mi ; 1 ≤ i ≤ n m1 ; sonst

if (i==1) return mi; if(i==n-1) return m-1; if(i==n) return mn; if(i>n) return m1; Satz: Es sei V ein Alphabet. Die Menge V* aller Wörter über V ist aufzählbar.

Beweis: - Betrachte die Aufzählung; „<<“ als Ordnungsrelation auf V - Erzeuge ε

- Erzeuge die Wörter der Länge 1 in lexikalischer Reihenfolge

- Erzeuge die Wörter der Länge 2 in lexikalischer Reihenfolge ⊗ - …

⇒ Für ein beliebiges n ist ƒ(n) der n-te Schnitt dieser Aufzählung.

Nach ⊗ existiert ein Algorithmus für ƒ(n).

M’ M’

ƒ(n); falls ƒ(n) ∈ M’

ƒ´(n) = w mit w ∈ M’, falls

beliebig ƒ(n) ∉ M’

(12)

Satz: Es gibt nicht aufzählbare Sprachen Beweis: Schöning (Literatur nachschlagen!)

Algorithmen, die nach endlich vielen Schritten eine Antwort liefern.

Definition: Gegeben sei ein Alphabet V. Eine Sprache L ⊆ V* heißt entscheidbar, falls es einen Abbrechbahren Algorithmus gibt (Entscheidungsverfahren), der für jedes w ∈ V* feststellt ob w ∈ L oder w ∉ L ist.

Beispiel: V = {a}, L = {a2n; n ∈ ù} Entscheidbar?

z.B. w = aaaaa ⇒ |w| ist ungerade über a2n aber w ∉ L ⇒ Entscheidbar Satz: Jede entscheidbare Sprache ist aufzählbar.

V ist ein Alphabet. L ⊆ V* ist entscheidbar. Zähle V* auf. Entscheide nach dem Entscheidungsverfahren für jedes erzeugte w. w ∈ L oder w ∉ L. Nehme w in Aufzählung auf, wenn w ∈ L.

Satz: Nicht jede Aufzählbare Sprache ist entscheidbar.

Beweis: Computerprogramme als Sprache zu dem Alphabet ASCII L ⊆ ASSCII*

L {xy, x ist ein Programm, y ist eine Eingabe und x stoppt bei Eingabe von y nach endlich vielen Schritten}

Halteproblem: aufzählbar, aber nicht entscheidbar Beweis: Schöning (Literatur nachschlagen)

Testsoftware: Automatische Programmverifikation kann es nicht geben.

Automatische Programmverifikation für Teilproblemklassen.

Computerprogramme: Sprache über ein Alphabet Abzählbar viele

Computerprogramme = nur abzählbar viele Probleme, die von Computer gelöst werden können.

Satz: Es gibt überabzählbare viele Probleme

∀ r ∈ ú def. ƒr(x) = 1, falls x = r

0, sonst Da ú überabzählbar ist ⇒ {ƒr; r ∈ ú} ist überabzählbar Betrachte die Größenordnung aller Computerprogramme

Satz: Der Anteil der rationalen Zahlen an den reellen ist verschwindet klein.

Intervall setzen mit ε für das k-te Intervall. S = Σ ε = ε 10k k=1 10k 9

Die abzählbare Menge der rationalen Zahlen des Einheitenintervalls kann in einer Menge von Intervallen der Länge ε eingeschlossen werden. Während die reellen Zahlen des Einheitenintervalls 9

eine Länge von 1 haben.

Lim ε = 0 ε→0 9

(13)

Grammatiken

Satz→Subjekt, Prädikat, Objekt Satz

Subjekt→Artikel, Substantiv

Artikel→Der Subjekt Prädikat Objekt

Substantiv→Junge, Ball

Objekt→Artikel, Substantiv Artikel Substantiv Verb Artikel Substantiv Prädikat→Verb

Verb→wirft Der Junge wirft den Ball

Artikel→den Der Ball wirft den Jungen

Definition: (Grammatik)

Eine Grammatik ist ein Quadrupel G=(VN, VT, P, S) mit

1) VN, VT sind endliche nicht leere Mengen mit NV ∩ VT = ∅. VN ist die Menge der Variablen (nicht terminalen Symbole). VT ist die Menge der terminalen Symbole.

2) P ist eine endliche Menge von Regeln der Form: α→β mit α∈ (VN ∪ VT)+ , β∈ (VN ∪ VT)* Die Elemente von P heißen Produktionen, Regeln.

3) S ∈ VN ist das Startsymbol Abkürzung: α→β12…βn für α→β1; α→β2,…, α→βn

Beispiel: Bezeichner für Programmiersprachen G = {VN, VT, P, S}

Bezeichner

VN = {Bezeichner, Bez Rest, Buchstaben, Ziffer}, VT = {A,B,..Z,a,b,..z,_,0,…9}, S = Bezeichner P = { Bezeichner→Buchstabe|_|Buchstabe Bez Rest|_ Bez Rest

Bez Rest→Buchstabe Bez Rest|_ Bez Rest|Ziffer Bez Rest|Buchstabe|_|Ziffer Buchstabe→A|…|Z|a|…|z

Ziffer→0|…|9 }

Beispiel: Wort: x = abbA Aaa und Regel: bA→Bab, ersetze „bA“ in x durch „Bab“

Definition: Seien G = (VN, VT, P, S), V = VN ∪ VT und x,y ∈V*

Anwendung einer Grammatikregel: x⇒y: ⇔ γαδ, y = γβδ und α→β ∈ P mit α ∈V+, γβδ ∈V*

„x führt unmittelbar zu y“

z.B. ⇒ x = aB bA Aaa ⇒ aB Bab Aaa γ α δ γ β δ Anwendung mehrerer Grammatikregeln nacheinander

x ⇒* y ⇔ Es existiert eine endliche Folge (w0,w1,…wn), so dass x=wo und wn=y, wi-1 ⇒ wi (1 ≤ i ≤ n) Die Folge heißt Ableitung von y aus x.

Nachweis: _3xy ist aus obigen Grammatik ableitbar.

Bezeichner→_Bez Rest→_Ziffer Bez Rest→_Ziffer Buchstabe Bez Rest _Ziffer Buchstabe Bez Rest→_Ziffer Buchstabe Buchstabe Bez Rest→_3xy

Definition: Die von eine Grammatik G = (VN, VT, P, S) erzeugte Sprache: L(G) = {x ∈VT*; S⇒*x}

Definition: Zwei Grammatiken G1 und G2 heißen äquivalent, falls gilt L(G1) = L(G2) Beispiel: 1) G1 = (VN, VT, P, S) mit VN = {S}, VT = {0} und P1 = {S→0S, S→0}

S ⇒ 0S ⇒ 00S ⇒ 0n-1 S ⇒ 0n, L(G1) = {0n; n ≥ 1}

2) G2 = (VN, VT, P, S) mit VN = {S}, VT = {0,1} und P2 = {S→0S1, S→01}

L(G2) = {0n1n; n ≥ 1}

(14)

3) G3 = (VN, VT, P, S) mit VN = {S, B, C}, VT = {0,1,2}

und P3 = {S→0SBC, S→0BC, CB→BC, 0B→01, 1B→11, 1C→12, 2C→22}

Beispiel: S ⇒ 0SBC ⇒ 00SBCBC ⇒ …0n-1 S(BC)n-1 ⇒ 0n(BC)n

z.B. n=3 ⇒ 000BCBCBC ⇒ 000BBCCBC ⇒ 000BBCBCC ⇒ 000BBBCCC ⇒ 0nBnCn z.B. n=3 ⇒ 000BBBCCC ⇒ 0001BBCCC ⇒ 00011BCCC ⇒ 000111CCC ⇒ 0n1ncn z.B. n=3 ⇒ 000111ccc ⇒ 0001112cc ⇒ 00011122c ⇒ 000111222 ⇒ 0n1n2n

⇒ L(G3) = {0n1n2n; n ≥1}

Beweis: „⊇“ Teilmenge → S ⊇ L(G3) durch herleiten bewiesen (s.o.)

„⊆“ Balance → Nach jedem Ableitungsschritt ist die Anzahl der 0en gleich der Anzahl der 1en (bzw. der B’s) gleich der Anzahl der 2en (bzw. C’s)

Reihenfolge der Terminalsymbole ∃ x ∈ L(G3) gilt die 0en in x kommen vor den 1en in x und diese vor den 2en in x. Damit ist bewiesen das L(G3) = {0n1n2n; n ≥1}.

Nichtdeterminismus ⇒ Relation, keine Funktion

x ∈ (VN ∪ VT)*,mehrere x’ mit x ⇒ x’ (endlich viele x’) Graphische Darstellung der Ableitung S

… …

Blätter des Baumes = Wörter der erzeugten Sprache Definition: (Chomsky-Hierarchie)

Es sei G = (VN, VT, P, S) und V = VN ∪ VT. Dann ist G vom:

Typ 0 falls keine Einschränkungen vorliegen.

Typ 1 (oder kontextsensitiv) falls jede Regel die Form α12 hat, wobei A ∈VN; α1,α2 ∈V* mit einer Ausnahme: S→

ε

, dann darf S aber in keiner rechten Seite einer Regel vorkommen.

Typ 2 (oder kontextfrei), falls jede Regel die Forma A→β, wobei A ∈ VN, β ∈ V+ mit derselben Ausnahmeregelung wie bei Typ 1

Typ 3 (oder regulär), falls jede Regel die Forma A→aB oder A→a hat, wobei A, B ∈ VN, a ∈ VT mit derselben Ausnahmeregelung wie bei Typ 1

Graphisch: Länge Länge

Typ 0: n Typ 1: n

1 1

Ableitungs- Ableitungs-

Schritte Schritte

Reguläre Grammatiken

Rechtslinear: wie oben definiert

Linkslinear: Regeln haben die Form A→Ba, A→a mit A, B ∈ VN, a ∈ VT

Definition: (Typ einer Sprache)

Eine Sprache L ist von Typ i (0 ≤ i ≤ 3) falls eine Grammatik existiert, die den Typ i hat und es gilt L =L(G)

Satz: Wenn 0 ≤ i ≤ j ≤ 3 und G(bzw. L) ist vom Typ j, dann auch vom Typ i

(15)

G Bezeichner ist kontextfrei, aber nicht regulär

Neue Regeln: Bezeichner →A|…|Z| a|…| z| A Bez Rest|...|Z Bez Rest a Bez Rest|…|z Bez Rest|_ Bez Rest

Bez Rest → A|…|Z| a|…|z|_|0|…|…|9|A Bez Rest|...|Z Bez Rest

a Bez Rest|…|z Bez Rest|_ Bez Rest| 0 Bez Rest|…|9 Bez Rest P1 = {S→0S, S→0}; L(G1) = {0n; n≥1} ist regulär

P2 = {S→0S1, S→01} ist kontextfrei, aber nicht regulär

P3 = {S→0SBC, S→0BC, CB→BC, 0B→01, 1B→11, 1C→12, 2C→22} mit L(G3) = {0n1n2n; n ≥1} ist vom Typ 0 wegen der Regel CB→BC wird durch CX→BX und BX→BC (wobei x eine Variable ist) ersetzt. Damit ist G3 kontextsensitiv. L(G3) ist vom Typ 1, aber nicht vom Typ 2. (Beweis später!)

Wegen der Forderung |w1| ≤ |w2| kann das leere Wort ε bei Typ 1,2,3 Grammatiken nicht abgeleitet werden.

Aufgabe: Erweiterung um ε ∈ L(G) Typ 0: Hinzunahme von S → ε

Typ 1 / Typ 2: G = (VN, VT, P, S). Setze VN’ = VN ∪ {S’} mit S’ ∉ VN ∪ VT und

P’ = P ∪ {S’ → S, S → ε}. G’ ist vom Typ 1 oder 2 und L(G’) = L(G) ∪ {ε}.

Typ 3: G = (VN, VT, P, S) mit ε ∉ L(G), G’ = (VN’, VT’, P’, S’) durch VN’ ∪ {S’} mit S’ ∉ VN ∪ VT P’ = P ∪ {S’ → α| S → α ∈ P} ∪ {S’ → ε}, G’ ist vom Typ 3 und L(G’) = L(G) ∪ {ε}.

Beispiel: G = (VN, VT, P, S) mit VN = {S}, VT = {0} und P {S → 0S, S → 0}

ε ∉ L(G) ⇒ G’ = (VN’, VT’, P’, S’) mit VN’ = {S’,S} und P’ = {S’→ ε| 0S| 0, S → 0S|0}

L(G’) = {0n; n ≥0} (leeres Wort möglich!) Mengendiagramm

Satz: Zwischen den 4 Sprachklassen vom Typ i (0 ≤ i ≤ 3) besteht eine echte Hierarchie, die Chomsky-Hierarchie

Beweis: s.o. (teilweise, Rest Später)

L’’ = {xy, x ist ein Programm, y ist eine Eingabe und x stoppt bei der Eingabe von y nach endlich vielen Schritten }

ist vom Typ 0 aber nicht vom Typ 1. (Beweis später) Satz: Jede Sprache vom Typ 0 ist aufzählbar.

Beweis: L vom Typ 0, G = (VN, VT, P, S) mit L=L(G). Es sei w ∈ L(G) dann ∃ n mit S ⇒nw (x nach der Definition von L(G)).

Setze ƒ’(n) = w also ∃ M ⊆ ù so dass ƒ’:M→L. M ist abzählbar ⇒ surjektive Funktion g ù→M. Setze ƒ:ù→L. ƒ ist surjektiv ∀ w ∈ L, ∃ m ∈ M mit ƒ’(m) = w. Da g surjektiv gilt:

|g-1(m)| ≥ 1; |ƒ-1(w)| = |g-1-1(w))| ≥ 1

Die Ableitung S ⇒nw ist ein Algorithmus für ƒ’(n)

Satz: Es gibt entscheidbare Sprachen, die nicht vom Typ 1 sind. Der Beweis siehe Literatur (Schöning)

Abzählbare Sprachen

Aufzählbare Sprachen Entscheidbare Sprachen Kontextsensitive Sprachen

Kontextfreie sprachen

Reguläre Sprachen

(16)

Satz: Jede Sprache vom Typ i mit 0 ≤ i ≤ j ≤ 3 ist entscheidbar.

Es gibt einen Algorithmus, der bei Eingabe einer kontextsensitiven Grammatik G = (VN, VT, P, S) und eines Wortes x ∈ VT* in endlicher Zeit entscheidet, ob x ∈ L(G) oder x ∉ L(G).

Beweis: Idee: Betrachte alle Wörter, die aus n-Schritten ableitbar sind.

Für m, n ∈ ù die Mengen Tmn = {w ∈ (VN ∪ VT)*; |w| ≤ n und w lässt sich aus S in höchstens n Schritten ableiten}

Tmn ; n ≥ 1 induktiv definieren

T0n = {S}; T n m+1 = Abl.(T n m) ( = Ableiten)

Abl.(X) = X ∪ { w ∈ (VN ∪ VT)*; |w| ≤ n und w’⇒ w für ein w’ ∈ X}

Beispiel: S→aSBC|aBC; CB→BC; aB→ab; bB→bb; bC→bc; cC→cc n=4: T04 = {S}

T14 = {S, aSBC, aBC}

T24 = {S, aSBC, aBC, abC}

T34 = {S, aSBC, aBC, abC, abc}

T44 = {S, aSBC, aBC, abC, abc}

= T34

Da es nur endlich viele Worte der Länge n gibt (in (VN ∪ VT)*)

∪ Tmn ist für jedes n eine endliche Menge.

m≥0

Es gibt ein m mit Tmn = Tm+1n = Tm+2n = …

Falls man x mit |x| = n in L(G) dann muß x∈∪ Tmn und damit Tmn für ein m ∈ ù.

m≥0

Input (G,X); {|x|=n}; T={S}

Repeat T1=T

T=Ableitung(T1) Until(x∈T) or (T=T1) IF (x∈T) Then

write (‚x liegt in L(G)’) ELSE

write (‚x liegt nicht in L(G)’) END

Bedeutung der Grammatiken

Reguläre und kontextfreie Grammatiken – wichtig für Compilerbau Weitere Grammatiken zwischen Typ 2 und 3

Bei konkreten Fragestellungen: Grammatik kontextsensitiv

Probleme im Wesentlichen durch kontextfreie Sprache ausdrücken. Sonderfall separat anzuhandeln Beispiel: Syntax von Programmiersprachen

Sonderfälle: Typenverträglichkeit, korrekte Anzahl von Parametern in Prozeduraufrufen Backus-Naur-Form (z.B. Algol 68)

-Statt A→β12…n schreibe A:= β12…n

-Erweiterte Backus-NAur-Form: (EBNF) A:= α[β]γ für die Regeln A→αγ|αβγ

A:= α{β}γ für die Regeln A→αγ|αβγ mit β→B|ββ

(17)

Endliche Automaten

Bezeichner→x Bez Rest, Bez Rest→y Bez Rest, u Bez Rest|3 → xyu3 b = Blank Bezeichner ⇒ xBez Rest ⇒ xyBez Rest ⇒ xyuBez Rest ⇒ xyu3 -Eingabeband

Lesekopf

Restaufgabe als Zusatzinformationen Abarbeiten von Eingabeworten

Arbeiten des Lesekopfes in einem Schritt: - ließ Buchstaben

→ (a) geht in Feld nach rechts

(b) abhängig vom gelesenen Buchstaben und aktuellem Zustand setzt der Automat einen (neuen) Zustand

- Iteration der Schritte bis zum 1. b

- Zustand des Automaten ∈ {Endzustand} → Wort erkannt - Zustand des Automaten ∉ {Endzustand} → Wort nicht erkannt Definition: Ein deterministischer endlicher Automat (DFA) ist ein 5-Tupel M=(Z, V, δ, qm, F)

- Z ist eine endliche, nicht leere Menge („Zustandsmenge“) - V ist eine endliche, nicht leere Menge („Eingabealphabet“) - δ : Z V → Z („Überführungsfunktion“)

- qm ∈ Z („Startzustand“) - F ⊆ Z („Endzustand“) Bemerkung: δ ist partiell

Definition: Es sei M = (Z, V, δ, qm, F) ein DFA (entscheidbarer Automat), dann :

δ : Z V* → Z induktiv

∧ ∧

δ (q,ε) = q, δ (q, ax) = δ (δ(q,a),x) mit q ∈ Z; x ∈ V* und a ∈ V Die von M akzeptierte Sprache T(M) = {x V*; δ (qm, x) ∈ F}

Beispiel: V = {0, 1}

(Endzustand)

-M1 = {qm, q1, q2}, {0, 1},δ qm, {q1} -δ als Zustandstafel

1) x1 = 000111

qM q2 q2 q1 q1 q1 q1 ∈ F 2) x1 = 1110

qM qM qM q2 q2 ∈ F

x y u 3 b

x1 x2 x3 …. xn b b

Augenblicklicher Zustand

Gelesenes Zeichen

Folgezustand δ(q, a)

qM 0 q2

qM 1 qM

q1 0 q1

q1 1 q1

q2 0 q2

q2 1 q1

0 0 0 1 1 1 b

1 1 1 0 b

Bez Rest

Anfang- Zustand

(18)

zu Beispiel 1)

1 0 0,1

Start 0 1

Definition: Zustandsgraph

Der Zustandsgraph eines deterministischen endlichen Automaten M = (Z, V, δ, qm, F) ist ein gerichteter Graph mit Beschriftungen:

1. Die Knoten entsprechen den Zuständen

2. Für jedes Paar (q, a) ∈ Z V mit δ (q, a) ist definiert, führt ein Pfeil mit Beschriftung a von q nach q’ = δ (q, a) a

Start 3. Darstellung des Anfangzustands 4. Darstellung des Endzustands Vereinfachung:

0

0,1 plus andere Varianten sinngemäß

1

1 0 0, 1

M1 Start 0 1

T(M) = {x01y; x,y ∈ {0, 1}*}

Sprache, die Bezeichner einer Programmiersprache erkennt:

Bezeichner = Wörter über V = {0, ...9, a, ...z, A…Z, _} die mit einem Buchstaben oder Unterstrich beginnen.

Start a... z, A...Z, _ x ∈ V

≠ a,… z, A,…Z, _ x ∉ V

x ∈ V

Endliche Maschinen – endliche Automaten mit Ausgabe Schreib/Lesekopf

Gedächtnis in Form eines Zustands Ausgabeband x1 x2 x3 …. xn b b

qM q2 q1

q

q

qM

q q’

q q’

q q’

qM q2 q1

Bezeichner Bez Rest

Fehler

(19)

Definition: Eine endliche deterministische Maschine (DFA) ist ein 7-Tupel M = (Z, VE, VA, δ, λ, qm, F) Z = endliche, nicht leere Menge („Zustandsmenge“)

VE = endliche, nicht leere Menge („Eingabealphabet“) VA = endliche, nicht leere Menge („Ausgabealphabet“) δ: Z VE → Z ist eine Funktion („Überführungsfunktion“) λ: Z VA → Z ist eine Funktion („Ausgabefunktion“) qm ∈ Z („Anfangszustand“)

F ⊂ Z („Menge der Endzustände“)

Wie bisher kann δ zu δ und entsprechende λ zu λ erweitert werden.

Definition: Die von einem DFA M = (Z, VE, VA δ, λ, qm, F) erkannte Sprache ist

T(M) = {x ∈ V*E;δ (x, qM) ∈ F} und die von M ausgegebene Sprache ist

A(M) = {λ (qM, x) ∈ V*A, für alle x V*E mit δ (qM, x) ∈ F}

Wie für endliche Automaten kann eine Zustandstafel und Zustandsgraph definiert werden.

e/a mit e ∈ VE und a ∈ VA

Definition: Ein nicht-deterministischer endlicher Automat (NFA) ist ein 5-Tupel M = (Z, V, δ, qm, F) - Bestandteile wie beim deterministischen endlichen Automaten

- und der Relation δ ⊂ ( Z V) Z („Überführungsrelation“)

Definition: Es sei Z eine Menge, dann ist die Potenzmenge von Z definiert durch P(Z) = {A, A ⊂ Z}

δ(q, a) = {q’ ∈ Z, (q, a, q’) ∈ δ}

Funktion Überführungsrelation Z V → P(Z)

[Funktion] δ kann zu δ fortgesetzt werden.

δ P (Z) V* → P(Z) durch induktive Definition

δ (Q, ε) = Q ∀ Q ⊆ Z

δ (Q, x a) = ∪ δ (δ (q, a), x)

q ∈ Q

Definition: Die von einem NFA M=(Z, V, δ, qm, F) akzeptierte Sprache ist T(M)={x∈V*,δ (qM, x) ∩ F≠0}

Zustandsgraph wie DFA, aber aus einem Zustand plus des Lesens eines a

Buchstaben führen evtl. mehrere Pfeile. Entsprechend bei Zustandstafeln.

Entsprechende Definition für nicht deterministische endliche Automaten (NFA) a

Beispiel: V = {0, 1}

0, 1 L = Menge der Worte, die an vorletzter Stelle eine Null haben.

Start 0 0, 1 L = {(0,1)*0(0,1)}

nicht deterministisch deterministisch

q q’

q

q2

q1

qM q1 q2

(20)

Die Sprachklassen:

- durch reguläre Grammatiken erkennte Sprachen

- durch deterministische endliche Automaten akzeptierte Sprachen - durch nicht-deterministische endliche Automaten akzeptierte Sprachen sind identisch.

Satz: Für jede Grammatik G git es einen NFA M mit L(G) = T(M)

Beweis: G = (VN, VT, P, S) eine reguläre rechtslineare Grammatik M = (Z, V, δ, qM, F) Z = V ∪ {x}; x ∉VN, pM = S

Beispiel: VN = {S, A}, VT = {0, 1}, P = {S→0S, A→0, S→1S, A→1, S→0A}

L = {x ∈ {0, 1}*, x hat an der vorletzten Stelle eine 1}

S→0S S→1S S→0A A→0

S⇒0S⇒01S⇒010A⇒0100

qS qS qS qA qE

S→0S ` (S,0,S) ∈ δ F = {{S,x}; S→ε ∈ P S→1S ` (S,1,S) ∈ δ {x}; S→ε ∈ P S→0A ` (S,0,A) ∈ δ δ (A,a,B) b A→aB ∈ P A→0 ` (A,0, ε) ∈ δ δ (A,a,x) b A→a ∈ P

Für n ≥ 1 a1, a2,…an ∈ L (G) genau dann, wenn es eine Folge von Variablen A1, A2,.. An-1

mit S⇒a1A1⇒a1a2A2⇒….⇒a1a2…an-1An-1⇒a1a2…an-1an gibt und wenn es eine Folge von Zuständen A1,.. An-1 mit δ (S, a1, A1) δ (A1, a2, A2)… δ (An-1, an, x) gilt und wenn

δ (S,a1,a2,.. an) = x mit a1,a2,…an ∈ T(M) gilt.

n = 0, ε ∈ L(G) genau dann wenn S ∈ F

Satz: Jede von einem NFA akzeptierte Sprache ist auch durch einen DFA akzeptierbar

1

0 0

0

Start 1 1

1 0

0,1 0,1 0,1

Werden nicht erreicht 0,1

0 1 0 0 b b

Reguläre Grammatiken

DFA NFA

{S}

{S,x} {S,x,ε}

{S,ε}

{x,ε}

{ε}

0

{x}

(21)

Beispiel: Start 0 0, 1

- Nicht-Determinismus: Zustand Menge von Zuständen

- Ansatz {Folgezustand} ist ein Zustand

0,1

Z’ {{S,x, ε}, {S,x}, {S, ε}, {S}, {x}, {ε

}, ∅}

Idee: die Menge Z

q

der Zustände in einem q aus Z

∪ Zq bei lesen eines Buchstabens b q ∈ Z

{S,x}, Eingabesymbol 0, ZS = {x,S}, Zx={ε

}

Folgezustand von {S,x} bei lesen von 0 ist {S, x,

ε

}

Beweis: Es sei M = (Z,V,

δ, qM, F) ein gegebener NFA. Setze M’ =

(Z’,V,

δ’, q’M, F’) mit Z’ = P(Z),

δ’ (Q,a) = ∪ δ (Z,a) = δ (Q,a) , Q ∈ Z’ qM’ = {qM}, F’ = Q ⊂ Z, Q ∩ F ≠ ∅

q ∈ Z

Für alle x = a1,..an ∈ V gilt x ∈ T(M) genau dann wenn δ’ (qM,x) ∩ F, F ≠ ∅ genau dann wenn es eine Folgen von Teilmengen Q1,Q2,..Qn von Z mit δ (q’M,a1) = Q1, δ’ (Q1,a2) = Q2 … δ’ (Qn-1,an) = Qn

und Qn ∩ F ≠ ∅ genau dann wenn δ’ (q’M,x) ∈ F’ genau dann wenn x ∈ T(M’) Lk = {x ∈ {0,1}*, |x| ≥ k, das k-letzte Zeichen von x ist 0}, k ≥ 1

Start 0 0,1 0,1 … 0,1

Es gibt keinen DFA, der Lk akzeptiert und mit weniger als 2k Zeichen auskommt. Wenn M ein DFA

mit < 2k Zuständen. Dann gilt es 2 verschiedene Wörter y1, y2 ∈ {0,1}k sodaß δ (Z0, y1) = δ (Z0, y2).

Es sei i die erste Position an der y1 und y2 sich unterscheiden (1 ≤ i ≤ k) w ∈ {0,1}i-1 beliebig. Dann y1 = u0v und y2 = u1v’ mit |v| = |v’| = k-i. y1w wird betrachtet y1w ∈ Lk (y1w = u0vw) und y2 w ∉ Lk i-te Position

∧ ∧ ∧ ∧ ∧

δ (Z0,y1,w) = δ ( δ (Z0,y1), w) = δ ( δ (Z0,y2),w) = δ (Z0,y2,w) y1w ∈ Lk genau dann wenn y2 ∈ Lk Satz: Jede durch endliche deterministische Automaten erkennbare Sprache ist regulär.

0 0

0

Start 1 Idee: Zustand als Nichtterminalsymbol 0

1 1

1

q0 ⇒ 1q0 ⇒ 11q0 ⇒ 110q1 ⇒ 111 q0 q0 q0 q1 q2 ∈ F q0→1q0 q0→1q0 q0→0q1 q1→1

1 1 0 1 b b

S x

ε

Z

0

Z

1

Z

2 Zk

q

0

q

1

q

2

q

3

(22)

Beweis: Es sei M = (Z, V, δ,qM,F) ein DFA, o. B. d. A. sei Z ∩ V = ∅ Definiere G = (VN, VT, P, S) mit VN = Z, VT = V, S = qM

P bestehlt aus folgenden Regeln:

- Jede δ-„Anweisung“ δ (Z1,a) = Z2 ` Z1 → aZ2 ∈ P und falls Z2 ∈ F zusätzlich Z1→ a ∈ P - Spezialfall qM ∈ F. Definiere ein neues Startsymbol S’ und die Regel S’→S mit S’→a für alle

- S→a ∈ P in P hinzu.

- G ist regulär.

Für alle x = a1,a2,.. an ∈ V* x ∈ T(M) genau dann wenn:

- es gibt eine Folge von Zuständen Z0... Zn mit Z0 = qM, Zn ∈ F und für 1≤i≤n δ (Zi-1, ai) = Zi - es eine Folge von Variablen Z0,.. Zn mit Z0 = S gibt und gilt Z0⇒a1Z1⇒a1a2Z2⇒…

a1…,an-1, Zn-1⇒a1….an

- x ∈ L(G) Anwendung – Textsuche

Problem: Gegeben ist eine Menge von Wörtern und es sollten alle Dokumente gefunden werden, die eines (oder alle) dieser Wörter enthalten

Anwendung: Internet und Online-Textsammlung Lösung: Suchmaschinen→invertierte Listen Anwendung von endlichen Automaten:

1) Die zu durchsuchende Sammlung ändert sich häufig / schnell 2) Die zu durchsuchende Dokumente lassen sich nicht katalogisieren

Angabe eines NFA eines Schlüsselwortes a1, …ak

Start a1 a2 ak

NFA „web“ und „ebay“

e b w

Start

¬ e b a y

Der NFA ist kein Programm:

1) Programm zur Simulatin von NFA

2) Umwandlung NFA in DFA und schreiben eines Programms zur Simulation des NFAs

DFA zur Erkennung von Schlüsselwörtern:

Konstruktion von NFA zu DFA bei solchen NFA’s (x für Schlüsselwörter x) führt zu DFA’s deren Auswahl an Zuständen niemals größer als bei Ausgangs NFA’s sind.

Konstruktion:

a) Zustandsmenge des DFA

1) Startzustand qM des NFA → Startzustand {qM} des DFA

2) Angenommen p sei Zustand des NFA der von qM über a1, …an erreicht wird qM, P jedem zustand von NFA der von qM über ein Wort aj, aj+1, an 1 < j ≤ m erreicht werden kann.

b) Regeln: Für jeden Zustand q des neuen DFA, {qM,P1,…Pi}, für jedes Eingabesymbol x, wohin qM und Pi in NFA führen, und fügt diesen DFA-Zustand q einen Übergang mit der Beschriftung x zu dem DFA- Zustand hinzu, der aus qM und aller Zustände besteht, in die qM und die Pi im NFA durch x „überführt“

werden.

q

M

q

1

q

2 qk

Z

0

Z

1

Z

2 Z3

Z

5

Z

6

Z

7 Z8

(23)
(24)

Reguläre Ausdrücke

Definition: Induktive Definition der regulären Ausdrücke - ∅ ist ein regulärer Ausdruck

- ε ist ein regulärer Ausdruck

- Für jedes a ∈ V ist a auch ist ein regulärer Ausdruck

- Wenn α, β ist ein regulärere Ausdrücke sind, dann auch αβ, (α | β) sowie (α)* Definition: Die von regulären Ausdrücken akzeptierte Sprache ist definitiert durch:

- L(∅) = ∅ - L(ε) = {ε}

- L(a) = {a} mit a ∈ V - L(αβ) = L(α) L(β) - L(α | β) = L(α) ∪ L(β) - L((α)*)= L(α)*

Beispiele: (a|b) = {a, b}; (a|b)(a|b) = {aa, ab, ba, bb}; (ab)* = {(ab)*; n≥0}; anbm = {anbm; n ≥ 0, m ≥ 0}

(0|(0|1)*00) = {x ∈ {0, 1}*; x endet entweder mit 00 oder ist 0}

Bemerkung: Alle endlichen Sprachen sind durch reguläre Ausdrücke beschreibbar.

A = {x1, …xn}; n ≥ 0; xi ∈ V α = x1|x2| …|xn `L(α) = A

Satz von Klenne: Die Menge der durch reguläre Ausdrücke beschreibene Sprachen ist genau die Menge der regulären Sprachen.

Beweis:

„<=“

Es sei m = (Z, V, δ, qM, F) ist ein DFA.

Zeige: Es gibt eine regulären Ausdruck γ mit L(γ) = T(M) Z = {Z1, …Zn} mit Z1 = qM

Rkij = { x ∈ V*; die Eingabe von x überführt den Automaten von Zustand Zi in den Zustand Zj,

(also δ (Zi, x) = Zj), so dass keiner der Zwischenzustände außer Zi und Zj selbst einen Index haben, der Größer als k ist}

Zi Zj

Induktive Definition von Rkij k+1 k

Induktions-Anfang: k = 0

Fall 1: i ≠ j R0ij ={a ∈ V, δ(Zi, a) = Zj}

Fall 2: i = j R0ij ={ε} ∪ {a ∈ V, δ(Zi, a) = Zj}

In beiden Fällen ist R0ij endlich. Also gibt es einen regulären Ausdruck α0ij mit L(α0ij) = R0ij Induktions-Schluss: Es gibt reguläre Ausdrücke αkij mit L(αkij) = Rkij

Ziel: Definiere einen regulären Ausdruck für Rk+1ij

Fall 1: Beim Übergang von Zi nach Zj wird Zk+1 nicht erreicht Rk+1ij = Rkij

Fall 2: Beim Übergang von Zi nach Zj wird Zk+1 erreicht Rk+1ij = Rki k+1 (Rkk+1, k+1)* Rkk+1, j

Rki, k+1 Rkk+1, k+1 Rkk+1, k+1 Rkk+1, j

⇒ Rk+1ij = Rkij ∪ Rki k+1 (Rkk+1, k+1)* Rkk+1, j ⇒ αk+1ij = αkij | αki k+1 kk+1, k+1)n αkk+1, j

T(M) = ∪ Rn1,j ; T(M) = αn1,i1 | αn1,i2 | …| αn1,in mit F = {Zi1, Zin} Zi ∈ F

Zi Zk+1 Zk+1 Zk+1 Zj

Referenzen

ÄHNLICHE DOKUMENTE

Eine (endliche oder unendliche!) Menge von Formeln M heißt erf¨ullbar, falls es eine Belegung gibt, die f¨ur jede Formel in M ein Modell ist. G¨ultigkeit: Eine Formel F heißt

Da in ϕ alle Variablen nur gebunden vorkommen, muss dies f¨ur jede Variablenbelegungen

Bestimmen Sie alle lokalen Extrema der Funktion y, und entscheiden Sie, in welchen F¨ allen es sich um ein Maximum beziehungsweise ein Minimum

[r]

[r]

Bestimmen Sie jeweils das Minimalpolynom

Ersetze alle Variablen in ψ durch paarweise verschiedene neue Variablen, die in keinem Algorithmus

Fortsetzungssatz: Wenn der Erzeuger eine gewisse Struktur hat (Semiring, Algebra) und µ σ-additiv auf dem Erzeuger ist?. • Wann ist die