Erinnerung VL vom

Ähnliche Dokumente
Abschnitt: Algorithmendesign und Laufzeitanalyse

Programmieren I. Kapitel 7. Sortieren und Suchen

Übersicht. Datenstrukturen und Algorithmen. Übersicht. Divide-and-Conquer. Vorlesung 9: Quicksort (K7)

Algorithmen und Datenstrukturen

3. Übung Algorithmen I

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

Suchen in Listen und Hashtabellen

Sortierte Folgen 250

Sortierverfahren für Felder (Listen)

S=[n] Menge von Veranstaltungen J S kompatibel mit maximaler Größe J

Sortieren durch Einfügen. Prof. Dr. W. Kowalk Sortieren durch Einfügen 1

Suchen und Sortieren (Die klassischen Algorithmen)

16. All Pairs Shortest Path (ASPS)

Algorithmen & Datenstrukturen 1. Klausur

Datenstrukturen. Mariano Zelke. Sommersemester 2012

1. Musterlösung. Problem 1: Average-case-Laufzeit vs. Worst-case-Laufzeit

Suchen und Sortieren Sortieren. Heaps

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

13. Binäre Suchbäume

Name: Seite 2. Beantworten Sie die Fragen in den Aufgaben 1 und 2 mit einer kurzen, prägnanten Antwort.

Programmiertechnik II

Lösungsvorschläge. zu den Aufgaben im Kapitel 4

Effiziente Algorithmen und Datenstrukturen I. Kapitel 9: Minimale Spannbäume

Sortierverfahren. Sortierverfahren für eindimensionale Arrays

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 5, Donnerstag, 20.

Fragen für die Klausuren

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Digitale Magazine ohne eigenen Speicher

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / Vorlesung 8, Donnerstag 11.

Entscheidungsbäume. Definition Entscheidungsbaum. Frage: Gibt es einen Sortieralgorithmus mit o(n log n) Vergleichen?

Programmieren ++ Begleitende Übungen zu Veranstaltungen + Umsetzen des Algorithmus in ein lauffähiges Programm

Programmiertechnik II

Eine Baumstruktur sei folgendermaßen definiert. Eine Baumstruktur mit Grundtyp Element ist entweder

Ideen der Informatik Suchen und Sortieren [Ordnung muss sein ] Kurt Mehlhorn Adrian Neumann viele Folien von Kostas Panagiotou

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / Vorlesung 9, Dienstag 18.

Informatik II Greedy-Algorithmen

8: Zufallsorakel. Wir suchen: Einfache mathematische Abstraktion für Hashfunktionen

1. Grundlagen Sortieren Vertauschen Selektion Einfügen Quicksort Suchen...

Sortieren. Eine Testmenge erstellen

Programmierung Paralleler Prozesse

Einführung in Computer Microsystems

Datenstrukturen und Algorithmen

Der linke Teilbaum von v enthält nur Schlüssel < key(v) und der rechte Teilbaum enthält nur Schlüssel > key(v)

Laufzeit und Komplexität

Programmierung I Einführung in Python, Beyond the Basics

Einführung in die Informatik 1

HEUTE. Datenstrukturen im Computer. Datenstrukturen. Rekursion. Feedback Evaluation. abstrakte Datenstrukturen

Vorlesung : Binäre Entscheidungsdiagramme (BDDs) Dr. Carsten Sinz

6-1 A. Schwill Grundlagen der Programmierung II SS 2005

Beispiel zu Datenstrukturen

Vergleich verschiedener Möglichkeiten des Table-Lookups für größere Tabellen

Sortieralgorithmen. Inhalt: InsertionSort BubbleSort QuickSort. Marco Block

Datenstrukturen & Algorithmen

Grundlagen der Programmierung

Programmieren in C. Rekursive Funktionen. Prof. Dr. Nikolaus Wulff

! DBMS organisiert die Daten so, dass minimal viele Plattenzugriffe nötig sind.

MATHEMATISCHE ANALYSE VON ALGORITHMEN

Kap. 4.4: B-Bäume Kap. 4.5: Dictionaries in der Praxis

Überblick. Lineares Suchen

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

SOI Die Schweizer Informatikolympiade

Kapitel 6. Komplexität von Algorithmen. Xiaoyi Jiang Informatik I Grundlagen der Programmierung

Uebersicht. Webpage & Ilias. Administratives. Lehrbuch. Vorkenntnisse. Datenstrukturen & Algorithmen

- k Maximalwerte aus Menge mit n >> k Elementen (Rangfolgebestimmung von Suchmaschinen!) Die typische Operationen:

Algorithmen und Programmierung

