Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende.

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Beispiel zum RSA-Algorithmus
Definition [1]: Sei S eine endliche Menge und sei p eine Abbildung von S in die positiven reellen Zahlen Für einen Teilmenge ES von S sei p definiert.
Rekursion: Rekurrenz: Algorithmen rufen sich selbst (rekursiv) auf.
Eine dynamische Menge, die diese Operationen unterstützt,
Eine dynamische Menge, die diese Operationen unterstützt,
Vorlesung Programmieren II
Christian Schindelhauer
Christian Schindelhauer
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Kontextfreie Grammatiken
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kapitel 6: Klassifizierung von Sortiertechniken
Einführung in Berechenbarkeit und Formale Sprachen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Notationen A = ist eine endliche, nichtleere menge,
Grammatiken, Definitionen
Einige entscheidbare bzw. rekursiv aufzählbare Sprachen
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Grammatiken beschreiben Sprachen L µ *, indem.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Reduktionen Def: L · L (L ist reduzierbar auf.
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Universelle Turingmaschinen Eine universelle Turingmaschine.
Programmiertechniken: Zustand fungiert als „endlicher Speicher“
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Verifizieren versus Berechnen
Christian Schindelhauer
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Approximationsalgorithmen …liefern in polynomieller.
Klaus Volbert 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Sommersemester 2004.
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Algorithmentheorie 04 –Hashing
WS 03/04 Algorithmentheorie 03 - Randomisierung Prof. Dr. S. Albers Prof. Dr. Th. Ottmann.
1WS 06/07 Organisatorisches 1.Vorlesung am Montag, : 9-11 Uhr in Gebäude 106, Raum Podcasts: Probleme mit der Videoqualität sind behoben.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (10 - Suchverfahren) T. Lauer.
Halbzeit: Kurze Wiederholung
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (19 - Analyse natürlicher Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen Halbzeit: Was haben wir bisher gelernt? Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (12 Hashverfahren: Allgemeiner Rahmen) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (18 - Bäume: Durchlaufreihenfolgen, Analyse nat. Bäume) Prof. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27-Selbstanordnende lineare Listen) Prof. Th. Ottmann.
Algorithmentheorie 7 – Bin Packing
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen
Diskrete Mathematik I Vorlesung 9b AVL-Baum, Algorithmen.
Algorithmische Geometrie
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Christian Schindelhauer
Algorithmen des Internets 2005 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität 1 Materialien zu Übung 9 Bälle in Körbe Ranged.
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Effiziente Algorithmen
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Hartmut Klauck Universität Frankfurt SS
Quantum Computing Hartmut Klauck Universität Frankfurt WS 05/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Programmiersprachen II Fortsetzung Datenstrukturen Balancierte Bäume 3 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Vorlesung AVL-Bäume/Algorithmen-
 Präsentation transkript:

Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Algorithmen und Komplexität Teil 1: Grundlegende Algorithmen WS 08/09 Friedhelm Meyer auf der Heide Vorlesung 12,

Friedhelm Meyer auf der Heide 2 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Organisatorisches Die letzte Vorlesung über Grundlegende Algorithmen findet am Montag, statt. Die Vorlesung Komplexitätstheorie von Johannes Blömer beginnt am Montag, Wer plant, an dieser Vorlesung teilzunehmen? Voraussichtliche Prüfungstage für die erste Prüfungsphase: 9.12., ,

Friedhelm Meyer auf der Heide 3 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Randomisierte Algorithmen

Friedhelm Meyer auf der Heide 4 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Beispiel: Randomisierter Quicksort Eingabe: S={s 1,…,s n } ½ N. Algo: Falls n=0, gebe leere Folge aus; falls n=1, gebe s 1 aus. Sonst: - erzeuge zufälliges Splitelement s i, i 2 {1,…,n} - vergleiche jedes s j, j i, mit s i, erzeuge dadurch S 1 ={s j, s j s i } - sortiere S 1 und S 2 rekursiv - gebe sortiertes S 1, s i, sortiertes S 2 aus. Laufzeit (Wir messen die Zahl der Vergleiche): Die Laufzeit hängt von der Ergebnissen der Zufallsexperimente ab. Wir berechnen die erwartete Laufzeit bei zufälliger Wahl der Splitelemente

Friedhelm Meyer auf der Heide 5 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Ein elementares Beispiel Best case: 1, worst case: n-k+1 Best case: 1 worst case 1, (tritt mit Wkeit 0 ein) erwartete Zahl von Versuchen: (n-k)/k +1

Friedhelm Meyer auf der Heide 6 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing

Friedhelm Meyer auf der Heide 7 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing Sei U = [p]:={0,…, p-1} gegeben, das Universum. Aufgabe: Zu SµU, |S|=n, berechne eine Hashfunktion h:U ! [m] mit: h kann in konstanter Zeit ausgewertet werden. h benötigt Speicherplatz O(n). h| S ist injektiv. n · m · c n für eine (kleine) Konstante c ¸ 1. Ein solches h heisst perfekt für S.

Friedhelm Meyer auf der Heide 8 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing Zu SµU, |S|=n, berechne eine Hashfunktion h:U ! [m] mit: h kann in konstanter Zeit ausgewertet werden. h benötigt Speicherplatz O(n). h| S ist injektiv. n · m · c n für eine (kleine) Konstante c ¸ 1. Ein solches h heisst perfekt für S. Eine perfekte Hashfunktion für S liefert eine Datenstruktur für ein statisches Wörterbuch, d. h. für den Datentyp, der die Suchoperation in S unterstützt. - Lege Hashtableau T an, d.h. ein Array T[0 : m-1] - Speichere x 2 S in T[h(x)] (Beachte: Hierbei entstehen keine Kollisionen!!) Suche: Für x 2 U liefert search(x) (die assoziierte Information zum) Schlüssel x. Dazu muss nur in T[h(x)] nachgeschaut werden. Suchzeit O(1), Speicherplatz O(n) Wie können wir ein h konstruieren, das perfekt für S ist??

Friedhelm Meyer auf der Heide 9 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Perfektes Hashing Exkurs zufällige Funktionen Wie gut eignet sich eine zufällige Funktion h:U! [m] ? Zur Beschreibung benötigt man Platz |U| >> n Mit welcher Wkeit w ist h injektiv auf S? w= [ m(m-1)…(m-n+1)]/ [m n ] - Für m=O(n) ist w < 2 -n (für n genügend groß). - Für m¸ n 2 ist w > ½. Weitere Eigenschaften (m=n): Sei B i := h -1 (i)Å S das i-te Bucket von S, b i := |B i | die i-te Bucketgröße. Es gilt: E(b i ) = 1 E(#i : b i ¸ j) · n/ 2 j E(max {b i, i=1,…,n}) · log(n)

Friedhelm Meyer auf der Heide 10 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Lineare Hashfunktionen Sei U= [p], p prim. Für a2U sei h a : U ! [m] definiert durch h a (x)= (ax) mod(p) mod(m) Sei H 1 (m):= {h a : U ! [m], a2U}. Im folgenden betrachten wir immer das Zufallsexperiment Wähle h a zufällig, gleichverteilt aus H 1 (m). Satz über lineare Hashfunktionen: Seinen b a (1),…,b a (m) die Größen der Buckets, in die S durch h a zerlegt wird. Dann gilt (b a (j)) 2 < 4n 2 /m + n für mindestens die Hälfte der h a 2 H 1 (m). Insbesondere: Für m=n : (b a (j)) 2 < 5n für mindestens die Hälfte der h a 2 H 1 (m). Für m=2n 2 : mindestens die Hälfte der h a 2 H 1 (m) sind injektiv auf S.

Friedhelm Meyer auf der Heide 11 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Analyse der linearen Hashfunktionen Beh1: Seien x,y 2U, x y. Dann gilt h a (x)=h a (y) (x und y kollidieren) für höchstens einen Anteil 2/m aller h a 2 H 1 (m). Bew: h a (x)=h a (y), Es gibt s 2 {0,…, dp/me-1 ] mit a(x-y)=sm mod(p) Da p Primzahl ist, ist obiges eine lineare Gleichung im Körper Z p, hat somit für festes s genau eine Lösung a. Somit gibt es dp/me · (2p)/m viele h a 2 H 1 (m) mit h a (x)=h a (y). Da |H 1 (m)| = p gilt, folgt Beh1.

Friedhelm Meyer auf der Heide 12 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Analyse der linearen Hashfunktionen Beh1: Seien x,y 2U, x<y. Dann gilt h a (x)=h a (y) höchstens einen Anteil 2/m aller h a 2 H 1 (m). (h a (x)=h a (y) ist eine Kollision.) Sei C a die Zahl der Kollisionen, die durch h a in S erzeugt werden. Aus Beh1 folgt: E(C a ) = [(n(n-1)/2) (2/m)] < n 2 /m. Beh2: C a = (b i (b i -1)/2) = ½ (b i ) 2 -n/2. (b i = b a (i)) Somit: Prob ( (b i ) 2 ¸ 4n 2 /m+n) = Prob(½ (b i ) 2 -n/2 ¸ 2n 2 /m) = Prob(C a ¸ 2n 2 /m) · ½ Markow-Ungleichung: Prob (C a ¸ 2E(C a )) · ½.

Friedhelm Meyer auf der Heide 13 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Das perfekte Hashing-Schema Sei Sµ U, |S|=n. Lege Arrays T[0 : n-1] und T*[0 : 10n-1] an. 1.Suche h=h a 2 H 1 (n) mit (b a (j)) 2 < 5n 2.Für j=0,…,n-1: beschrifte T[ j ] mit 2 (b a (j)) 2 und d j = 2 i=0,.., j-1 (b a (i)) 2, d 0 = 0 3.Für j=0 bis n-1: Suche h (j) 2 H 1 (2b a (j) 2 ) injektiv auf B a (j) ( h (j) (x) = a j x mod(p) mod(2b a (j) 2 ) Füge a j ebenfalls zu T[ j ] hinzu 4. Speichere jedes x2 S in T*[h (h(x)) (x) + d h(x) ] Bemerkung: Die Größe von T* reicht aus.

Friedhelm Meyer auf der Heide 14 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Das perfekte Hashing-Schema S T[0 : n-1] T*[0 : 10n-1] x a j, d j, 2b a (j) 2 h a (x) = j 2b a (j) 2 djdj T[j] h (j) (x) + d j = a j x mod(p)mod(2b a (j) 2 )+ d j d0d0 d1d1

Friedhelm Meyer auf der Heide 15 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Eigenschaften des perfekten Hashing-Schemas Falls wir die Suche nach den Hashfunktionen h a 2 H 1 (m) durch die Prozedur Wähle solange zufälliges h a 2 H 1 (m), bis eins mit der gesuchten Eigenschaft gefunden ist realisieren, reichen wegen des Satzes über lineare Hashfunktionen erwartet zwei Versuche (vgl. Pralinen finden). Ein Versuch benötigt Zeit O(m) (für den Test der Eigenschaft). Satz: Das oben beschriebene Schema hat folgende Eigenschaften: Es benötigt Platz O(n). Eine Suchanfrage benötigt konstante Zeit. Die Zeit um die Datenstruktur aufzubauen beträgt - O(p n) im worst case, - erwartet O(n).

Friedhelm Meyer auf der Heide 16 HEINZ NIXDORF INSTITUTE University of Paderborn Algorithms and Complexity Friedhelm Meyer auf der Heide Heinz Nixdorf Institute & Computer Science Department University of Paderborn Fürstenallee Paderborn, Germany Tel.: +49 (0) 52 51/ Fax: +49 (0) 52 51/ Thank you for your attention!