(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