Algorithmen II Vorlesung am

Kostenmaße. F3 03/04 p.188/395

PHP 4. E i n e K u r z e i n f ü h r u n g. Vortragender: Kevin Bransdor Datum: Folie 1

Grundlagen der Programmierung 2. Parallele Verarbeitung

5. Basisalgorithmen für DB-Operationen

Skript zur Vorlesung Algorithmentheorie

Vorlesung 09: Mengen. Peter Thiemann SS 2010

Wirtschaftsinformatik I

Approximationsalgorithmen: Klassiker I. Kombinatorische Optimierung Absolute Gütegarantie Graph-Coloring Clique Relative Gütegarantie Scheduling

1. Einfach verkettete Liste unsortiert 2. Einfach verkettete Liste sortiert 3. Doppelt verkettete Liste sortiert

Vorlesung Algorithmische Geometrie. Streckenschnitte. Martin Nöllenburg

DAP2-Klausur

Kap. 4.2: Binäre Suchbäume

2: Zahlentheorie / Restklassen 2.1: Modulare Arithmetik

Codes und Informationsgehalt

Suchen und Sortieren

Name:... Vorname:... Matrikel-Nr.:... Unterschrift:...

IMPLEMENTIERUNG VON OPERATIONEN AUF RELATIONEN

5.2 Das All-Pairs-Shortest-Paths-Problem (APSP-Problem) Kürzeste Wege zwischen allen Knoten. Eingabe: Gerichteter Graph G =(V, E, c)

Übung Grundlagen der Programmierung. Übung 05: Arrays. Abgabetermin: xx.xx.xxxx. Java-Programm Testplan Testergebnisse

Informationsverarbeitung im Bauwesen

Kapitel 9 Suchalgorithmen

Entwurf von Algorithmen - Kontrollstrukturen

ALP I. Funktionale Programmierung

Kryptographie und Fehlertoleranz für Digitale Magazine

Approximationsalgorithmen

Inf 12 Aufgaben

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

Algorithms & Datastructures Midterm Test 1

Verteilte Systeme - P2P-Computing

Algorithmen und Programmieren II Einführung in Python

Algorithmen. Suchalgorithmen

Algorithmen und Datenstrukturen Suchbaum

Schulinternes Curriculum im Fach Informatik

Transkript:

Erinnerung VL vom 09.05.2016 Analyse von Hashtabellen mit verketteten Listen Erwartete Laufzeit O(1) bei zuf. Hashfkt. und falls M O(m) Guter Ersatz (hier) für zuf. Hashfkt.: universelle Hashfunktionen Hashtabellen mit linearer Suche: Schwierigkeit bei remove Heute: Gegenüberstellung Hashing mit Verketten mit linearer Suche (Probleme bei) Anwendungen von Hashtabellen Sortieren: Motivation(, Insertion Sort) KIT Institut für Theoretische Informatik 1

Verketten Lineare Suche Volllaufen: Verketten weniger empndlich. Unbeschränktes Hashing mit lin. Suche hat nur amortisiert konst. Einfügezeit Cache: Lineare Suche besser. Vor allem für doall Platz/Zeit Abwägung: Kompliziert! Abhängig von n, Füllgrad, Elementgröÿe, Implementierungsdetails bei Verketten (shared dummy!, t speichert Zeiger oder item), Speicherverwaltung bei Verketten, beschränkt oder nicht,... Referentielle Integrität: Nur bei Verketten! Leistungsgarantien: Universelles Hashing funktioniert so nur mit Verketten KIT Institut für Theoretische Informatik 2

Perfektes Hashing hier nicht KIT Institut für Theoretische Informatik 3

Mehr Hashing Hohe Wahrscheinlichkeit, Garantien für den schlechtesten Fall, Garantien für linear probing höhere Anforderungen an die Hash-Funktionen Hashing als Mittel zur Lastverteilung z. B., storage servers, (peer to peer Netze,... ) Zufallsextraktion durch universelles Hashing O(1) nd / perfektes Hashing KIT Institut für Theoretische Informatik 4

Hashtabellen für assoziative Arrays In Java: java.util.hashtable, in Python: dict Beispiel (Python): args["username"]="fred" (CGI-Skripte) Beispiel für Sicherheitsproblem (gelöst seit 2012): Webserver beantwortet HTTP-Anfragen mit Python-Skript HTTP-Parameter werden für Skript in dict eingelesen Problem: Hashfunktion h deterministisch (d.h. fest, bekannt!) Bösartige Anfrage: viele HTTP-Parameter x y mit gleichem h(x) Konsequenz: quadratischer Aufwand bei Einlesen/Verarbeiten von Skriptparametern Denial of Service Wie reparieren? KIT Institut für Theoretische Informatik 5

