Formale Methoden 2 - LS1 - Logik in der Informatik

Werbung
Formale Methoden 2
Gaetano Geck
Lehrstuhl I – Logik in der Informatik
WS 2015/2016
Teil 3: Kodierung
1
Motivation
2
Exkurs Grundlagen formaler Sprachen
3
Grundlagen
4
Beispielkodierungen
Kodierung / Motivation
Motivation
In der Theoretischen Informatik untersuchen wir verschiedene Berechnungsmodelle.
Endliche Automaten
Registermaschinen
Turingmaschinen
(RS, GTI)
(DAP2, GTI)
(GTI)
...
Unterschiede in der Art der gespeicherten/manipulierten Daten:
Zeichenketten
Zahlen
Ziel: Vergleich der Modelle bezüglich der lösbaren Probleme
Nötig: Umwandlung (Kodierung) von Eingaben
Nötig: Umwandlung (Kodierung) von Ausgaben
FM2 (WS 2014/15, Geck)
3
1
Motivation
2
Exkurs Grundlagen formaler Sprachen
Wörter
Konkatenation
3
Grundlagen
4
Beispielkodierungen
Kodierung / Exkurs Grundlagen formaler Sprachen
Exkurs Grundlagen formaler Sprachen: Wörter (1/2)
Definition 2.1 (Alphabet)
Ein Alphabet ist eine endliche nichtleere Menge.
Die Elemente eines Alphabets bezeichnen wir als Zeichen oder Symbole.
Beispiel 2.2 (Alphabet)
Σ1 = {0, 1}, Zeichen: Bitwerte
Σ2 = {A, C, T, G}, Zeichen: Basen in DNS
Σ3 = {0, 1, 2, . . . , 9}, Zeichen: Ziffern im Dezimalsystem
Definition 2.3 (Wort)
Ein Wort über einem Alphabet Σ ist eine endliche Folge von Zeichen aus Σ.
Die Anzahl der Zeichen eines Wortes w bezeichnen wir als Länge von w (Notation: |w|).
Beispiel 2.4
u = 0010 ist ein Wort der Länge 4 (|u| = 4) über Σ1
v0 = 0 und v1 = 1 sind alle Wörter der Länge 1 (|v0 | = 1 = |v1 |) über Σ1
w = AAAAAAAAAA ist ein Wort der Länge 10 (|w| = 10) über Σ2
FM2 (WS 2014/15, Geck)
5
Kodierung / Exkurs Grundlagen formaler Sprachen
Exkurs Grundlagen formaler Sprachen: Wörter (2/2)
Bemerkung: Ein Wort der Länge n über Σ kann als n-Tupel aus Σn aufgefasst werden.
Beispiel: Wort ACTTA der Länge 5 über Σ2
!
Tupel (A, C, T, T, A) ∈ Σ52
Spezialfall: Das leere Tupel () ∈ Σ0 entspricht dem Wort der Länge 0,
welches wir als leeres Wort ε bezeichnen.
Definition 2.5
Sei Σ ein Alphabet Σ und n ∈ N0 .
Die Menge aller Wörter der Länge n über Σ ist Σn = {σ1 . . . σn | σ1 , . . . , σn ∈ Σ} und
S
die Menge aller Wörter über Σ ist Σ∗ = n∈N0 Σn .
Beispiel 2.6
Sei Σ = {a, b, c}, dann ist
Σ0 = {ε}
Σ1 = {a, b, c}
Σ2 = {aa, ab, ac, ba, bb, bc, ca, cb, cb}
Frage (|Σn | =?)
Sei Σ ein Alphabet mit k Zeichen und n ∈ N0 beliebig.
Wie viele Wörter der Länge n über Σ gibt es?
FM2 (WS 2014/15, Geck)
6
Kodierung / Exkurs Grundlagen formaler Sprachen
Exkurs Grundlagen formaler Sprachen: Konkatenation
Definition 2.7 (Konkatenation)
Seien Σ ein Alphabet sowie v = v1 . . . vm und w = w1 . . . wn Wörter über Σ.
Die Konkatenation von v und w ist das Wort v ◦ w = v1 . . . vm w1 . . . wn .
Für die n-fache Konkatenation eines Wortes w mit sich selbst schreiben wir
wn = w
··· ◦ w
| ◦ {z
}, falls n > 0,
n-mal
und legen w0 = ε fest.
Bemerkung:
Der Konkatenationsoperator ◦ ist assoziativ und
hat das leere Wort ε als neutrales Element.
Beispiel 2.8
010 ◦ 11100 = 01011100
010 ◦ ε = 010 = ε ◦ 010
abc3 = abccc
(ab)3 = ababab.
FM2 (WS 2014/15, Geck)
7
1
Motivation
2
Exkurs Grundlagen formaler Sprachen
3
Grundlagen
4
Beispielkodierungen
Kodierung / Grundlagen
Grundlagen
Definition 3.1 (Kodierung)
Eine Kodierung einer Menge M ist eine injektive Abbildung enc : M → K .
Wir bezeichnen K als Menge der Kodes.
Bemerkung:
def
Die Injektivität impliziert die Existenz einer Umkehrabbildung dec = enc−1 .
Dadurch kann aus einem Kode stets der Originalwert rekonstruiert werden:
dec enc(m) = enc−1 enc(m) = m,
für alle m ∈ M.
Beispiel 3.2 (ASCII)
Der ASCII-Zeichensatz Z = {A, B, C, . . . , Z, a, b, c, . . . , z, 0, 1, 2, . . . , 9, !, ?, :, . . . } enthält
druckbare Zeichen des lateinischen Alphabets,
die arabischen Ziffern,
Satzzeichen und
nicht druckbare Steuerzeichen.
Der ASCII-Kode legt eine Abbildung encASCII : Z → {0, 1}8 fest,
wobei {0, 1}8 die Menge der Bytes (Bitwörter der Länge 8) ist.
Es gilt etwa
encASCII (A) = 01000001
encASCII (B) = 01000010
encASCII (C) = 01000011
FM2 (WS 2014/15, Geck)
9
1
Motivation
2
Exkurs Grundlagen formaler Sprachen
3
Grundlagen
4
Beispielkodierungen
Zahlen als Zahl
Exkurs Primzahlen
Wörter als Zahl
Zahl als Wort
Kodierung / Beispielkodierungen
Beispielkodierung: Zahlen als Zahl
Satz 4.1 (Primzahlkodierung)
Sei k ∈ N beliebig und seien p1 , . . . , pk paarweise verschiedene Primzahlen.
n
n
Die Abbildung enckprim : Nk0 → N mit (n1 , . . . , nk ) 7→ p11 · . . . · pk k , für alle (n1 , . . . , nk ) ∈ Nk0 ist
eine Kodierung, genannt Primzahlkodierung.
Beispiel 4.2 (Kodierung von Paaren natürlicher Zahlen)
Für k = 2 können wir etwa p1 = 2 und p2 = 3 wählen und enc2prim : N20 → N mit
(n1 , n2 ) 7→ 2n1 · 3n2 ,
für alle (n1 , n2 ) ∈ N2O .
Dann gilt etwa
enc2prim (4, 1) = 24 · 31 = 16 · 3 = 48
enc2prim (0, 3) = 20 · 33 = 27
Bemerkung: Die Gültigkeit des Satzes beruht auf
1
der Existenz unendlich vieler Primzahlen und
(k beliebig).
Bemerkung: Die Kodierung ist sogar bijektiv (also dec total), da
2
die Primzahlzerlegung eindeutig ist.
Beide Eigenschaften beweisen wir im Folgenden!
FM2 (WS 2014/15, Geck)
11
Kodierung / Beispielkodierungen
Exkurs Primzahlen
Existenz unendlich vieler Primzahlen (1/2)
Definition 4.3 (Primzahl)
Eine Primzahl ist eine natürliche Zahl, die genau zwei Teiler besitzt.
Wir bezeichnen mit P die Menge aller Primzahlen.
Bemerkung:
1 ∈ N0 ist keine Primzahl, da sie nur einen Teiler besitzt (1 = 1 · 1).
Insbesondere wird 1 durch keine Primzahl geteilt.
0 ∈ N0 ist keine Primzahl, da sie unendlich viele Teiler hat
(0 = 1 · 0 = 2 · 0 = 3 · 0 = . . . ).
P = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, . . . }
Satz 4.4
Die Menge P aller Primzahlen ist unendlich.
FM2 (WS 2014/15, Geck)
12
Kodierung / Beispielkodierungen
Exkurs Primzahlen
Existenz unendlich vieler Primzahlen (2/2)
Beweis durch Widerspruch
1
Annahme: Es gibt nur endliche viele Primzahlen:
2
Wir wählen a = p1 · . . . · pn + 1
3
Wir definieren b = p1 · . . . · pn .
Klar: p1 ist Teiler von b, da b = p1 · (p2 · . . . · pn ) ist.
4
p1 ist nicht Teiler von a, denn sonst
P = {p1 , . . . , pn } für ein n ∈ N0 .
(da a > p1 , . . . , a > pn , ist a < P).
gäbe es ein a0 ∈ N mit a = p1 · a0 und es gälte
1
=
=
=
a−b
p1 · a0 − p1 · (p2 · . . . · pn )
p1 · (a0 − p2 · . . . · pn ) .
|
{z
}
∈N0
Das heißt, p1 > 1 wäre ein Teiler von 1, was nicht sein kann.
5
Analog: p2 , . . . , pn sind nicht Teiler von a.
6
Dann hat a keinen Teiler außer 1 und a,
ist also eine Primzahl und es gilt a ∈ P, im Widerspruch zur Voraussetzung.
FM2 (WS 2014/15, Geck)
13
Kodierung / Beispielkodierungen
Exkurs Primzahlen
Eindeutigkeit der Primfaktorisierung (1/2)
Satz 4.5 (Fundamentalsatz der Arithmetik)
Jede natürliche Zahl n ∈ N0 − {0, 1} kann auf genau eine Art in Primfaktoren zerlegt
werden.
Hinweise zum Beweisprinzip:
Wie für Satz 4.4 führen wir einen Widerspruchsbeweis, das heißt,
1
2
3
4
wir beginnen mit der Annahme des Gegenteils der zu beweisenden Aussage;
(Es gibt n ∈ N0 − {0, 1} mit mehreren Primfaktorisierungen)
wir nutzen (eventuell mehrfach) gültige Schlussregeln und anerkannte Axiome;
(Insbesondere gibt es n ∈ N0 − {0, 1} mit mindestens zwei Primfaktorisierungen)
wir folgern schließlich eine Aussage, die im Widerspruch
I zur Annahme selbst steht oder
I zu einem Zwischenergebnis, dass aus der Annahme durch Schlussregeln
hervorgegangen ist.
In beiden Fällen beweist dies die Falschheit der Annahme
und damit die Gültigkeit ihres Gegenteils, der zu beweisenden Aussage.
Speziell für Satz 4.5: In Schritt 2 nutzen wir aus,
dass die natürlichen Zahlen durch < geordnet sind,
sodass es für jede Teilmenge M ⊆ N0 eine kleinste Zahl in M gibt.
Frage
Gibt es für jede Teilmenge M ⊆ Q eine kleinste Zahl in M ? Für alle M ⊆ Q+ ?
FM2 (WS 2014/15, Geck)
14
Kodierung / Beispielkodierungen
Exkurs Primzahlen
Eindeutigkeit der Primfaktorisierung (2/2)
Beweis durch Widerspruch
1
Annahme: Es gibt eine Zahl n ∈ N0 − {0, 1} mit mehreren Primfaktorisierungen.
2
Dann gibt es eine Zahl n ∈ N0 − {0, 1} mit zwei Primfaktorisierungen.
3
Wir wählen die kleinste solche Zahl n0 mit p1 · . . . · pk = n0 = q1 · . . . · q`
für verschiedene Primfaktorisierungen p1 , . . . , pk und q1 , . . . , q` .
4
Lemma von Euklid: Für beliebige Zahlen x, y ∈ Z und eine Primzahl p gilt:
Teilt p das Produkt x · y, so teilt p auch den Faktor x oder den Faktor y.
5
Dann gilt p1 · (p2 · . . . · pk ) = n0 = q1 · (q2 · . . . · q` ),
also gilt p1 | q1 oder p1 | q2 · . . . · q` .
• 1. Fall (p1 teilt q1 ): Da q1 eine Primzahl ist, gilt p1 = q1 .
•
Dann wäre n0 /p1 = n0 /q1 < n0 eine Zahl mit verschiedenen Primfaktorisierungen;
im Widerspruch zur Annahme für n0 .
2. Fall (p1 teil nicht q1 ): Dann teil p1 den Faktor q2 · . . . · q` .
Hier lässt sich die Argumentation von Schritt 5 bis zu (` − 1)-mal anwenden,
um einen der folgenden Widersprüche herzuleiten:
I
I
6
p1 teilt ein qj (wie im 1. Fall)
p1 teilt 1
Es kann also kein solches kleinstes n0 existieren und damit kein solches n.
FM2 (WS 2014/15, Geck)
15
Kodierung / Beispielkodierungen
Beispielkodierung: Wörter als Zahl
Die Primzahlkodierung ermöglicht die Repräsentation beliebig vieler Zahlen in einer Zahl.
Daraus ergibt sich unmittelbar eine Kodierung für beliebig lange Wörter als Zahl.
Folgerung 4.6
Sei Σ ein Alphabet und f : Σ → N eine injektive Abbildung.
Ferner seien p1 , . . . , pk paarweise verschiedene Primzahlen.
f (σ1 )
Die Abbildung enckprim : Σk → N0 mit σ1 ◦ . . . ◦ σk 7→ p1
f (σk )
· . . . · pk
ist eine Kodierung.
Beispiel 4.7
Alphabet Σ = {a, b, c, . . . , x, y, z}
Abbildung f mit f (a) = 1, f (b) = 2, f (c) = 3, . . . , f (z) = 26
Wort w = hallo ∈ Σ5
Primzahlen p1 = 2; p2 = 3; p3 = 5; p4 = 7; p5 = 11
Kodierung enck (w) = enck (hallo) = 28 · 31 · 512 · 712 · 1115
= 10840967179262536844134284562500000000
Frage
Obige Abbildung kann als „zweifache Kodierung“ angesehen werden.
Beschreibe diesen Umstand formal.
FM2 (WS 2014/15, Geck)
16
Kodierung / Beispielkodierungen
Beispielkodierung: Zahl als Wort
Unäre Kodierung
Zwei Ideen:
1
Abzählen: Länge des Wortes repräsentiert Wert der Zahl
„Vorteil“: Möglich auch bei einelementigem Alphabet
2
Stellenwertsystem: Zahl als Ziffernfolge (Zeichenfolge)
„Vorteil“: Kürzere Repräsentation
Definition 4.8 (Unäre Kodierung)
Sei Σ ein Alphabet und σ ein Zeichen aus Σ.
Die Abbildung unσ : N0 → Σ∗ mit n 7→ σn für alle n ∈ N0 ist eine Kodierung,
genannt unäre Kodierung.
Beispiel 4.9
Sei Σ = {x} ein elementiges Alphabet, dann ist
unx (0) = x0 = ε,
unx (3) = x3 = xxx und
unx (11) = x11 = xxxxxxxxxxx.
FM2 (WS 2014/15, Geck)
17
Kodierung / Beispielkodierungen
Beispielkodierung: Zahl als Wort
b-adische Kodierung
Definition 4.10 (b-adische Kodierung)
Sei Σ = {σ0 , . . . , σb−1 } ein b-elementiges Alphabet mit b ≥ 2.
Die Abbildung baseb : N0 → Σ∗ mit
(
n 7→
σn mod b ,
baseb (n ÷ b) ◦ σn mod b ,
falls 0 ≤ n < b
sonst
für alle n ∈ N0
ist eine Kodierung, genannt b-adische Kodierung.
Hierbei bezeichnet ÷ die ganzzahlige Division und mod den Rest bei ganzzahliger Division.
Bemerkung:
b ist die Basis des Stellenwertsystems
die Zeichen σ0 , . . . , σb−1 werden auch Ziffern genannt
Beispiel 4.11
Binärsystem (b = 2): Σ = {σ0 , σ1 } mit σ0 = 0 und σ1 = 1
• base2 (0) = 0;
• base2 (1) = 1;
• base2 (11) = base2 (5) ◦ 1 = base2 (2) ◦ 1 ◦ 1 = base2 (1) ◦ 0 ◦ 1 ◦ 1 = 1011.
Dezimalsystem (b = 10): Σ = {σ0 , . . . , σ9 } mit σ0 = 0, . . . , σ9 = 9
• base10 (4711) = base10 (471) ◦ 1 = base10 (47) ◦ 1 ◦ 1 = base10 (4) ◦ 7 ◦ 1 ◦ 1 = 4711.
FM2 (WS 2014/15, Geck)
18
Kodierung / Beispielkodierungen
Beispielkodierung: Zahl als Wort
Vergleich: unäre und b-adische Kodierung (1/2)
Unterschiedliche Repräsentationslänge:
unär: Wort der Länge n repräsentiert die Zahl n
• Wert der Zahl ist linear in der Länge des Wortes
• äquivalent: Länge des Wortes ist linear im Wert der Zahl
b-adisch: Wort der Länge n repräsentiert eine Zahl ≤ bn
• Wert der Zahl ist exponentiell in der Länge des Wortes
• äquivalent: Länge des Wortes ist logarithmisch im Wert der Zahl
Komplexitätstheorie:
Laufzeit: meist ausgehend von der Länge des Eingabewortes definiert.
Es kommt dann auf die Kodierung an.
dazu ein Beispiel . . .
FM2 (WS 2014/15, Geck)
19
Kodierung / Beispielkodierungen
Beispielkodierung: Zahl als Wort
Vergleich: unäre und b-adische Kodierung (2/2)
Folgende Algorithmen haben
Eingabe: Zahl n ∈ N0 (kodiert als Wort wn ∈ Σ∗ )
Ausgabe: Summe 1 + 2 + 3 + · · · + n
1
2
3
4
5
Algorithmus A1 :
Algorithmus A2 :
n := decode_unary (wn )
sum := 0
for i in (1 .. n)
sum := sum + i
return sum
n := decode_binary (wn )
sum := 0
for i in (1 .. n)
sum := sum + i
return sum
1
2
3
4
5
Frage
Sei w = 111111 = 16 .
Wie oft führt Algorithmus A1 Zeile 3 bei Eingabe w aus?
Wie oft führt Algorithmus A2 Zeile 3 bei Eingabe w aus?
Was bedeutet das für die Gesamtlaufzeit der Algorithmen bei Eingabe w?
FM2 (WS 2014/15, Geck)
20
Kodierung / Beispielkodierungen
Beispielkodierung: Zahl als Wort
Vergleich b-adischer Kodierungen
Stellenwertsysteme: Kodierungslänge von Basis abhängig
Beispiel 4.12
Sei x ∈ N die Zahl eine Million.
Binär:
Dezimal:
Hexadezimal:
Kodierung
11110100001001000000
1000000
f4240
Anzahl Stellen
20 = 1 + blog2 (x)c
7 = 1 + blog10 (x)c
5 = 1 + blog16 (x)c
Die Kodierungslängen in Stellenwertsystemen verschiedener Basen unterscheiden sich
um einen konstanten Faktor logb1 (b2 ) =
logb (x)
1
logb (x)
für Basen b1 , b2 , also
2
viel weniger stark als zwischen Stellenwertkodierung und unärer Kodierung
(exponentieller Längenunterschied)
Beispiel 4.13
Kodierungen im Binärsystem (b1 = 2)
sind um den Faktor logb1 (b2 ) = log2 (10) ≈ 3, 32 länger als
Kodierungen im Dezimalsystem (b2 = 10).
FM2 (WS 2014/15, Geck)
21
Herunterladen