4.11.2016 - IMN/HTWK

Werbung
Was bisher geschah
Modellierung von Aussagen durch Logiken
Modellierung von Daten durch
Mengen
extensionale und intensionale Darstellung
Mächtigkeiten endlicher Mengen, ∅
Beziehungen zwischen Mengen ⊆, =, ⊂
I Mengen-Operationen ∪, ∩, , \, ∆, ×, n , ∗ , 2M
I
I
I
Folgen über einer Menge A
extensionale und intensionale Darstellung
Länge von Folgen, leeres Wort ε (leere Folge)
unendliche Folgen,
endliche Folgen fester Länge (Tupel, Vektoren),
endliche Folgen variabler Länge (Wörter, Listen)
I Operationen auf Wörtern: (iterierte) Verkett. ◦, ∗
I Beziehung zwischen Wörtern: Präfix
I
I
I
Sprachen Mengen von Wörtern (endlichen Folgen)
Beispiele
Wiederholung: Präfix-Beziehung zwischen Wörtern
Präfix (Anfangswort) v
∀u ∈ A∗ ∀v ∈ A∗ ((u v v )
↔
(∃w ∈ A∗ (u ◦ w = v )))
(Für zwei beliebige Wörter u ∈ A∗ , v ∈ A∗ gilt u v v genau dann,
wenn ein Wort w ∈ A∗ existiert, so dass u ◦ w = v gilt.)
Beispiele:
I
an v anna (mit w = na)
I
n 6v anna
I
tom v tomate (mit w = ate)
I
oma 6v tomate
I
für jedes Wort u ∈ A∗ gilt ε v u (mit w = u)
I
für jedes Wort u ∈ A∗ gilt u v u (mit w = ε)
(analog zur Teiler-Beziehung zwischen natürlichen Zahlen)
Postfix-Beziehung auf Wörtern (Folgen)
∀u ∈ A∗ ∀v ∈ A∗ (Postfix(u, v ) ↔ (∃w ∈ A∗ (w ◦ u = v )))
Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ heißt
u genau dann Postfix (Suffix) von v , wenn ein Wort w ∈ A∗
existiert, so dass w ◦ u = v gilt.
Beispiel: enten ist Postfix von studenten (mit w = stud)
86
Infix-Beziehung auf Wörtern (Folgen)
Infix-Beziehung (Teilwort, Faktor):
∀u ∈ A∗ ∀v ∈ A∗ Infix(u, v ) ↔ ∃w ∈ A∗ ∃w 0 ∈ A∗ (w ◦ u ◦ w 0 = v )
Für zwei Wörter u = u1 · · · um ∈ A∗ , v = v1 · · · vn ∈ A∗ heißt
u genau dann Infix von v , wenn zwei Wörter w , w 0 ∈ A∗ existieren,
so dass w ◦ u ◦ w 0 = v gilt.
Beispiel: uwe ist Infix von sauwetter (mit w = sa, w 0 = tter )
satt ist kein Infix von sauwetter
87
Beispiele für (formale) Sprachen
I
Menge aller englischen Wörter L1 ⊂ {a, . . . , z}∗
I
Menge aller deutschen Wörter L2 ⊂ {a, . . . , z, ß,ä,ö,ü}∗
I
Menge aller möglichen DNA L3 ⊆ {A, T , G , C }∗
I
Menge aller natürlichen Zahlen in Dezimaldarstellung
L4 = {0, . . . , 9}∗ (evtl. mit führenden Nullen)
I
Menge aller natürlichen Zahlen in Binärdarstellung (Bitfolgen
beliebiger Länge) L5 = {0, 1}∗
I
Menge aller aussagenlogischen Formeln in AL({p, q, r })
L6 ⊂ {p, q, r , t, f, ¬, ∨, ∧, →, ↔, (, )},
I
Menge aller arithmetischen Ausdrücke über
L7 ⊂ {0, . . . , 9, +, ·, −, /, (, )},
I
Menge aller deutschen Sätze L8 ⊂ (L2 ∪ {., , , !, ?, (, ), −})
Z (ohne Variablen)
∗
Wie lassen sich unendliche Sprachen endlich darstellen?
(Voraussetzung für maschinelle Verarbeitung)
verschiedene Darstellungen in den LV zur theoretischen Informatik
z.B. Automaten und formale Sprachen im 3. Semester (INB)
88
Sprachen als Mengen
Sprachen L ⊆ A∗ sind Mengen von Wörtern (endlichen Folgen)
Mengenbeziehungen auf Sprachen:
L ⊆ L0 gdw.
∀w ∈ A∗ ((w ∈ L) → (w ∈ L0 ))
L = L0 gdw.
∀w ∈ A∗ ((w ∈ L) ↔ (w ∈ L0 ))
Mengenoperationen auf Sprachen:
L ∪ L0 = {w | w ∈ L ∨ w ∈ L0 }
L ∩ L0 = {w | w ∈ L ∧ w ∈ L0 }
L \ L0 = {w | w ∈ L ∧ w 6∈ L0 }
Komplement einer Sprache L ⊆ A∗ : L = A∗ \ L
Beispiel:
N(|w | = 2n)}
∧ ∃n ∈ N(|w | = 2n + 1)}
L = {w | w ∈ {0, 1}∗ ∧ ∃n ∈
L = {w | w ∈ {0, 1}
∗
89
Verkettung von Sprachen
Verkettung ◦ von Sprachen:
L1 ◦ L2 = {u ◦ v | (u ∈ L1 ) ∧ (v ∈ L2 )}
Beispiel:
L1 = {111, 1, 10} L2 = {00, 0}
L1 ◦ L2 = {111, 1, 10} ◦ {00, 0}
= {1110, 11100, 10, 100, 1000}
90
Iterierte Verkettung
I
für Sprachen L ⊆ A∗
L0 = {ε}
∀n ∈
N:
Ln+1 = Ln ◦ L = L
· · ◦ L}
| ◦ ·{z
n+1−mal
∗
L =
[
n∈
I
N
L
n
+
L =
[
N
n
L
n∈ \{0}
für Wörter (endliche Folgen) u ∈ A∗ :
un
u
+
∈ A∗ ,
= u
· · u}
| ·{z
u ∗ = {u}∗ = {u n | n ∈
n−mal
∗
= u \ {ε} = {u}+ = {u n | n ∈
N \ {0}}
N}
⊆ A∗
⊆ A∗
Beispiele:
(101)3
a∗
∗
(ab)
=
101101101
und
1013 = 10111
N} = {ε, a, aa, aaa, . . .}
| i ∈ N} = {ε, ab, abab, ababab, . . .}
= {ai | i ∈
i
= {(ab)
91
Mehr Beispiele für Sprachen
I
{aa, b}∗
= {u1 ◦ · · · ◦ un | n ∈
N ∧ ∀i ∈ {1, . . . , n} (ui ∈ {aa, b})}
= {ε, b, aa, bb, aab, baa, bbb, aaaa, aabb, baab, bbaa, bbbb, . . .}
ab 6∈ {aa, b}∗ , ba 6∈ {aa, b}∗ , aba 6∈ {aa, b}∗
I
∅ ◦ {aba, bb} = ∅
I
{ε} ◦ {aba, bb} = {aba, bb}
I
{bb}∗ = {w ∈ {b}∗ | |w | ∈ 2 } = {ε, bb, bbbb, . . .}
I
({1} ◦
{0}∗ )∗
= {w ∈
{0, 1}∗
N
| w1 = 1} ∪ {ε}
92
Reguläre Ausdrücke – Syntax
Die Menge RegExp(A) aller regulären Ausdrücke über einem
Alphabet A ist (induktiv) definiert durch:
IA: ∅ ∈ RegExp(A),
ε ∈ RegExp(A) und
für jedes Symbol a ∈ A gilt a ∈ RegExp(A)
IS: für alle E ∈ RegExp(A) und F ∈ RegExp(A) gilt
(E + F ), EF , (E )∗ ∈ RegExp(A).
(Baumdarstellung)
Beispiele:
I (∅ + 1) ∈ RegExp({0, 1}),
I (ε + ((ab)∗ a)∗ ) ∈ RegExp({a, b}),
I (♠∅♦)∗ ∈ RegExp({♦, ♥, ♠, ♣}),
I für beliebiges Alphabet A gilt ε ∈ RegExp(A),
(ε + ∅) ∈ RegExp(A),
I 0+(1+2+3+4+5+6+7+8+9)(0+1+2+3+4+5+6+7+8+9)∗
∈ RegExp({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
93
Reguläre Ausdrücke – Semantik
Jeder reguläre Ausdruck E ∈ RegExp(A) repräsentiert
eine Sprache L(E ) ⊆ A∗ .
L(∅)
L(ε)
∀a ∈ A :
L(a)
∀E , F ∈ RegExp(A) : L(E + F )
∀E , F ∈ RegExp(A) :
L(EF )
∀E , F ∈ RegExp(A) :
L(E ∗ )
= ∅
= {ε}
= {a}
= L(E ) ∪ L(F )
= L(E ) ◦ L(F )
∗
= (L(E ))
Eine Sprache L ⊆ A∗ heißt genau dann regulär, wenn ein regulärer
Ausdruck E ∈ RegExp(A) existiert, so dass L = L(E ).
Beispiele: Für A = {a, b} gilt
L(ab ∗ )
N}
N}
=
{a, ab, abb, abbb, abbbb, . . .} = {ab i | i ∈
L((ab) )
=
{ε, ab, abab, ababab, . . .} = {(ab)i | i ∈
L((a + b)∗ )
=
{a, b}∗
L(a∗ b ∗ )
=
{u ◦ v | u ∈ a∗ ∧ v ∈ b ∗ }
∗ ∗ ∗
L((a b ) )
=
{a, b}∗
L(A∗ aba)
=
{u ◦ aba | u ∈ A∗ }∗
∗
94
Beispiele
I
L (0 + (1 + 2 + · · · + 9)(0 + 1 + · · · + 9)∗ ) =
Menge aller Dezimaldarstellungen natürlicher Zahlen
I
für A = {A, B, . . . , Z , a, b, . . . , z} ist L(A∗ (oma + otto)A∗ ) =
Menge aller Wörter mit Infix oma oder otto
z.B. tomate ∈ L(A∗ (oma + otto)A∗ ), lotto ∈ L(A∗ (oma + otto)A∗ ),
ottomat ∈ L(A∗ (oma + otto)A∗ ),
hottentottenpotentatentantenattentat 6∈ L(A∗ (oma + otto)A∗ )
I
für A = {A, B, . . . , Z , a, b, . . . , z, 0, 1, . . . , 9, ., −} ist
L(A∗ @htwk-leipzig.de) ≈
Menge aller möglichen HTWK-Email-Adressen
Reguläre Ausdrücke ermöglichen eine endliche Darstellung unendlicher
Sprachen.
Aber: Nicht jede (unendliche) Sprache ist regulär.
( mehr dazu in den LV zur theoretischen Informatik,
z.B. Automaten und Formale Sprachen im 3. Semester )
95
Beispiele regulärer Sprachen
I
I
I
I
I
I
I
L1 = ∅,
wegen ∅ ∈ RegExp(A) und L(∅) = ∅ = L1
L2 = {a, bab},
wegen a + bab ∈ RegExp(A) und L(a + bab) = L2
L3 = {w ∈ {a, b, c}∗ | abba v w },
wegen abba(a + b + c)∗ ∈ RegExp({a, b, c}) und
L(abba(a + b + c)∗ ) = L3
L4 = {w ∈ {a, b, c}∗ | aa oder bbb sind Infix von w }, wegen
(a + b + c)∗ (aa + bbb)(a + b + c)∗ ∈ RegExp({a, b, c}) und
L((a + b + c)∗ (aa + bbb)(a + b + c)∗ ) = L4
{w ∈ {a, b}∗ | |w | ∈ 2 } = L((aa + ab + ba + bb)∗ )
{w ∈ {a, b}∗ | |w |a ∈ 2 } = L((b ∗ ab ∗ ab∗)∗ )
alle möglichen HTWK-Email-Adressen
⊆ L(A∗ @htwk-leipzig.de) mit
A = {A, B, . . . , Z , a, b, . . . , z, 0, 1, . . . , 9, ., −}
(ASCII-Symbole)
N
N
96
Herunterladen