Kryptographische Hashfunktionen Universelle Hashfunktionen: kurze Ausgabe (typisch: 32 Bit), Kollisionen gleichmäÿig Kryptographische Hashfunktionen: längere Ausgabe (typisch: 128512 Bit), Kollisionen existieren, sind aber schwer zu nden Anwendungen für kryptographische Hashfunktionen: Fingerabdruck von groÿen Datenmengen Zertikate (z.b. für Webserver) Nutzerauthentikation (Unix: /etc/passwd) Beispiele: MD5 (unsicher), SHA-1 (unsicher), SHA-256, SHA-3 Mehr in Sicherheits-Vorlesung KIT Institut für Theoretische Informatik 6

Sortieren & Co KIT Institut für Theoretische Informatik 7

Formaler Gegeben: Elementfolge s = e 1,...,en Gesucht: s = e 1,...,e n mit s ist Permutation von s e e 1 n für eine Totalordnung ` ' KIT Institut für Theoretische Informatik 8

Anwendungsbeispiele Allgemein: Vorverarbeitung Suche: Telefonbuch unsortierte Liste Gruppieren (Alternative Hashing?) KIT Institut für Theoretische Informatik 9

Beispiele aus Kurs/Buch Aufbau von Suchbäumen Kruskals MST-Algorithmus Rucksackproblem Scheduling, die schwersten Probleme zuerst Sekundärspeicheralgorithmen, z. B. Datenbank-Join Viele verwandte Probleme. Zum Beispiel Transposition dünner Matrizen, invertierten Index aufbauen, Konversion zwischen Graphrepräsentationen. KIT Institut für Theoretische Informatik 10

Überblick Einfache Algorithmen / kleine Datenmengen Mergesort ein erster ezienter Algorithmus Eine passende untere Schranke Quicksort das Auswahlproblem ganzzahlige Schlüssel jenseits der unteren Schranke KIT Institut für Theoretische Informatik 11

Einfache Sortieralgorithmen Procedure insertionsort(a : Array [1..n] of Element) for i := 2 to n do invariant a[1] a[i 1] move a[i] to the right place Beispiel: 4, 7,1,1 4,7, 1,1 1,4,7, 1 1,1,4,7, KIT Institut für Theoretische Informatik 12

Sentinels am Beispiel Sortieren durch Einfügen Procedure insertionsort(a : Array [1..n] of Element) for i := 2 to n do invariant a[1] a[i 1] // move a[i] to the right place e:= a[i] if e < a[1] then // new minimum for j := i downto 2 do a[j]:= a[j 1] a[1]:= e else // use a[1] as a sentinel for (j := i; a[j 1] > e; j ) a[j]:= a[j 1] a[j]:= e KIT Institut für Theoretische Informatik 13

Analyse Die i-te Iteration braucht Zeit Θ(i). n i=2 i = n(n + 1) 1 = Θ ( ) n 2 2 Die i-te Iteration braucht Zeit O(1) z. B. (beinahe) sortiert. n i=2 O(1) O(n) KIT Institut für Theoretische Informatik 14

Sortieren durch Mischen Idee: Teile und Herrsche Function mergesort( e 1,...,en ) : Sequence of Element if n = 1 then return e 1 // base case else return merge( mergesort( e,...,e 1 n/2 ), mergesort( e n/2 +1,...,en )) Gegeben: zwei sortierte Folgen a und b Berechne: sortierte Folge der Elemente aus a und b KIT Institut für Theoretische Informatik 15

Beispiel KIT Institut für Theoretische Informatik 16

Mischen Jeweils min(a, b) in die Ausgabe schieben. a b c operation 1,2,7 1,2,8,8 move a 2,7 1,2,8,8 1 move b 2,7 2,8,8 1,1 move a 7 2,8,8 1,1,2 move b 7 8,8 1,1,2,2 move a 8,8 1,1,2,2,7 concat b 1,1,2,2,7,8,8 Zeit O(n) KIT Institut für Theoretische Informatik 17

Analyse Analyse: T (n) = O(n) + T ( n/2 ) + T ( n/2 ) = O(n log n). KIT Institut für Theoretische Informatik 18

Analyse T (n) = Θ(n) + T ( n/2 ) + T ( n/2 ) Problem: Runderei Ausweg: genauer rechnen (siehe Buch) Dirty trick: Eingabe auf Zweierpotenz aufblasen (z. B. (2 log n n) anhängen) normales Master-Theorem anwendbar Zeit Θ(n log n) KIT Institut für Theoretische Informatik 19