(Pseudo)zufallszahlen und Hashfunktionen

Werbung
(Pseudo)zufallszahlen und Hashfunktionen
Thomas Zehrt
Abt. Informatik
HS Luzern
HSLU.IT
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
1 / 35
Outline
1
Zufallszahlengeneratoren
2
Pseudozufallszahlengeneratoren (PZZG)
Schieberegister der Länge n
Lineare Kongruenzgeneratoren
3
Folgenuniversen
4
Approximative Entropie
5
Benfords Gesetz
6
Hashfunktionen
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
2 / 35
Zufallszahlengeneratoren
Ein Zufallszahlengenerator ist ein Algorithmus, der eine Folge von
binären Zahlen ausgibt, so dass folgendes gilt:
1
Die Erzeugung der Ziffern der Folge geschieht stochastisch
unabhängig.
Die Kenntnis der ersten n Bits gibt uns keine Information
über das (n + 1)-te Bit. Wir haben also keine Möglichkeit,
aus der Kenntnis einer Teilfolge den Rest der Folge
vorherzusagen.
2
Bei der Erzeugung einer Zahl der Folge sind alle möglichen Ziffern
gleichwahrscheinlich.
Für binäre Folgen bedeutet das, dass in jedem Schritt
der Folgenerzeugung 0 oder 1 mit der Wahrscheinlichkeit
von 0.5 auftreten.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
3 / 35
Zufallszahlengeneratoren
Derzeit (2003) realisierte Ideen echter Zufallszahlengeneratoren auf
dem PC:
Die Firma Intel nutzt das thermische Rauschen eines Widerstands
im Pentium-Prozessor, um daraus Zufallszahlen zu generieren (75
000 Bit pro Sekunde).
Die Firma Maxtor hat ein Verfahren entwickelt, um aus den
(höchst komplexen) physikalischen Prozessen in einer Festplatte
das Rauschen zu extrahieren und daraus Zufallszahlen zu
generieren (835 200 Bit pro Sekunde).
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
4 / 35
Zufallszahlengeneratoren
Dabei ist zunächst stets zu klären, ob der genutzte physikalische
Prozess wirklich zufällig ist. Dann sollten die gewonnenen Sequenzen
so bearbeitet werden, dass die beiden Bits gleichverteilt sind.
Der Neumann-Filter f (J. v. Neumann, 1951) löscht
aufeinanderfolgende Bits, wenn diese gleich sind:
f
:
00
11
01
10
7→
7→
7→
7→
_
_
0
1
Example
10001101011100101110 7→ 10011
11111111111111111111 7→ _
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
5 / 35
Pseudozufallszahlengeneratoren (PZZG)
Ein Pseudozufallszahlengenerator ist ein Algorithmus, der nach
Eingabe einer oder mehrerer Initialisierungszahlen deterministisch
eine Zahlenfolge erzeugt.
Ein solcher Generator erzeugt eine Folge so genannter
Pseudozufallszahlen und kann natürlich nie echte Zufallszahlen
erzeugen.
Sobald ein Angreifer den Algorithmus und die Initialisierungszahlen
(oder einen Teil der erzeugten Folge) kennt, kann er alle folgenden
Zahlen vorhersagen.
Für viele Anwendungen in der Kryptographie sind einfache
Pseudozufallszahlen nicht geeignet, allerdings können solche Reihen
sehr leicht durch einfache Programme erzeugt werden.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
6 / 35
Pseudozufallszahlengeneratoren (PZZG)
Schieberegister der Länge n
Schieberegister der Länge n
Schieberegister der Länge n sind PZZG, die aus n Zellen bestehen,
die zunächst alle mit einem Startbit initialisiert sind. Schieberegister
sind getaktet und in jedem Takt geschieht folgendes:
1
Die Rückkopplungsfunktion f : {0, 1}n → {0, 1} berechnet aus den
Zelleninhalten einen Bitwert.
2
Alle Zelleninhalte werden um eine Zelle (nach rechts) verschoben.
3
Der Inhalt der ersten Zelle (rechts) wird ausgegeben.
4
Die letzte Zelle erhält den mit f errechneten Wert.
Rückkopplungsfunktion f
sn
Thomas Zehrt (HSLU)
s n−1
s2
PZZGHash
s1
Output
HSLU.IT
8 / 35
Pseudozufallszahlengeneratoren (PZZG)
Schieberegister der Länge n
Lineare Schieberegister
Ein Schieberegister heisst linear, wenn f berechnet wird, indem
gewisse Zelleninhalte addiert werden.
Mathematisch können solche Register wie folgt beschrieben werden:
Wenn sn , sn−1 , . . . , s2 , s1 die Initialisierung und si der Output im
i-ten Takt ist, so gilt (modulo 2 gerechnet) für alle k ≥ 1:
sn+k = cn · sn+k−1 + cn−1 · sn+k−2 + · · · + c1 · sk
wobei cn , cn−1 , . . . , c1 ∈ {0, 1} die so genannten
Rückkopplungskoeffizienten sind.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
9 / 35
Pseudozufallszahlengeneratoren (PZZG)
Schieberegister der Länge n
Example
Lineare Schieberegister der Länge 4, Initialisierung 1, 0, 0, 0:
Initialisierung:
1. Takt
2. Takt
3. Takt
4. Takt
5. Takt
6. Takt
1
0
1
0
0
0
1
0
1
0
1
0
0
0
0
0
1
0
1
0
0
0
0
0
1
0
1
0
Im 6. Takt wiederholt sich der Initialisierungszustand!
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
10 / 35
Pseudozufallszahlengeneratoren (PZZG)
Lineare Kongruenzgeneratoren
Lineare Kongruenzgeneratoren
Lineare Kongruenzgeneratoren sind PZZG, die rekursiv durch
xn
=
(axn−1 + b) mod m
definiert sind. Dabei gilt:
a, b, m ∈ N („gut gewählt“)
x0 ∈ N heisst der Schlüssel.
Diese Generatoren besitzen gute statistische Eigenschaften und sind
effizient zu implementieren, allerdings auch leicht vorhersagbar.
Ihre Periode ist höchstens m.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
12 / 35
Pseudozufallszahlengeneratoren (PZZG)
Lineare Kongruenzgeneratoren
Maximale Periodenlänge
Example
m = 9, a = 7, b = 4, x0 = 3
x1 = (7x0 + 4) mod 9 = 25 mod 9
x2 = (7x1 + 4) mod 9 = 53 mod 9
x3 = (7x2 + 4) mod 9 = 60 mod 9
x4 = (7x3 + 4) mod 9 = 46 mod 9
x5 = (7x4 + 4) mod 9 = 11 mod 9
x6 = (7x5 + 4) mod 9 = 18 mod 9
x7 = (7x6 + 4) mod 9 =
4 mod 9
x8 = (7x7 + 4) mod 9 = 32 mod 9
x9 = (7x8 + 4) mod 9 = 39 mod 9
Die Folge enthält 9 verschiedene Ziffern.
Thomas Zehrt (HSLU)
PZZGHash
=
=
=
=
=
=
=
=
=
7
8
6
1
2
0
4
5
3
HSLU.IT
13 / 35
Pseudozufallszahlengeneratoren (PZZG)
Lineare Kongruenzgeneratoren
Nicht maximale Periodenlänge
Example
m = 9, a = 6, b = 4, x0 = 2
x1 = (6x0 + 4) mod 9 = 16 mod 9
x2 = (6x1 + 4) mod 9 = 46 mod 9
x3 = (6x2 + 4) mod 9 = 10 mod 9
x4 = (6x3 + 4) mod 9 = 10 mod 9
Die Folge enthält 3 verschiedene Ziffern.
Thomas Zehrt (HSLU)
PZZGHash
=
=
=
=
7
1
1
1
HSLU.IT
14 / 35
Pseudozufallszahlengeneratoren (PZZG)
Lineare Kongruenzgeneratoren
Satz von Knuth
Lineare Kongruenzgeneratoren produzieren periodische (oder
irgendwann konstante) Zahlenfolgen, wobei die Periodenlänge
höchstens gleich m ist. Wie sollte man die Zahlen a, b und m wählen,
um die maximale Periodenlänge zu erreichen?
Theorem (Satz von Knuth)
Der lineare Kongruenzgenerator
xn = (axn−1 + b) mod m
hat genau dann die Periode m, wenn folgendendes gilt:
1
ggT(b, m) = 1 (d.h. insbesondere, dass b 6= 0 sein muss),
2
jeder Primteiler von m teilt auch a − 1 und
3
falls m durch 4 teilbar ist, so auch a − 1.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
15 / 35
Pseudozufallszahlengeneratoren (PZZG)
Lineare Kongruenzgeneratoren
Example
Sei m = 53. Bestimmen Sie drei Paare von Zahlen (a, b) so dass der
zugehörige lineare Kongruenzgenerator maximale Periode 53 hat.
Lösung:
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
16 / 35
Folgenuniversen
Folgenuniversum
Eine unendliche (dezimale) Folge heisst ein Folgenuniversum (zur
Basis 10), wenn jede mögliche endliche Folge irgendwo (früher oder
später) in dieser Folge auftritt.
Example
1
Die (binäre) Folge 010110111011 ist kein (binäres)
Folgenuniversum.
2
Die Champernownesche Zahl C = 0.123456789101112131415... ist
ein Folgenuniversum.(Klar!)
3
Die Zahl Z = 0.248163264128... ist ein Folgenuniversum.
4
Es ist nicht bekannt, ob π = 3.14159265358979323846... ein
Folgenuniversum ist.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
17 / 35
Folgenuniversen
π ein Folgenuniversum?
Falls π ein Folgenuniversum wäre, so würde das spassigerweise die
folgenden Behauptungen implizieren:
Irgendwo in π befindet sich Ihr Geburtsdatum. (vgl.
www.angio.net/pi/piquery)
Irgendwo in π befindet sich Ihre AHV-Nummer.
Irgendwo in π befindet sich (in codierter Form) das Buch π die
Story von Jean-Paul Delahaye.
Irgendwo in π befindet sich (in codierter Form) der digitalisierte
Film Ihres gesamten Lebens, vom ersten bis zum letzten
Augenblick, aber auch eine Menge fehlerhafter Versionen dieses
Films.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
18 / 35
Approximative Entropie
Zufällig oder nicht?
Das Ergebnis einer Serie von 20 Münzwürfen (echter ZZG) ist eine
binäre Folge mit 20 Ziffern.
Beispiele:
(10011010010001110110)
(11111111111111111111)
(00000000000000000000)
Welche Folge ist zufällig (oder zufälliger als eine der anderen)?
Jede dieser Folgen kann auftreten und die zugehörigen
Wahrscheinlichkeiten sind alle gleich gross 1/220 !
Zufälligkeit wird im Folgenden zu einem graduierten Begriff.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
19 / 35
Approximative Entropie
Approximative Entropie
Problem
Wie kann man mathematisch exakt ausdrücken, dass die endliche
Folge
(10011010010001110110)
zufälliger ist, als die Folge
(11111111111111111111) ?
Lösung Approximative Entropie (AE):
Eine Zahlenfolge heisst zufällig, wenn für jede Länge m die Verteilung
aller Zeichenketten der Länge m maximale Entropie besitzt. Picus und
Singer, 1996; Picus und Kalman, 1997
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
20 / 35
Approximative Entropie
Example
x = (101010) und y = (110100)
m = 1, mögliche Folgen: 0, 1
x: 3 mal 0 und 3 mal 1
y: 3 mal 0 und 3 mal 1
m = 2, mögliche Folgen: 00, 01, 10, 11
x: 3 mal 10 und 2 mal 01
y: 1 mal 00, 1 mal 01, 2 mal 10, 1 mal 11
m = 3, mögliche Folgen: 000, 001, . . . , 111
x: 2 mal 101, 2 mal 010
y: 1 mal 110, 1 mal 101, 1 mal 010, 1 mal 100
m = 4, mögliche Folgen: 0000, 0001, . . . , 1111
x: 2 mal 1010, 1 mal 0101
y: 1 mal 1101, 1 mal 1010, 1 mal 0100
y ist bzgl. m = 1 gleich zufällig wie x, bzgl. m = 2, 3, 4 zufälliger als x!
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
21 / 35
Benfords Gesetz
Achtung: Die Intuition täuscht (manchmal)!!
Würden Sie das folgende Spiel gegen mich spielen?
Wir nehmen ein beliebiges Buch (z.B. die Bibel oder die
Börsenseite einer Tageszeitung) und wählen darin zufällig
eine Zahl aus (etwa die dritte von unten auf der 70-sten
Seite).
Ich gewinne 10.− wenn die erste Ziffer dieser Zahl 1, 2 oder 3
ist und Sie gewinnen, wenn diese Ziffer 4, 5, 6, 7, 8 oder 9 ist.
Es sollte(!?) doch gelten:
1 1 1
+ +
9 9 9
< P( erste Ziffer ist 3, 4, . . . , 9)
1 1 1 1 1 1
+ + + + +
=
9 9 9 9 9 9
P( erste Ziffer ist 1, 2 oder 3) =
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
22 / 35
Benfords Gesetz
Benfords Gesetz
Sie sollten das Spiel nicht spielen!!
Theorem (Benfords Gesetz,Frank Benford, 1883-1948 )
Ist d die erste Ziffer einer Dezimalzahl, so tritt sie in empirischen
Datensätzen („natürlich enstandene”) mit der folgenden
Wahrscheinlichkeit auf:
P( erste Ziffer ist d )
Thomas Zehrt (HSLU)
=
PZZGHash
log10
1
1+
d
HSLU.IT
23 / 35
Benfords Gesetz
Tabelle der Wahrcheinlichkeiten
d
1
2
3
4
5
6
7
8
9
Thomas Zehrt (HSLU)
P( erste Ziffer ist d )
0.301 = 30.1 %
0.176 = 17.6 %
0.125 = 12.5 %
0.097 = 9.7 %
0.079 = 7.9 %
0.067 = 6.7 %
0.058 = 5.8 %
0.051 = 5.1 %
0.046 = 4.6 %
PZZGHash
HSLU.IT
24 / 35
Benfords Gesetz
Beweis (zur Information)
Sei X eine Zahl. Dann ist die erste Ziffer dieser Zahl gleich d = 1, 2, . . .
oder 9 falls d · 10n ≤ X < (d + 1) · 10n gilt. Daraus folgt durch
Anwendung des dekadischen Logaritmus log = log10 :
⇐⇒
log(d · 10n )
log(d) + n
≤
≤
log(X)
log(X)
<
<
log((d + 1) · 10n )
log(d + 1) + n
Beachte: Da d = 1, 2, . . . oder 9 ist, gilt:
0 ≤ log(d) < 1
und
0 < log(d + 1) ≤ 1.
Die Ungleichung log(d) + n ≤ log(X) < log(d + 1) + n ist nun genau
dann erfüllt, wenn die erste Nachkommastelle von log(X) (nennen wir
sie Z), zwischen log(d) und log(d + 1) liegt:
log(d)
Thomas Zehrt (HSLU)
≤
Z
<
PZZGHash
log(d + 1)
HSLU.IT
25 / 35
Benfords Gesetz
Beweis (zur Information)
Annahme:
Die Wahrscheinlichkeit, dass Z in ein bestimmtes Intervall
[ log(d), log(d + 1) ) fällt, ist proportional zu dessen Länge:
0
log(1)
1
log(2)
log(5)
log(9)
P(erste Ziffer von X ist d)
= P(log(d) ≤ Z < log(d + 1))
= log(d + 1) − log(d)
1
= log 1 +
d
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
26 / 35
Hashfunktionen
Einstimmung
Eine Hashfunktion h dient (meist) dazu, aus einer grossen
Datenmenge k eine kleine (bzw. kleinere) Datenmenge h(k) (den so
genannten Hashwert) zu generieren.
Eine sehr einfache Hash-Funktion:
h : N −→ {0, 1, . . . , 9}
k 7−→ Letzte Ziffer von k
z.B. 123654 7−→ h(123654) = 4
21236 7−→ h(21236) = 6
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
27 / 35
Hashfunktionen
Eigenschaften von Hashfunktionen
1
Datenreduktion d.h. der Speicherbedarf für die Hashwerte ist
wesentlich kleiner als der für die Ausgangsdaten.
2
Chaotisch d.h. ähnliche Ausgangsdatenmengen sollen zu völlig
verschiedenen Hashwerten führen.
3
Surjektiv d.h. alle Werte im Wertebereich sollen tatsächlich von h
angenommen werden.
4
Effizienz d.h. die Funktion h sollte einfach zu berechnen sein und
dabei ohne grossen Speicherbedarf auskommen.
5
Kollisionsfreiheit d.h. es soll nicht leicht (oder eigentlich
unmöglich) sein, zwei verschiedene Ausgangsdatenmengen zu
finden, die von h auf den selben Hashwert abgebildet werden.
6
Unumkehrbarkeit d.h. zu der Funktion h gibt es keine leicht zu
berechnende „inverse” Funktion, mit der man für einen beliebigen
Hashwert eine passende Ausgangsdatenmenge finden kann.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
28 / 35
Hashfunktionen
Definition
Definition
Eine Abbildung
h : K −→ S = {0, 1, . . . , m − 1}
heisst Hashfunktion, wenn |K| ≥ m gilt.
S heisst die Menge aller Schlüssel oder der Adressraum. Ein Hashwert
h(k) wird als Adresse oder Hashadresse von k bezeichnet. Meist wird
in der Praxis nur ein Teil K ′ ⊂ K gehasht und S′ = { h(k) : k ∈ K ′ }.
β =
|S′ |
|S′ |
=
|S|
m
heisst Belegungsfaktor von h.
Der Fall k 6= k′ ∧ h(k) = h(k′ ) wird als Kollision bezeichnet.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
29 / 35
Hashfunktionen
Klassisches Beispiel: Die Divisionsrestmethode
Die Divisionsrestmethode ist die übliche mod-Abbildung von den
natürlichen Zahlen in die Restklassen mod m.
h : N −→ {0, 1, . . . , m − 1}
k 7−→ k mod m
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
30 / 35
Hashfunktionen
Klassisches Beispiel: Die Mittelquadratmethode
Eine Zahl k sei durch eine Ziffernfolge dargestellt:
k = kr kr−1 . . . k1 .
Man bilde k2 , dargestellt durch die Ziffernfolge
k2 = s2r s2r−1 . . . sr+1 sr sr−1 . . . s1
und entnehme einen Block mittlerer Ziffern (passender Länge) als
Hashwert h(k) von k:
k2 = s2r−1 . . . sr+1 sr sr−1 . . . s1
| {z }
=k(k)
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
31 / 35
Hashfunktionen
Divisionsrestmethode
Example
Gesucht sind hier Hashwerte der Länge 3 für Dezimalzahlen der
Länge 5.
k = 34′ 456
k2 = 1187 |{z}
215 936
=k(k)
k = 34′ 457
k2 = 1187 |{z}
284 849
=k(k)
k = 84′ 456
k2 = 7132 |{z}
815 936
=k(k)
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
32 / 35
Hashfunktionen
Divisionsrest- und Mittelquadratmethode
k
129
130
131
132
133
134
135
136
137
138
139
140
141
142
Thomas Zehrt (HSLU)
k mod 100
29
30
31
32
33
34
35
36
37
38
39
40
41
42
k2
16641
16900
17161
17424
17689
17956
18225
18496
18769
19044
19321
19600
19881
20164
PZZGHash
h(k)
64
90
16
42
68
95
22
49
76
04
32
60
88
16
←
←
HSLU.IT
33 / 35
Hashfunktionen
Message-Digest Algorithm 5 (MD5)
Message-Digest Algorithm 5 (MD5) ist eine weit verbreitete
krypthographische Hashfunktion, die einen 128 Bit Hashwert
(normalerweise als 32-stellige Hexadezimalzahl notiert) erzeugt.
Die errechneten MD5-Werte werden z.B. zur Integritätsprüfung
von Dateien eingesetzt, denn schon kleine Änderungen der
Dateien führen mit grosser Wahrscheinlichkeit zu völlig anderen
Hashwerten.
Der Algorithmus ist kompliziert und soll hier nicht weiter betrachtet
werden.
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
34 / 35
Hashfunktionen
Example
Folgende Beispiele zeigen einige Texte (ASCII-Eingaben) mit ihren
zugehörigen MD5-Hashwerten:
=
md5()
d4:1d:8c:d9:8f:00:b2:04:e9:80:09:98:ec:f8:42:7e
=
md5("Haengen nicht, laufen lassen.")
ab:7b:72:99:60:2e:85:b9:ac:97:01:fe:ac:59:7c:d9
=
md5("Haengen, nicht laufen lassen.")
a6:f3:a2:60:9a:90:cb:d0:7d:63:65:ca:d0:66:73:23
Thomas Zehrt (HSLU)
PZZGHash
HSLU.IT
35 / 35
Kryptographie
Thomas Zehrt
Abt. Informatik
HS Luzern
HTA.IT
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
1 / 22
Outline
1
Kryptographische Grundlagen
Symmetrische Verschlüsselung
Asymmetrische Verschlüsselung
2
Einwegfunktionen
3
Der RSA-Algorithmus
Mathematische Grundlagen
Schlüsselerzeugung und Durchführung des RSA
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
2 / 22
Kryptographische Grundlagen
Symmetrische Verschlüsselung
Einführung
1
Der älteste Zweig der Kryptographie beschäftigt sich mit der
Geheimhaltung von Nachrichten durch Verschlüsselung.
2
Die Nachricht soll dabei so verändert werden, dass kein
Angreifer sie lesen kann.
3
Damit dies möglich ist, muss der Empfänger dem Angreifer eine
Information voraushaben, die im allgemeinen als Schlüssel
bezeichnet wird. Mit Hilfe des Schlüssels kann der Empfänger den
empfangenen Geheimtext entschlüsseln.
4
In der klassischen Kryptographie wird das so realisiert, dass auch
der Sender diesen Schlüssel besitzt und damit die Nachricht
verschlüsselt. Deshalb sprechen wir hier auch von
symmetrischen Verfahren.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
4 / 22
Kryptographische Grundlagen
Symmetrische Verschlüsselung
Definition
Ein symmetrischer Verschlüsselungsalgorithmus besteht aus
1
einer Funktion f mit zwei Variablen,
2
dem Schlüssel k,
3
dem Klartext m und
4
dem Geheimtext c, der sich wie folgt ergibt:
c := f (k, m)
Die Funktion f muss umkehrbar sein, d.h. es muss eine Funktion f ⋆
geben, die die Wirkung von f neutralisiert. Es muss also gelten:
m = f ⋆ (k, c)
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
5 / 22
Kryptographische Grundlagen
Symmetrische Verschlüsselung
Ist f sicher?
Man muss grundsätzlich davon ausgehen, dass f und f ⋆ allgemein
bekannt sind (Kerckhoffsches Prinzip). Die Verschlüsselungsfunktion f
heisst sicher, wenn sie die folgenden Angriffe übersteht:
1
Ciphertext-Only-Attacke: Der Angreifer kennt eine begrenzte
Anzahl von Geheimtexten.
2
Known-Plaintext-Attacke: Der Angreifer kennt eine begrenzte
Anzahl von Geheimtexten mit den zugehörigen Klartexten.
3
Chosen-Plaintext-Attacke: Der Angreifer hat die Möglichkeit zu
einem (von ihm ausgewählten) Klartext an den zugehörigen
Geheimtext zu gelangen.
4
Chosen-Ciphertext-Attacke: Der Angreifer hat die Möglichkeit zu
einem (von ihm ausgewählten) Geheimtext an den zugehörigen
Klartext zu gelangen.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
6 / 22
Kryptographische Grundlagen
Symmetrische Verschlüsselung
Block- und Stromchiffren
Die Algorithmen zur symmetrischen Verschlüsselungsverfahren von
Daten unterteilen sich in Blockchiffren und Stromchiffren
Bei der Blockschiffre wird die Nachricht in Blöcke m1 , m2 , m3 , . . .
fester Länge eingeteilt und jeder Block wird mit k einzeln
verschlüsselt: ci = f (k, mi ) für i = 1, 2, 3, . . .
Beispiele sind DES (Data Encryption Standard und IDEA
(International Data Encryption Algorithm).
Bei der Stromchiffre wird die Nachricht zeichenweise
verschlüsselt, wobei sich in der Regel der aktuell verwendetet
Schlüsselstrom von Zeichen zu Zeichen ändert.
Ein typisches Beispiel ist das One-time-pad.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
7 / 22
Kryptographische Grundlagen
Asymmetrische Verschlüsselung
Einführung
Bei der symmetrischen Verschlüsselung ist es notwendig, dass der
Empfänger einen (geheimen) Schlüssel braucht und sehr lange ging
man davon aus, dass auch der Sender einen geheimen Schlüssel (den
gleichen wie der Empfänger) braucht.
Die Geburtsstunde der asymmetrischen Kryptographie schlug, als
man sich die Frage, ob das so sein muss, ernsthaft stellte.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
9 / 22
Kryptographische Grundlagen
Asymmetrische Verschlüsselung
Allgemeiner asymmetrischer Algorithmus
Jedem Teilnehmer T des Systems wird ein privater Schlüssel
d = dT (geheim) und ein öffentlicher Schlüssel e = eT zugeordnet.
Der Algorithmus (Funktion) f ordnet unter einem öffentlichen
Schlüssel e jedem Klartext m einen Geheimtext c = fe (m) zu.
Umgekehrt ordnet f unter jedem privaten Schlüssel d jedem
Geheimtext c einen Klartext m′ = fd (c) zu.
Natürlich müssen die folgenden Eigenschaften erfüllt sein:
1
Korrekte Entschlüsselung: m′ = fd (c) = fd (fe (m)) = m
2
Public-Key-Eigenschaft: Es ist praktisch unmöglich aus der
Kenntnis von e (bzw. fe ) auf d (bzw. fd ) zu schliessen.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
10 / 22
Kryptographische Grundlagen
Asymmetrische Verschlüsselung
Allgemeiner asymmetrischer Algorithmus
Um einem Teilnehmer T eine verschlüsselte Nachricht zu senden,
muss man wie folgt vorgehen:
1
Ermitteln des öffentlichen Schlüssels e von T (Suche in einem
elektronischen „Telefonbuch„)
2
die Funktion fe wird auf die zu verschlüsselnde Nachricht m
angewendet und man erhält c = fe (m)
3
c wird (über einen öffentlichen Kanal) an T gesendet
4
nur T kann mit seinem privaten Schlüssel d die Nachricht
entschlüsseln: m = fd (c) = fd (fe (m)).
Der RSA-Algorithmus ist der Prototyp für die
Public-Key-Kryptographie.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
11 / 22
Einwegfunktionen
Definition und Analogon
Eine Einwegfunktion ist eine Funktion, die einfach auszuführen, aber
schwer (oder besser: praktisch unmöglich) zu invertieren ist.
Definition
Eine Einwegfunktion ist eine Abbildung f einer Menge X in eine Menge
Y, so dass f (x) für jedes Element in X leicht berechnet werden kann,
während es für jedes y aus Y extrem schwer ist, ein Urbild x zu finden.
Ist eine Einwegfunktion bijektiv, nennen wir sie Einwegpermutation.
Eine Einwegfunktion heisst kollisionsfrei, falls es praktisch unmöglich
ist, zwei verschiedenen x, x′ ∈ X mit f (x) = f (x′ ) zu finden.
Ein Telefonbuch ist ein ganz alltägliches Beispiel einer Einwegfunktion.
Zu einem Namen kann leicht und schnell die zugehörige
Telefonnummer bestimmt werden, aber es ist sehr schwierig zu einer
gegebenen Nummer den Besitzer des Anschlusses zu bestimmen.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
12 / 22
Einwegfunktionen
Bemerkungen
1
2
Einwegfunktionen spielen in der theoretischen und praktischen
Kryptographie eine entscheidende Rolle, aber man weiss bis
heute nicht, ob es Einwegfunktionen überhaupt gibt!!
Einige Einwegfunktionen (ach heutigem Wissensstand)
1
diskrete Exponentialfunktion
Sei p eine Primzahl und g eine natürliche Zahl mit g ≤ p − 1. Dann
ist die diskrete Exponentialfunktion zur Basis g definiert durch:
f (k)
=
gk mod p
Die Umkehrfunktion wird diskreter Logarithmus dlogg genannt:
dlogg (gk )
2
= k.
Quadrieren modulo n = pq
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
13 / 22
Einwegfunktionen
Trapdoor-Einwegfunktionen
Einwegfunktionen werden zwar in der Kryptographie angewendet,
aber ihr Einsatzbereich ist auf Berechnungen beschränkt, die alle
Beteiligten durchführen dürfen.
In der Praxis benötigt man daher noch ein weiteres Konzept.
Definition
Eine Trapdoor-Einwegfunktionen ist eine Einwegfunktion (also eine
sehr schwer zu invertierende Funktion), zu der es aber eine
Geheiminformation („Geheimtür„ engl. trapdoor) gibt, mit deren Hilfe
man die Funktion leicht invertieren kann.
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
14 / 22
Der RSA-Algorithmus
Mathematische Grundlagen
Satz (Satz von Euler)
Sei n das Produkt zweier verschiedener Primzahlen p und q. Dann gilt
für jede natürliche Zahl m ≤ n und jede natürliche Zahl k:
mk(p−1)(q−1)+1 ≡ m mod n
Example
Sei n = 10, k = 1 und (2 − 1)(5 − 1) = 4. Dann gilt
14+1 mod 10 =
24+1 mod 10 =
34+1 mod 10 =
44+1 mod 10 =
74+1 mod 10 =
64+1 mod 10 =
745 mod 10 =
9493 mod 10 =
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
16 / 22
Der RSA-Algorithmus
Schlüsselerzeugung und Durchführung des RSA
Zur Realisierung des RSA-Algorithmus geht man wie folgt vor:
1
Wähle zwei grosse (200 Stellen) Primzahlen p und q
2
Berechne n := p · q
3
Berechne φ(n) = (p − 1)(q − 1)
4
Wähle eine zu φ(n) teilerfremde Zahl e
5
Bestimme eine Zahl d (z.B. mit dem so genannten erweiterten
Euklidischen Algorithmus) mit
e · d = k(p − 1)(q − 1) + 1
für eine natürliche Zahl k.
6
Geheimer (persönlicher) Schlüssel: d
(auch p, q und φ(n) müssen geheim gehalten werden)
7
Öffentlicher Schlüssel
Thomas Zehrt (HSLU)
: n und e
Kryptographie
HSLU.IT
18 / 22
Der RSA-Algorithmus
Schlüsselerzeugung und Durchführung des RSA
Verschlüsseln und Entschlüsseln
1
Verschlüsseln eines Klartextes m (mit dem öffentlichen Schlüssel):
fe (m) := me mod n
2
Entschlüsseln eines Geheimtextes c (mit dem persönlichen
Schlüssel):
fd (c) := cd mod n
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
19 / 22
Der RSA-Algorithmus
Schlüsselerzeugung und Durchführung des RSA
Kodieren einer Nachricht
Example
Wähle p = 307 und q = 859 und n := p · q = 263′ 713
φ(263′ 713) = (p − 1)(q − 1) = 262′ 548
e = 1721 ist zu φ(263′ 713) = 262′ 548 teilerfremd
Bestimmung von d = 1373 (mit Maple)
Geheimer (persönlicher) Schlüssel: d = 1373
: n = 263′ 713 und e = 1721
Öffentlicher Schlüssel
Verschlüsseln: f1721 (138) = 1381721 mod 263′ 713 = ?
Entschlüsseln: f1373 (123′ 456) = 123′ 4561373 mod 263′ 713 = ?
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
20 / 22
Der RSA-Algorithmus
Schlüsselerzeugung und Durchführung des RSA
Public-Key-Eigenschaft des RSA
Wenn man nur die Zahl n kennt (und nicht die beiden Faktoren p und q
oder die Zahl φ(n) = (p − 1)(q − 1)), so kann man aus e nicht (schnell)
d berechnen!
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
21 / 22
Der RSA-Algorithmus
Schlüsselerzeugung und Durchführung des RSA
Korrektheit des RSA
fd (c)
:= cd mod n
Definition der Funktion fd
= (me )d mod n
Wir wissen: c = me mod n
= me·d mod n
Exponentialgesetz
= mk(p−1)(q−1)+1 mod n
Konstruktion von d
=m
Satz von Euler
Thomas Zehrt (HSLU)
Kryptographie
HSLU.IT
22 / 22
Einführung in die Codierungstheorie
Thomas Zehrt
Abt. Informatik
HS Luzern
HSLU.IT
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
1 / 25
Outline
1
Einführung und Beispiele
Einführung
Beispiele
2
Codierungstheorie
Wichtige Begriffe
Ziele der Codierungstheorie
3
Konstruktion von Hadamard-Codes
Hadamard-Matrizen
Konstruktion von Hadamard-Codes
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
2 / 25
Einführung und Beispiele
Einführung
Situation
Quelle
Nachricht: Folge
von Symbolen
über einem
Alphabet B
Kanaldecodierer
Decodiert das Codewort
über A
Converter
Übersetzung in
eine Nachricht
über einem
Alphabet B
Kanal
!Störungen!
Converter
Übersetzung in
eine Nachricht
über einem
Alphabet A
Empfänger
Kanalcodierer
Codiert die Nachricht
in ein Codewort über A
Hauptaufgabe der Codierungstheorie:
Konstruktion von Codes zur Fehlererkennung (und ggf. -korrektur)
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
4 / 25
Einführung und Beispiele
Beispiele
Parity-Check Code
die Nachrichten über A = B = {0, 1}: 00, 01, 10 und 11
Codierung:
00 7→ 000
01 7→ 011
10 7→ 101
11 7→ 110
Es gibt acht 0-1-Worte der Länge 3, von denen nur die mit einer
geraden Anzahl von Einsen tatsächlich Codeworte sind.
Entsteht genau ein Fehler, wird der entdeckt, kann aber nicht
(eindeutig) korrigiert werden.
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
6 / 25
Einführung und Beispiele
Beispiele
Wiederholungscodes
die Nachrichten über A = B = {0, 1}: 00, 01, 10 und 11
Codierung (3-fache Wiederholung):
00 7→ 000000
01 7→ 010101
10 7→ 101010
11 7→ 111111
Entsteht genau ein Fehler, wird der entdeckt und kann korrigiert
werden.
Was passiert bei zwei Fehlern?
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
7 / 25
Einführung und Beispiele
Beispiele
ISBN-Code (International Standard Book Number)
k10
− k9 k8 k7 − k6 k5 k4 k3 k2 − k1
− |{z}
528 −
3
|{z}
Sprache Verlag
06783
7
| {z } − |{z}
?
Buch-Nr.
B = {0, 1, . . . , 9} (uncodiert) und A = {0, 1, . . . 9, X = 10}
Codieren der Nachricht: Anhängen der Prüfziffer k1 aus der
Menge {0, 1, 2, . . . , X} so dass k10 − k9 k8 k7 − k6 k5 k4 k3 k2 − k1
folgende Eigenschaft hat:
10
X
i · ki mod 11 = 0
i=1
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
8 / 25
Einführung und Beispiele
Beispiele
Example
3 − 528 − 06783 − 7
10 · 3 + 9 · 5 + 8 · 2 + 7 · 8 + 6 · 0
+5 · 6 + 4 · 7 + 3 · 8 + 2 · 3 + 1 · 7 = 242 = 11 · 22.
Dieser Code ist (wahrscheinlich) ein gültiger ISBN-Code.
3 − 528 − 06873 − 7
10 · 3 + 9 · 5 + 8 · 2 + 7 · 8 + 6 · 0
+5 · 6 + 4 · 8 + 3 · 7 + 2 · 3 + 1 · 7 = 243 = 11 · 22 + 1
Dieser Code ist kein gültiger ISBN-Code.
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
9 / 25
Einführung und Beispiele
Beispiele
[7, 4]-Hamming-Code
die Nachrichten über A = B = {0, 1}: {(x0 , x1 , x2 , x3 ) : xi ∈ {0, 1}}
Codierung:
(x0 , x1 , x2 , x3 ) 7→ (x0 , x1 , x2 , x3 , x4 , x5 , x6 )
x4
=
x1 + x2 + x3 mod 2
x5
=
x0 + x2 + x3 mod 2
x6
=
x0 + x1 + x3 mod 2
Wieviele Codeworte gibt es? Zählen Sie alle auf! An wievielen
Stellen unterscheiden sich zwei beliebige Codeworte mindestens?
Kann man einen einzelnen Fehler finden und korrigieren?
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
10 / 25
Codierungstheorie
Wichtige Begriffe
Definition
Mit {0, 1}n bezeichnen wir die Menge aller binären Worte der festen
Länge n. Eine M-elementige Teilmenge C von {0, 1}n heisst
(binärer) Code der Länge n.
Der Minimalabstand d von C ist definiert durch
d = min{d(x, y) : x, y ∈ C und x 6= y}
wobei der Abstand d(x, y) von x und y die Anzahl der Stellen ist, an
denen sich x von y unterscheidet.
C heisst dann auch ein (n, M, d)-Code.
Ein (n, M, d)-Code ist besser als ein (n, M ′ , d)-Code, falls M > M ′ .
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
12 / 25
Codierungstheorie
Wichtige Begriffe
Aufgabe:
Bestimmen Sie für die drei binären Codes in der Einführung
(Parity-Check, Wiederholungscode und [7, 4]-Hamming-Code) jeweils
die Zahlen n, M und d.
Lösung:
Parity-Check Code
Wiederholungscode
[7, 4]-Hamming-Code
Thomas Zehrt (HSLU)
Codierung
n
3
M
4
4
d
7
HSLU.IT
13 / 25
Codierungstheorie
Ziele der Codierungstheorie
Ein Ziel der Codierungstheorie
Ein wichtiges Ziel der Codierungstheorie ist das folgende:
Zu gegebenen (festen) Zahlen n (Länge der Codeworte) und d
(Minimalabstand der Codeworte) soll das grösstmögliche M
gefunden werden, so dass ein (n, M, d)-Code existiert.
Dieses Problem ist in dieser Allgemeinheit ungelöst und nur für einige
Fälle gibt es Antworten. Einer der gelösten Fälle ist d > n2 .
Theorem (Plotkin-Schranke)
Im Fall d > n2 erfüllt jeder (n, M, d)-Code die so genannte
Plotkin-Schranke:
M ≤
Thomas Zehrt (HSLU)
d
d−
Codierung
n
2
HSLU.IT
15 / 25
Codierungstheorie
Ziele der Codierungstheorie
Aufgabe:
Erfüllen die drei binären Codes in der Einführung (Parity-Check,
Wiederholungscode und [7, 4]-Hamming-Code) die Plotkin-Schranke
M ≤
Thomas Zehrt (HSLU)
d
d−
Codierung
n
2
HSLU.IT
16 / 25
Codierungstheorie
Ziele der Codierungstheorie
Hadamard-Codes
Wenn wir nun also für gegebene Zahlen n und d mit d > 2n einen
(n, M, d)-Code konstruieren könnten, der die Plotkin-Schranke genau
trifft, d.h. mit
M =
d
d−
n
2
so wissen wir, dass kein Code mit gleichem n und d besser sein kann!
Wir wollen uns im folgenden mit der Konstruktion solcher Codes
beschäftigen und diese zu Ehren von Jacques Solomon Hadamard
(1865-1963) als Hadamard-Codes bezeichnen.
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
17 / 25
Konstruktion von Hadamard-Codes
Hadamard-Matrizen
Hadamard-Matrizen
Ein möglicher Ausgangspunkt zur Konstruktion von Hadamard-Codes
sind so genannte Hadamard-Matrizen.
Definition
Hadamard-Matrizen sind reelle (m × m)-Matrizen H = (hij ) mit den
Eigenschaften:
für alle i, j gilt hij = ±1
(d.h. alle Einträge der Matrix sind entweder 1 oder −1) und
H · H T = H T · H = m · Im
(d.h. wird die Matrix H mit ihrer Transponierten multipliziert,
erhalten wir die m-fache Einheitsmatrix).
Enthalten die erste Zeile (und die erste Spalte) einer Hadamard-Matrix
H nur Einsen so heisst H normiert.
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
19 / 25
Konstruktion von Hadamard-Codes
Hadamard-Matrizen
Hadamard-Matrizen
Example
1












1
1
1
1
1
1
1
1
,
1
−1
1
−1
1
−1
1
−1
1
1
1 −1
1
1
−1
−1
1
1
−1
−1
1
−1
−1
1
1
−1
−1
1
Thomas Zehrt (HSLU)


1
1
1
1
 1
1 −1 −1 
 und
, 
 1 −1
1 −1 
1 −1 −1
1

1
1
1
1
1 −1
1 −1 

1
1 −1 −1 

1 −1 −1
1 

−1 −1 −1 −1 

−1
1 −1
1 

−1 −1
1
1 
−1
1
1 −1
Codierung
HSLU.IT
20 / 25
Konstruktion von Hadamard-Codes
Hadamard-Matrizen
Einige Bemerkungen zu Hadamard-Matrizen
1
Es sei m > 2. Falls eine (m × m)-Hadamard-Matrix existiert, so ist
m durch 4 teilbar, d.h. m = 4k.
2
Es gibt einige Algorithmen (auf die wir hier nicht weiter eingehen
wollen), um aus bekannten Hadamard-Matrizen neue und
grössere Hadamard-Matrizen zu konstruieren.
3
Es ist eine berühmte Vermutung, dass für jede Zahl k eine
(4k × 4k)-Hadamard-Matrix existiert. Der kleinste noch ungelöste
Fall ist k = 167, d.h. bisher weiss niemand, ob es eine
(668 × 668)-Hadamard-Matrix gibt!
4
Aus jeder (4k × 4k)-Hadamard-Matrix kann man einen
4k , |{z}
2k )-Code konstruieren.
(4k
− 1}, |{z}
| {z
n
M
Thomas Zehrt (HSLU)
d
Codierung
HSLU.IT
21 / 25
Konstruktion von Hadamard-Codes
Hadamard-Matrizen
Aufgabe
Zeigen Sie, dass ein (4k − 1, 4k, 2k)-Code die Plotkin-Schranke (exakt)
erfüllt.
Lösung: (4k
− 1}, |{z}
4k , |{z}
2k )-Code
| {z
n
M
d
d
d−
n
2
2k
2k − 4k−1
2
2k
= 4k 4k−1
2 − 2
= 4k
=
Fertig!
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
22 / 25
Konstruktion von Hadamard-Codes
Konstruktion von Hadamard-Codes
Konstruktion von Hadamard-Codes am Beispiel
1
2
3
Ausgangspunkt: normierte
(4k × 4k)-Hadamard-Matrix (k = 1)


1
1
1
1
 1

1
−1
−1


 1 −1
1 −1 
1 −1 −1
1
Wir streichen
 die erste Spalte und ersetzen dann jede −1 durch 0

1 1 1
 1 0 0 


 0 1 0 
0 0 1
Die Zeilen dieser Matrix bilden die Codewörter eines
(4k − 1, 4k, 2k) = (3, 4, 2)-Codes: (111), (100), (010), (001)
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
24 / 25
Konstruktion von Hadamard-Codes
Konstruktion von Hadamard-Codes
Aufgabe
Konstruieren Sie nach dem obigen Beispiel den Hadamard-Code zur
Hadamard-Matrix


1
1
1
1
1
1
1
1
 1 −1
1 −1
1 −1
1 −1 


 1
1 −1 −1
1
1 −1 −1 


 1 −1 −1
1
1 −1 −1
1 

.
 1

1
1
1
−1
−1
−1
−1


 1 −1
1 −1 −1
1 −1
1 


 1
1 −1 −1 −1 −1
1
1 
1 −1 −1
1 −1
1
1 −1
Notieren Sie alle Codewörter. Wie gross sind die Zahlen n, M und d?
Thomas Zehrt (HSLU)
Codierung
HSLU.IT
25 / 25
Bayes-Spamfilter
Thomas Zehrt
Abt. Informatik
HS Luzern
HSLU.IT
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
1 / 20
Outline
1
Wiederholung: Stochastik
Die bedingte Wahrscheinlichkeit
Der Satz von der totalen Wahrscheinlichkeit
Der Satz von Bayes
2
Sortieren der E-Mails
3
Abschätzen von p(S) und p(N)
4
Einfache Bayes-Spamfilter
5
Paare von Worten
6
k-Tupel von Worten
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
2 / 20
Wiederholung: Stochastik
Die bedingte Wahrscheinlichkeit
Bedingte WK
gegeben:
Zufallsexperiment mit dem Wahrscheinlichkeitsraum (S, p)
Zusatzinformation über den Ausgang des Experimentes: s ∈ F ⊂ S
E ein beliebiges Ereignis
U
E
F
F
E
S
Frage: Mit welcher Wahrscheinlichkeit tritt E ein, wenn man weiss,
dass F eintritt bzw. eingetreten ist?
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
4 / 20
Wiederholung: Stochastik
Die bedingte Wahrscheinlichkeit
Bedingte WK
Definition
gegeben:
(S, p) ein beliebiger Wahrscheinlichkeitsraum
F ein Ereignis mit p(F) > 0 (p(E) > 0)
E ein beliebiges Ereignis
Dann ist die bedingte Wahrscheinlichkeit p(E|F) von E unter F definiert
als:
p(E|F) =
Thomas Zehrt (HSLU)
p(E ∩ F)
p(F)
p(F|E) =
Bayes-Spamfilter
p(E ∩ F)
.
p(E)
HSLU.IT
5 / 20
Wiederholung: Stochastik
Der Satz von der totalen Wahrscheinlichkeit
Satz von der totalen Wahrscheinlichkeit
Theorem (Satz von der totalen Wahrscheinlichkeit)
gegeben:
F, F ⊂ S vollständige Zerlegung von S (paarweise disjunkte
Ereignisse deren Vereinigung ganz S ist)
p(F), p(F) > 0
Ereignis E
Dann gilt der Satz von der totalen Wahrscheinlichkeit:
p(E)
Thomas Zehrt (HSLU)
=
p(F) · p(E|F) + p(F) · p(E|F)
Bayes-Spamfilter
HSLU.IT
7 / 20
Wiederholung: Stochastik
Der Satz von der totalen Wahrscheinlichkeit
Skizzen
F
11111111111111111
00000000000000000
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
E
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
00000000000000000
11111111111111111
p(F )
p(F )
F
p(E |F )
F
p(E |F )
F
S
Thomas Zehrt (HSLU)
E
Bayes-Spamfilter
E
HSLU.IT
8 / 20
Wiederholung: Stochastik
Der Satz von Bayes
Theorem
gegeben:
F, F ⊂ S (vollständige Zerlegung)
p(F), p(F) > 0
Ereignis E mit p(E) > 0
Dann gilt der Satz von Bayes:
p(F|E)
=
Thomas Zehrt (HSLU)
p(F) p(E|F)
p(E)
=
p(F) p(E|F)
p(F) · p(E|F) + p(F) · p(E|F)
Bayes-Spamfilter
HSLU.IT
10 / 20
Sortieren der E-Mails
1
Der User untersucht sämtliche E-Mails, die er an einem Tag
empfängt und klassifiziert sie als S(pam) oder N(achrichte).
2
Für jedes vorkommende Wort „w“ zählt das Programm alle E-Mails
in S, die (mind. einmal) „w“ enthalten: nS (w)
in N, die (mind. einmal) „w“ enthalten: nN (w)
3
Für jedes Wort „w“ berechnen wir dann die empirischen
Wahrscheinlichkeiten dafür, dass eine Nachricht aus
S dieses Wort enthält:
p(w) =
nS (w)
≈ p(w|S)
|S|
N dieses Wort enthält:
q(w) =
Thomas Zehrt (HSLU)
nN (w)
≈ p(w|N)
|N|
Bayes-Spamfilter
HSLU.IT
11 / 20
Sortieren der E-Mails
Example
Nach einer solchen Untersuchung könnten wir das folgenden Resultat
haben: |S| = 10, |N| = 40 und
Wort „w”
Nigeria
Bayes
Kredit
Programm
Danke
und
Thomas Zehrt (HSLU)
nS (w)
1
0
4
1
4
10
p(w)
1/10
0/10
4/10
1/10
4/10
10/10
Bayes-Spamfilter
nN (w)
0
1
2
3
4
40
q(w)
0/40
1/40
2/40
3/40
4/40
40/40
HSLU.IT
12 / 20
Abschätzen von p(S) und p(N)
Nehmen wir an, dass wir weitere statistische Informationen über die
Verteilung von Spamnachrichten haben:
Innerhalb einer zeitlichen Periode haben wir unter sämtlichen
eingegangenen Emails
s Spamnachrichten und
n echte Nachrichten
gefunden!
Dann können die beiden Wahrscheinlichkeiten p(S) und p(N) wie folgt
abgeschätzt werden:
p(S) =
Thomas Zehrt (HSLU)
s
s+n
p(N) =
Bayes-Spamfilter
n
s+n
HSLU.IT
13 / 20
Einfache Bayes-Spamfilter
Ausgangspunkt:
Nehmen wir an, dass wir ein neues E-Mail empfangen haben, welches
ein bestimmtes Wort „w“ enthält.
r(w) sei die approximative Wahrscheinlichkeit, dass eine E-Mail,
welche „w“ enthält , Spam ist. Nach dem Satz von Bayes gilt
p(S|w) =
≈
p(S) · p(w|S)
p(S) · p(w|S) + p(N) · p(w|N)
p(S) · p(w)
= r(w)
p(S) · p(w) + p(N) · q(w)
Ist die Zahl r(w) nun grösser als eine vorgegebene Schranke (im
Folgenden stets 0.9), wird das empfangene E-Mail als Spam
klassifiziert.
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
14 / 20
Paare von Worten
Nehmen wir an, dass eine E-Mail die Worte w1 und w2 enthält
r(w1 , w2 ) sei die approximative Wahrscheinlichkeit, dass eine E-Mail,
welche w1 und w2 enthält , Spam ist. Nach dem Satz von Bayes gilt
p(S|w1 ∩ w2 )
=
p(S) · p(w1 ∩ w2 |S)
p(S) · p(w1 ∩ w2 |S) + p(N) · p(w1 ∩ w2 |N)
≈
p(S) · p(w1 |S) · p(w2 |S)
p(S) · p(w1 |S) · p(w2 |S) + p(N) · p(w1 |N) · p(w2 |N)
≈
p(S) · p(w1 ) · p(w2 )
= r(w1 , w2 )
p(S) · p(w1 ) · p(w2 ) + p(N) · q(w1 ) · q(w2 )
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
15 / 20
Paare von Worten
Die beiden Wahrscheinlichkeiten im ersten Umformungsschritt oben
p(w1 ∩ w2 |S) und
p(w1 ∩ w2 |N)
könnten auch direkt durch empirische Wahrscheinlichkeiten ersetzt
werden, was zu verbesserten Bayes-Spamfiltern führt.
Wir nehmen aber stets an, dass alle Worte stochastisch unabhängig
sind.
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
16 / 20
Paare von Worten
Example
Angenommenm, wir haben einen Bayes-Spamfilter mit 2000
Spammails und 1000 echten Nachrichten trainiert. Das Wort „stock“
tauche dabei in 400 Spammails und in 60 echten Nachrichten, das
Wort „undervalued“ in 200 Spammails und in 25 echten Nachrichten.
400
1
=
2000
5
3
60
=
q(stock) =
1000
50
p(stock) =
200
1
=
2000
10
25
1
q(undervalued) =
=
1000
40
p(undervalued) =
Nun empfangen wir eine neue Nachricht, die beide Worte enthält. Wie
wird unser (hoffentlich gut) trainierter Bayes-Spamfilter die Nachricht
klassifizieren?
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
17 / 20
Paare von Worten
Example
Es gilt
r(stock, undervalued)
p(stock) · p(underv.)
=
p(stock) · p(underv.) + q(stock) · q(underv.)
1 1
·
40
5 10
=
≈ 0.93 > 0.9.
=
3 1
1 1
43
·
+
·
5 10 50 40
Da r(stock, undervalued) > 0.9 ist, wird die Nachricht also als Spam
klassifiziert.
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
18 / 20
k-Tupel von Worten
r(w1 , w2 , . . . , wk ) sei die approximative Wahrscheinlichkeit, dass eine
E-Mail, welche alle Worte w1 , w2 , . . . , wk enthält , Spam ist.
Das im vorhergehenden Kapitel entwickelte Verfahren, lässt sich direkt
auf k Worte verallgemeinern:
k
!
\
p S wi
i=1
p(S) ·
p(wi )
i=1
≈ r(w1 , w2 , . . . , wk ) =
p(S) ·
k
Y
i=1
Thomas Zehrt (HSLU)
k
Y
Bayes-Spamfilter
p(wi ) + p(N) ·
k
Y
.
q(wi )
i=1
HSLU.IT
19 / 20
k-Tupel von Worten
Offensichtlich?!
Für effektive Bayes-Spamfilter sollte man nur Worte wählen, deren
empirische Wahrscheinlichkeit p(w) (dafür, dass sie in Spammails
auftauchen), sehr gross oder sehr klein ist.
Einige schlecht geeignete Worte: und, and, oder, ...
Thomas Zehrt (HSLU)
Bayes-Spamfilter
HSLU.IT
20 / 20
Graphen I
Thomas Zehrt
Abt. Informatik
HS Luzern
HSLU.IT
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
1 / 31
Outline
1
Ungerichtete und gerichtete Graphen
Ungerichtete Graphen
Gerichtete Graphen
2
Wichtige (ungerichtete) Graphen
Vollständige Graphen
Wege und Kreise
Bäume
Vollständige bipartite Graphen
3
Graphen und Matrizen
4
Der PageRank-Algorithmus
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
2 / 31
Einführung
Graphen:
mathematische Modelle für netzartige Strukturen in Natur und Technik,
z.B. für
Strassennetze,
Computernetze,
elektrische Schaltungen,
Programmablaufpläne,
Wassernetze,
chemische Moleküle,
wirtschaftliche Verflechtungsnetze, ...
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
3 / 31
Einführung
Graphen bestehen aus zwei verschiedenen Mengen von Objekten:
1
Knoten: Orte im Netz (z.B. Computer im Netzwerk)
2
Kanten: Verbindungen zwischen Knoten (z.B.
Übertragungsleitungen)
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
4 / 31
Ungerichtete und gerichtete Graphen
Ungerichtete Graphen
Definition
Ein ungerichteter Graph G = (V, E) besteht aus
einer Knotenmenge V = V(G) (engl. vertex) mit n := |V| < ∞
einer Kantenmenge E = E(G) (engl. edge) mit m := |E| < ∞
wobei jeder Kante e ∈ E zwei (nicht notwendigerweise verschiedene)
Knoten aus V zugeordnet sind.
Schreibweise: e = {u, v}
Die Knoten u und v heissen dann Endknoten der Kante e.
Eine Kante der Form {v, v} heisst Schlinge und zwei verschiedene
Kanten der Form e = {u, v} und f = {u, v} heissen parallel.
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
6 / 31
Ungerichtete und gerichtete Graphen
Ungerichtete Graphen
Example
Die beiden Listen
V = {1, 2, 3, 4, 5}
E = {{1, 2}, {1, 3}, {1, 4}, {2, 3},
{2, 4}, {3, 4}, {3, 5}, {4, 5}}
entsprechen dem (gezeichneten) Graphen
5
Thomas Zehrt (HSLU)
4
3
1
2
Graphen I
HSLU.IT
7 / 31
Ungerichtete und gerichtete Graphen
Ungerichtete Graphen
Definition
Der Grad deg(v) einer Ecke v ∈ V ist die Anzahl der Kanten von G, die
v enthalten. Schlingen werden doppelt gezählt.
deg(v) = 0 −→ v heisst isolierte Ecke
deg(v) = 1 −→ v heisst Endecke
Addiert man die Grade aller Ecken eines Graphen, zählt man alle
Kanten des Graphen doppelt. Es gilt also:
Satz
X
deg(v) = 2 · |E|
v∈V
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
8 / 31
Ungerichtete und gerichtete Graphen
Ungerichtete Graphen
Eine Liste (d1 , d2 , . . . , dn ) (d1 ≥ d2 ≥ · · · ≥ dn ) von natürlichen Zahlen
wird Gradliste eines Graphen G = (V, E) der Ordnung n = |V|
genannnt, wenn man die Ecken von G durch V = {v1 , v2 , . . . , vn } so
nummerieren kann, dass dk = deg(vk ) für alle k = 1, 2, . . . , n gilt.
Der Maximalgrad ∆(G) ist das Maximum, der Minimalgrad δ(G) das
Minimum der Grade aller Knoten von G:
∆(G) =
δ(G) =
Thomas Zehrt (HSLU)
max deg(v)
v∈V(G)
min deg(v)
v∈V(G)
Graphen I
HSLU.IT
9 / 31
Ungerichtete und gerichtete Graphen
Ungerichtete Graphen
Example
5
4
3
1
2
n = |V| = 5, m = |E| = 8
Gradliste: (4, 4, 3, 3, 2)
4 + 4 + 3 + 3 + 2 = 16 = 2 · 8
∆(G) = 4
δ(G) = 2
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
10 / 31
Ungerichtete und gerichtete Graphen
Gerichtete Graphen
Definition
−
→
−
→
Ein gerichteter Graph G = (V, E ) besteht aus
einer Knotenmenge V = V(G) (engl. vertex) mit n := |V| < ∞
−
→ −
→
−
→
einer Kantenmenge E = E (G) (engl. edge) mit m := | E | < ∞
−
→
wobei jeder Kante e ∈ E zwei (nicht notwendigerweise verschiedene)
Knoten aus V zugeordnet sind.
Schreibweise: e = (u, v)
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
12 / 31
Wichtige (ungerichtete) Graphen
Vollständige Graphen
Ein vollständiger Graph Kn mit n Knoten besitzt zwischen je zwei
Knoten stets genau eine Kante.
Satz
Ein vollständiger Graph Kn mit n Knoten besitzt genau
n
(n − 1)n
m =
=
Kanten.
2
2
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
14 / 31
Wichtige (ungerichtete) Graphen
Wege und Kreise
Der Weg Pn (engl. path) besitzt die Knotenmenge {1, 2, . . . , n} und die
Kantenmenge
{{1, 2}, {2, 3}, . . . , {n − 1, n}}.
Ein Kreis Cn (engl. cycle) besitzt die Knotenmenge {1, 2, . . . , n} und die
Kantenmenge
{{1, 2}, {2, 3}, . . . , {n − 1, n}, {n, 1}}
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
16 / 31
Wichtige (ungerichtete) Graphen
Bäume
Ein Baum, Bezeichnung Tn (engl. tree) für einen Baum mit n Knoten,
ist ein zusammenhängender Graph, der keinen Kreis enthält.
Satz
Ein Baum mit n Knoten besitzt genau n − 1 Kanten.
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
18 / 31
Wichtige (ungerichtete) Graphen
Vollständige bipartite Graphen
Ein vollständiger bipartiter Graph G = (V, E) besitzt eine Knotenmenge
V = U ∪ W mit U ∩ W = ∅, so dass folgendes gilt:
es gibt keine Kante zwischen Knoten aus U,
es gibt keine Kante zwischen Knoten aus W und
jeder Knoten aus U ist mit jedem Knoten aus W durch genau eine
Kante verbunden.
Bezeichnung: Kp,q falls |U| = p und |W| = q
K4,3
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
20 / 31
Graphen und Matrizen
Die Darstellung eines Graphen durch eine Zeichnung ist zwar
anschaulich und oft auch schön jedoch z.B. für die Speicherung auf
einem Computer schlecht geeignet.
Neben der direkten Aufzählung der Knoten und Kanten sind dafür
Matrizen besonders gut geeignet.
Ausserdem können dann die Werkzeuge der linearen Algebra genutzt
werden, um einige graphentheoretische Probleme zu lösen.
Sei G = (V, E) ein Graph (mit n Knoten). Wir wollen im folgenden stets
annehmen, dass die Knoten mit {1, 2, . . . , n} und die Kanten mit
{1, 2, . . . , m} bezeichnet sind.
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
21 / 31
Graphen und Matrizen
Die Adjazenzmatrix A(G) von G ist die n × n Matrix mit den
Komponenten aij := Anzahl der Kanten zwischen i und j
Example
5
4
1
Thomas Zehrt (HSLU)
3
2



A(G) = 


Graphen I
0
1
1
1
0
1
0
1
1
0
1
1
0
1
1
1
1
1
0
1
0
0
1
1
0






HSLU.IT
22 / 31
Graphen und Matrizen
Die Inzidenzmatrix B(G) ist die n × m Matrix mit den Komponenten
1
falls Knoten i auf Kante j liegt
bij :=
0
sonst
Example
5
6
7
5
4
4
1
3
1
Thomas Zehrt (HSLU)
3
2
2



B(G) = 


Graphen I
1
1
0
0
0
0
1
1
0
0
1
0
1
0
0
1
0
0
1
0
0
0
1
1
0
0
0
1
0
1
0
0
0
1
1






HSLU.IT
23 / 31
Graphen und Matrizen
Die Gradmatrix D(G) von G ist die n × n Diagonalmatrix, deren
Diagonaleinträge die Grade der entsprechenden Knoten von G sind.
Example
5
4
1
Thomas Zehrt (HSLU)
3
2



D(G) = 


Graphen I
3
0
0
0
0
0
3
0
0
0
0
0
4
0
0
0
0
0
4
0
0
0
0
0
2






HSLU.IT
24 / 31
Der PageRank-Algorithmus
Das WWW, ein Netzwerk aus Milliarden von Web-Seiten (aus Textund Bilddateien), die durch Links miteinander verknüpft sind.
Wenn man etwas finden möchte, muss man daher wissen, wo es steht
oder über welche Links man dorthin kommt.
Unerlässlich: Suchmaschinen
Zunächst: moderne Suchmaschinen sind in der Lage, Milliarden von
Seiten zu verwalten und in Sekundenbruchteilen diejenigen Seiten
herauszufischen, auf denen der Suchbegriff vorkommt.
Doch: meist erhält man Millionen von Treffern
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
25 / 31
Der PageRank-Algorithmus
Problem
Wie schaffen es Suchmaschinen, unter Millionen von Web-Seiten
solche herauszufinden, die (meistens) auch uns relevant erscheinen?
Lösung
Neben vielen einfachen Kriterien (wie z.B. der Position des
Suchbegriffes auf der Seite) und vielen geheimen Regeln ist die
Auswertung von Links ein zentrales Verfahren von Suchmaschinen.
Bezeichnung: PageRank
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
26 / 31
Der PageRank-Algorithmus
Wir stellen uns einen Teil des WWW als gerichteten Graphen vor,
wobei die Knoten den Seiten entsprechen und die gerichteten Kanten
die Links zwischen den Seiten darstellen.
Jeder Seite i soll ihr PageRank, kurz PRi , zugeordnet werden. Das
Resultat ist dann ein System von 6 linearen Gleichungen für die 6
Unbekannten PR1 , . . . , PR6 , das z.B. durch Elimination gelöst werden
kann.
Prinzip: Wir bestimmen für jede Seite die Wahrscheinlichkeit, mit der
jemand der zufällig den Links der Seiten folgt, auf dieser Seite landet
(erstes Modell für das Surfverhalten).
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
27 / 31
Der PageRank-Algorithmus
3
5
1
4
2
6
PR1 = PR2
1
PR3 + PR4 + PR5
PR2 =
3
PR3 = PR1
1
PR3
PR4 =
3
PR5 = 0
1
PR3
PR6 =
3
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
28 / 31
Der PageRank-Algorithmus
Das beschriebene Surfverhalten ist nicht ganz realistisch, denn wer
auf einer Seite nichts brauchbares findet, wird oft auch irgendeine
andere Seite aufrufen (z.B. durch den „ Zurück“-Knopf, durch Favoriten
oder durch direkte Eingabe einer Web-Adresse).
Modellierung: Wir legen fest, dass z.B. in einem von fünf Fällen nicht
durch Verfolgung eines Links weitergesurft, sondern direkt zu einer
Seite gesprungen wird und das dabei keine Seiten bevorzugt wird.
Damit erhalten wir letztendlich das folgende lineare Gleichungssystem
für die PageRank’s aller Web-Seiten:
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
29 / 31
Der PageRank-Algorithmus
PR1 =
PR2 =
PR3 =
PR4 =
PR5 =
PR6 =
4
5
4
5
4
5
4
5
4
5
4
5
1 1
· PR2 + ·
5 6
1
1 1
·
PR3 + PR4 + PR5 + ·
3
5 6
1 1
· PR1 + ·
5 6
1
1 1
· PR3 + ·
3
5 6
1 1
·0+ ·
5 6
1
1 1
· PR3 + ·
3
5 6
Lösungen:
Thomas Zehrt (HSLU)
Graphen I
HSLU.IT
30 / 31
Der PageRank-Algorithmus
Definition
gegeben:
Netzwerk mit N (im Bsp. N = 6) Seiten
d mit 0 ≤ d ≤ 1 ein Dämpfungsfaktor (im Bsp. d = 4/5)
Seite j verlinke mit Cj verschiedenen Seiten (d.h. von Seite j
gehen Cj Links ab)
Dann sind die PageRank’s durch das folgende System von N linearen
Gleichungen gegeben:
PRi = d ·
j
Thomas Zehrt (HSLU)
X
hat Link auf i
PRj
1
+ (1 − d) ·
Cj
N
Graphen I
HSLU.IT
31 / 31
Graphen II
Thomas Zehrt
Abt. Informatik
HS Luzern
HSLU.IT
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
1 / 36
Outline
1
Einleitung und Problembeschreibung
2
Gewichtete Graphen
3
Der Algorithmus von Dijkstra
4
Der Algorithmus von Prim
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
2 / 36
Einleitung und Problembeschreibung
Netzwerk
gegeben: Netzwerk aus 100 Computern, wobei jeweils zwischen zwei
dieser Rechner eine Datenverbindung besteht. Diese
Datenverbindungen sollen verschiedenster Art sein und die
Übertragung eines Bits auf den einzelnen Leitungen wird uns somit
verschieden teuer kommen.
Modellierung als gewichteter Graph:
Knoten: die Computer
Kanten: die Datenverbindungen
Jede Kante trägt zusätzlich ein Gewicht, das z.B. dem Preis
entspricht, der bei der Übermittlung eines Bits über diese Leitung
anfällt.
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
3 / 36
Einleitung und Problembeschreibung
Netzwerk
3
6
7
5
7
4
3
2
1
6
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
4 / 36
Einleitung und Problembeschreibung
Netzwerk
Typische Fragestellung:
Eine Nachricht soll von einem Computer X zu einem Computer Y
übertragen werden. Dazu soll der Weg gewählt werden, der am
billigsten ist!
Direkte Lösung:
Natürlich kann man (theoretisch) jeden Weg im Netzwerk zwischen
den beiden Rechnern a und b durchprobieren und den (oder) einen
billigsten heraus suchen.(Fleissarbeit!?)
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
5 / 36
Einleitung und Problembeschreibung
Netzwerk
Problem:
Unser Netzwerk hat (vollständiger Graph K100 ) genau 100·99
= 4950
2
Kanten und zwischen den Rechnern X und Y gibt es mindestens
98! ≈ 10154 verschiedene Wege!
Würde jemand pro Sekunde einen Weg anschauen können, würde
das Betrachten aller Wege mindestens
10154
≈ 2 · 10148
60 · 24 · 365
Jahre dauern!!
Ziel:
Wir wollen eine verbesserte Strategie kennenlernen, die das Problem
des Auffindens eines kürzesten Weges effizienter löst als das „sture”
Durchprobieren aller Wege!
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
6 / 36
Gewichtete Graphen
Definition
Definition
Ein gewichteter Graph G = (V, E, w) wird durch einen
zusammenhängenden Graphen G und eine Gewichtsfunktion w
beschrieben:
w : E −→ (0, ∞)
Bezeichnung:
Für jede Kante e = {u, v} schreiben wir einfach w(u, v) für w({u, v}).
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
7 / 36
Gewichtete Graphen
Beispiel
Basel
1.03
Zürich
0.24
0.29
Olten
0.46
0.40
Luzern
0.29
0.55
0.29
Langnau
Bern
1.50
0.54
Interlaken
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
8 / 36
Gewichtete Graphen
Länge und Abstand
Definition
Die Länge oder das Gewicht eines Weges
u0 , u1 , . . . , un mit {uk−1 , uk } ∈ E
in G ist die Summe der Gewichte sämtlicher Kanten des Weges:
w(u0 , u1 , . . . , un )
= w(u0 , u1 ) + w(u1 , u2 ) + · · · + w(un−1 , un ).
Der Abstand d(u, v) zwischen zwei Knoten u, v ∈ V ist das Minimum
der Längen aller Wege von u nach v.
Ein Weg der Länge d(u, v) von u nach v wird kürzester Weg genannt
(es kann mehrere kürzeste Wege geben).
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
9 / 36
Gewichtete Graphen
Ein Beispiel
u
3
v
6
7
5
7
4
3
a
1
c
2
b
1
Einige Wege von u nach v:
uv
ucv
ucbav
ubv
Thomas Zehrt (HSLU)
w(u,v)
w(u,c,v)
w(u,c,b,a,v)
w(u,b,v)
Graphen II
=
=
=
=
7
11
13
4
HSLU.IT
10 / 36
Gewichtete Graphen
Minimale aufspannende Bäume
Definition
Das Gewicht einer Menge T ⊆ E von Kanten ist die Summe
X
w(T) =
w(u, v).
{u,v}∈T
Ein minimaler aufspannender Baum T des gewichteten Graphen
(V, E, w) ist ein aufspannder Baum T mit der Eigenschaft
w(T) ≤ w(T ′ )
für jeden aufspannenden Baum T ′ von (V, E, w).
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
11 / 36
Gewichtete Graphen
Minimale aufspannende Bäume
6
3
g
h
b
5
6
3
1
2
c
7
b
5
h
2
4
2
1
a
c
7
2
5
d
h
2
8
e
b
7
c
4
f
g
h
5
b
7
c
4
f
h
g
2
a
Thomas Zehrt (HSLU)
4
d
8
e
Graphen II
f
d
e
2
4
4
8
5
c
7
a
d
2
b
5
2
4
2
e
1
a
1
8
2
6
2
6
5
3
g
3
f
2
4
f
4
5
3
6
1
g
2
a
2
2
4
2
5
2
d
5
8
HSLU.IT
2
2
e
12 / 36
Der Algorithmus von Dijkstra
Einleitung
Sei a ∈ V ein Knoten eines gewichteten Graphen G = (V, E, w). Der
Algorithmus von Dijkstra (1959) berechnet den Abstand
L(u) := d(a, u)
von a zu jedem Knoten u ∈ V.
Er liefert ausserdem für jeden Knoten u ∈ V − {a} den Vorgänger
p(u) = un−1 von u in einem kürzesten Weg
a = u0 , u1 , . . . , un−1 , un = u
von a nach u.
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
13 / 36
Der Algorithmus von Dijkstra
Einleitung
Input:
endlicher gewichteter Graph
und ein Startknoten a aus V
Dijkstra−Box
Output:
Länge eines kürzesten Weges
von a nach u für jeden Knoten
u aus V
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
14 / 36
Der Algorithmus von Dijkstra
Initialisiere und Wiederhole
Initialisierung
S := ∅
L(a) := 0
L(u) := ∞
für alle Knoten u 6= a
Wiederhole
1
Wähle einen Knoten s ∈ V − S mit minimalem L(s).
2
Falls L(s) = ∞, dann HALT.
3
Füge der Menge S den Knoten s hinzu.
4
Falls S = V, dann HALT.
5
Für jeden Nachbarn y ∈ V − S des Knoten s:
Falls L(y) > L(s) + w(s, y), ersetze L(y) durch L(s) + w(s, y) (und
p(y) durch s); andernfalls tue nichts.
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
15 / 36
Der Algorithmus von Dijkstra
Vorgehen am Beispiel
Wir wollen den Algorithmus von Dijkstra am Beispielgraphen
durchführen. Dabei wollen wir die Menge S durch blau gezeichnete
Knoten im Graphen darstellen. Die Zahlen L(u) werden hinter jedem
Knoten u eingetragen.
Initialisierung:
S := ∅
L(a) := 0
L(u) := ∞
Thomas Zehrt (HSLU)
für alle Knoten u 6= a
Graphen II
HSLU.IT
16 / 36
Der Algorithmus von Dijkstra
Vorgehen am Beispiel
3
f,
8
8
e,
1
2
3
1
b,
8
a, 0
Thomas Zehrt (HSLU)
6
8
2
g,
8
d,
8
c,
3
1
1
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
∞
∞
∞
∞
HSLU.IT
17 / 36
Der Algorithmus von Dijkstra
1. Wiederholung
Wir suchen s ∈ V − S = V mit minimalem L(s) und das ist der Punkt a.
→ S := {a} , → L(b) = 1, L(d) = 2 und L(c) = 2
3
f,
8
8
e,
3
1
1
1
g,
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
8
c, 2
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
∞
∞
∞
∞
∞
∞
a
HSLU.IT
18 / 36
Der Algorithmus von Dijkstra
2. Wiederholung
Wir suchen s ∈ V − S = V − {a} mit minimalem L(s) und das ist der
Punkt b.
→ S := {a, b} , → L(g) = 1 + 6 = 7
3
f,
8
8
e,
3
1
1
1
c, 2
g, 7
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
∞
∞
7
b
a
b
∞
∞
HSLU.IT
19 / 36
Der Algorithmus von Dijkstra
3. Wiederholung
Wir suchen s ∈ V − S = V − {a, b} mit minimalem L(s) und das ist (zum
Beispiel) der Punkt c.
→ S := {a, b, c} , → L(e) = 2 + 1 = 3
3
f,
8
e, 3
3
1
1
1
c, 2
g, 7
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
∞
∞
a
b
7
b
c
∞
∞
2
a
3
c
∞
7
b
HSLU.IT
20 / 36
Der Algorithmus von Dijkstra
4. Wiederholung
Wir suchen s ∈ V − S = V − {a, b, c} mit minimalem L(s) und das ist der
Punkt d.
→ S := {a, b, c, d} , → L(f ) = 2 + 1 = 3
e, 3
3
f, 3
3
1
1
1
c, 2
g, 7
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
2
a
3
c
∞
∞
∞
a
b
7
b
c
7
b
d
∞
∞
3
c
3
d
7
b
HSLU.IT
21 / 36
Der Algorithmus von Dijkstra
5. Wiederholung
Wir suchen s ∈ V − S = V − {a, b, c, d} mit minimalem L(s) und das ist
der Punkt e (wir hätten auch f nehmen können).
→ S := {a, b, c, d, e} , → keine Änderung
e, 3
3
f, 3
3
1
1
1
c, 2
g, 7
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
2
a
3
c
∞
∞
∞
a
b
7
b
c
7
b
d
∞
∞
3
c
3
d
7
b
e
3
d
7
b
HSLU.IT
22 / 36
Der Algorithmus von Dijkstra
6. Wiederholung
Wir suchen s ∈ V − S = V − {a, b, c, d, e} mit minimalem L(s) und das
ist der Punkt f .
→ S := {a, b, c, d, e, f } , → L(g) = 3 + 3 = 6
e, 3
3
f, 3
3
1
1
1
c, 2
g, 6
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
2
a
3
c
∞
∞
∞
a
b
7
b
c
7
b
d
∞
∞
3
c
3
d
7
b
e
3
d
7
b
f
6
f
HSLU.IT
23 / 36
Der Algorithmus von Dijkstra
7. Wiederholung
Wir suchen s ∈ V − S = V − {a, b, c, d, e, f } mit minimalem L(s) und das
ist der Punkt g.
→ S := {a, b, c, d, e, f , g} = V → HALT
e, 3
3
f, 3
3
1
1
1
c, 2
g, 6
d, 2
2
2
3
1
a, 0
b, 1
Thomas Zehrt (HSLU)
6
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Graphen II
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
2
a
3
c
∞
∞
∞
a
b
7
b
c
7
b
d
∞
∞
3
c
3
d
7
b
e
3
d
7
b
f
6
f
g
HSLU.IT
24 / 36
Der Algorithmus von Dijkstra
Tabelle
L(a)
L(b)
p(b)
L(c)
p(c)
L(d)
p(d)
L(e)
p(e)
L(f )
p(f )
L(g)
p(g)
S
Thomas Zehrt (HSLU)
0
∞
∞
1
a
2
a
2
a
∞
2
a
2
a
∞
∞
∞
∞
2
a
3
c
∞
∞
∞
a
b
7
b
c
7
b
d
∞
∞
Graphen II
3
c
3
d
7
b
e
3
d
7
b
f
6
f
g
HSLU.IT
25 / 36
Der Algorithmus von Dijkstra
Dijkstra-Baum
Der Algorithmus von Dijkstra liefert uns einen Spannbaum des
Graphen (Spannbaum der kürzesten von a ausgehenden Wege, kurz
Dijkstra-Baum), der im allgemeinen kein minimaler Spannbaum ist.
e
f
e
3
1
1
c
d
2
1
c
g
2
3
1
1
g
d
2
1
a
f
1
b
a
b
Ersetzt man im Dijkstra-Baum die Kante {a, d} durch die Kante {c, d},
erhält man sicher einen Spannbaum mit kleinerem Gewicht.
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
26 / 36
Der Algorithmus von Prim
Einleitung
Sei a ∈ V ein Knoten eines gewichteten zusammenhängenden
Graphen G = (V, E, w). Der Algorithmus von Prim (1957) berechnet
einen minimalen aufspannenden Baum T von G
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
27 / 36
Der Algorithmus von Prim
Initialisiere und Wiederhole
Initialisierung
S := a
T := ∅
Wiederhole so lange wie möglich:
1
Wähle eine Kante {x, y} ∈ E minimalen Gewichts mit x ∈ S und
y∈V −S
2
Füge der Menge S den Knoten y hinzu.
3
Füge der Menge T die Kante{x, y} hinzu.
Thomas Zehrt (HSLU)
Graphen II
HSLU.IT
28 / 36
Der Algorithmus von Prim
Initialisierung
Wir wollen den Algorithmus von Prim am Beispiel durchführen. Die
Menge S wird durch blaue Knoten und die Menge T durch rote Kanten
im Graphen dargestellen.
Initialisierung:
S := {a}
T := ∅
h
3
g
Thomas Zehrt (HSLU)
b
5
6
2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
29 / 36
Der Algorithmus von Prim
1. Wiederholung
S := {a, b}
T := { {a, b} }
w(T)
h
3
g
Thomas Zehrt (HSLU)
b
5
6
2
=
1
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
30 / 36
Der Algorithmus von Prim
2. Wiederholung
S := {a, b, d}
T := { {a, b}, {b, d} }
=
w(T)
h
3
g
Thomas Zehrt (HSLU)
b
5
6
2
1+2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
31 / 36
Der Algorithmus von Prim
3. Wiederholung
S := {a, b, d, g}
T := { {a, b}, {b, d}, {a, g} }
w(T)
h
3
g
Thomas Zehrt (HSLU)
=
1+2+2
b
5
6
2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
32 / 36
Der Algorithmus von Prim
4. Wiederholung
S := {a, b, d, g, c}
T := { {a, b}, {b, d}, {a, g}, {d, c} }
=
w(T)
h
3
g
Thomas Zehrt (HSLU)
1+2+2+2
b
5
6
2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
33 / 36
Der Algorithmus von Prim
5. Wiederholung
S := {a, b, d, g, c, h}
T := { {a, b}, {b, d}, {a, g}, {d, c}, {g, h} }
w(T)
h
3
g
Thomas Zehrt (HSLU)
=
1+2+2+2+3
b
5
6
2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
34 / 36
Der Algorithmus von Prim
6. Wiederholung
S := {a, b, d, g, c, h, f }
T := { {a, b}, {b, d}, {a, g}, {d, c}, {g, h}, {c, f } }
w(T)
=
h
3
g
Thomas Zehrt (HSLU)
1+2+2+2+3+4
b
5
6
2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
35 / 36
Der Algorithmus von Prim
7. Wiederholung
S := {a, b, d, g, c, h, f , e}
T := { {a, b}, {b, d}, {a, g}, {d, c}, {g, h}, {c, f }, {f , e} }
=
w(T)
h
3
g
Thomas Zehrt (HSLU)
1 + 2 + 2 + 2 + 3 + 4 + 2 = 16
b
5
6
2
1
a
c
7
2
4
Graphen II
4
2
d
f
5
8
2
e
HSLU.IT
36 / 36
Herunterladen