Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen

Ähnliche Dokumente
Klausur Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

Graphdurchmusterung, Breiten- und Tiefensuche

15. Elementare Graphalgorithmen

Ferienkurs zur algorithmischen diskreten Mathematik Kapitel 1: Grundlagen der algorithmischen Graphentheorie

3.3 Laufzeit von Programmen

Algorithmen und Datenstrukturen

Algorithmen & Komplexität

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Definition Ein gerichteter Graph G = (V, E) ist ein Graph von geordneten Paaren (u, v) mit u V und v V.

Breitensuche BFS (Breadth First Search)

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen 2-1. Seminar -

A6.1 Logarithmus. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. A6.1 Logarithmus. A6.2 Landau-Notation. A6.

Klausur Algorithmen und Datenstrukturen

Name:... Vorname:... Matr.-Nr.:... Studiengang:...

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2012 / 2013 Vorlesung 3, Donnerstag 7.

Algorithmen I - Tutorium 28 Nr. 9

Grundlagen: Algorithmen und Datenstrukturen

Klausur Algorithmen und Datenstrukturen

12. Graphen. Notation, Repräsentation, Traversieren (DFS, BFS), Topologisches Sortieren, Ottman/Widmayer, Kap ,Cormen et al, Kap.

Algorithmen & Komplexität

Algorithmen und Datenstrukturen Tutorium Übungsaufgaben

8 Diskrete Optimierung

Wie wird ein Graph dargestellt?

Relationen und DAGs, starker Zusammenhang

Klausur Algorithmen und Datenstrukturen

Informatik B Sommersemester Musterlösung zur Klausur am

Informatik II, SS 2016

Algorithmen und Datenstrukturen 13

EDM, Algorithmen und Graphenspeicherung

Das O-Tutorial. 1 Definition von O, Ω, Θ, o und ω

Programm heute. Algorithmen und Datenstrukturen (für ET/IT) Übersicht: Graphen. Definition: Ungerichteter Graph. Definition: Ungerichteter Graph

2. Klausur Datenstrukturen und Algorithmen SS 2014

Informatik II, SS 2016

Definition Gerichteter Pfad. gerichteter Pfad, wenn. Ein gerichteter Pfad heißt einfach, falls alle u i paarweise verschieden sind.

NAME, VORNAME: Studiennummer: Matrikel:

Algorithmus zur topologischen Nummerierung: while V = 0 do nummeriere eine Quelle mit der nächsten Nummer streiche diese Quelle aus V od

Christian Rieck, Arne Schmidt

Datenstrukturen und Algorithmen 2. Klausur SS 2001

Lernmodul 7 Algorithmus von Dijkstra

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Datenstrukturen. einfach verkettete Liste

MafI I: Logik & Diskrete Mathematik (F. Hoffmann)

Stud.-Nummer: Datenstrukturen & Algorithmen Seite 1

Informatik II, SS 2014

Klausur Algorithmen und Datenstrukturen

Informatik II, SS 2016

Informatik II Prüfungsvorbereitungskurs

Quicksort ist ein Divide-and-Conquer-Verfahren.

Übung Algorithmen und Datenstrukturen

Kapitel IV Minimale Spannbäume

\ E) eines Graphen G = (V, E) besitzt die gleiche Knotenmenge V und hat als Kantenmenge alle Kanten des vollständigen Graphen ohne die Kantenmenge E.

Übung zur Vorlesung Berechenbarkeit und Komplexität

Algorithmen und Datenstrukturen (ESE) Entwurf, Analyse und Umsetzung von Algorithmen (IEMS) WS 2014 / 2015 Vorlesung 3, Donnerstag 6.

Klausur Theoretische Informatik I WS 2004/2005

Datenstrukturen: Mathematische Grundlagen. 26. Juli / 27

Algorithmen und Datenstrukturen 1 VL Übungstest WS Jänner 2009

Algorithmen und Datenstrukturen 1 VU 6.0 Nachtragstest SS Oktober 2014

10. Übungsblatt zu Algorithmen I im SS 2010

8. A & D - Heapsort. Werden sehen, wie wir durch geschicktes Organsieren von Daten effiziente Algorithmen entwerfen können.

Effiziente Algorithmen I

Klausur Algorithmen und Datenstrukturen

Tutoraufgabe 1 (Suchen in Graphen):

12. Graphen. Königsberg Zyklen. [Multi]Graph

Algorithmen und Datenstrukturen. Bäume. M. Herpers, Y. Jung, P. Klingebiel

Am Dienstag, den 16. Dezember, ist Eulenfest. 1/45

Informatik II, SS 2014

Kapitel IV Minimale Spannbäume

(a, b)-bäume / 1. Datenmenge ist so groß, dass sie auf der Festplatte abgespeichert werden muss.

V. Claus, Juli 2005 Einführung in die Informatik II 45

Alle bislang betrachteten Sortieralgorithmen hatten (worst-case) Laufzeit Ω(nlog(n)).

Klausur Algorithmentheorie

Algo&Komp. - Wichtige Begriffe Mattia Bergomi Woche 6 7

Informatik II, SS 2018

2. Grundlagen. Beschreibung von Algorithmen durch Pseudocode. Korrektheit von Algorithmen durch Invarianten.

2.4 Starke Zusammenhangskomponenten in Digraphen

Einführung in die Informatik 2

12. AuD Tafelübung T-C3

Diskrete Strukturen WS 2005/06. Ernst W. Mayr. 27. Januar Fakultät für Informatik TU München

Algorithmen und Datenstrukturen VO 3.0 Vorlesungsprüfung 19. Oktober 2007

ÜBUNGSKLAUSUR Studienhalbjahr: 2. Semester. Datum: 20. Juli 2016 Bearbeitungszeit: 90 Minuten. Modul: T2INF Dozent: Stephan Schulz

Grundlagen: Algorithmen und Datenstrukturen

Der Dreyfus-Wagner Algorithmus für das Steiner Baum Problem

Datenstrukturen (SoSe 12) Klausur (Modulabschlussprüfung)

Kürzeste-Wege-Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen D-INFK

WS 2009/10. Diskrete Strukturen

Formale Methoden 2. Gaetano Geck Lehrstuhl I Logik in der Informatik WS 2015/2016

Übung zu Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen

Datenstrukturen und Algorithmen D-INFK. Musterlösung 1

Naiver Algorithmus für Hamiltonkreis

Am Dienstag, den 15. Dezember, ist Eulenfest. 1/60

Algorithmen und Datenstrukturen 2

Übung Algorithmen und Datenstrukturen

Transkript:

Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Algorithmen und Datenstrukturen Übung #4 BFS/DFS, Wachstum von Funktionen Christian Rieck, Arne Schmidt 22.11.2018

Heute 12 Breiten- und Tiefensuche e n Wachstum von Funktionen 9 n 2 Größe des Inputs 6 Definitionen (O-Notation) Relationen zwischen Laufzeitklassen 3 n n Beispiele für Laufzeitklassen -3 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 2 0 0 0,5 1 1,5 2 2,5 3 log n log log n

Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 3 1: https://idea-instructions.com/graph-scan/

Breitensuche Benutze Warteschlange Prinzip: First-in-first-out v 1 v 3 v 2 v 4 v 6 v 5 v 7 v 1 v 1, v 2 v 1, v 2, v 3 v 2, v 3 v 2, v 3, v 5 v 2, v 3, v 5, v 6 v 3, v 5, v 6 v 3, v 5, v 6, v 4 v 5, v 6, v 4 v 5, v 6, v 4, v 7 v 6, v 4, v 7 v 4, v 7 v 7 v 1 v 3 v 2 v 4 v 6 v 5 v 7 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 4

Tiefensuche Benutze Stapel Prinzip: Last-in-first-out v 1 v 3 v 2 v 4 v 6 v 5 v 7 v 1 v 1, v 2 v 1, v 2, v 5 v 1, v 2, v 5, v 3 v 1, v 2, v 5, v 3, v 4 v 1, v 2, v 5, v 3 v 1, v 2, v 5 v 1, v 2, v 5, v 7 v 1, v 2, v 5, v 7, v 6 v 1, v 2, v 5, v 7 v 1, v 2, v 5 v 1, v 2 v 1 v 1 v 3 v 2 v 4 v 6 v 5 v 7 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 5

Tiefensuche Benutze Stapel Prinzip: Last-in-first-out v 1 v 1, v 2 v 1, v 2, v 5 v 1, v 2, v 5, v 3 v 1 v 3 v 2 v 4 v 6 v 5 v 7 v 1, v 2, v 5, v 3, v 4 v 1, v 2, v 5, v 3 v 1, v 2, v 5 v 1, v 2, v 5, v 7 v 1, v 2, v 5, v 7, v 6 v 1, v 2, v 5, v 7 v 1, v 2, v 5 v 1, v 2 v 1 Beliebte Fehler: Leere Menge am Ende vergessen Nicht jede Änderung angegeben Suchbaum nicht angegeben Nicht den kleinsten Index beachtet v 1 v 3 v 2 v 4 v 6 v 5 v 7 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 5

Six Degrees of Kevin Bacon vs. Six Degrees of Wikipedia Finde kürzesten Weg von einem Schauspieler über Filme zu Kevin Bacon Ungerichteter Graph Hin- und Rückweg sind gleich lang Finde kürzesten Weg von einer Seite über enthaltene Links zu einer anderen Gerichteter Graph Hin- und Rückweg sind verschieden lang Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 6

Weitere Problem mit BFS/DFS Eindeutigkeitsproblem Algorithmen besitzen feste Regeln, nach denen Objekte abgearbeitet werden (z.b. Knoten mit kleinstem Index zuerst). Auf welchen Graphen wird der erhaltene BFS/DFS-Baum eindeutig, wenn uns die Regel egal ist? Also: Gegeben: Graph G und Knoten v Frage: Ist der BFS(/DFS)-Baum von G eindeutig, wenn man bei v startet? Satz: DFS-Baum ist genau dann eindeutig, wenn G ein Baum ist. Beweis: : Angenommen G besitzt einen Kreis. Dann können wir bei Erreichen des Kreises den Baum links oder recht herum aufbauen. Der DFS-Baum ist nicht eindeutig. Widerspruch! : Wenn G ein Baum ist, ist auch der DFS-Baum ebendieser Graph. oder Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 7

Eindeutiger BFS-Baum Wie sieht ein Graph aus, bei dem der BFS-Baum eindeutig ist? Satz: Der BFS-Baum ist eindeutig genau dann, wenn der kürzeste Pfad von v zu allen anderen Knoten eindeutig ist. Distanz h Distanz 2 Distanz 1 Beweis: Selbst! Alle Knoten auf gleichen Distanzebenen dürfen miteinander verbunden sein! Distanz 0 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 8

Labyrinthe BFS?! Da kommen wir doch nie an! Ich benutze DFS! Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 9 Die Reise ins Labyrinth, 1986 https://fictionmachine.com/2015/07/03/everything-ive-done-ive-done-for-you-labyrinth-1985/

Zeit für ein Labyrinth Wie oft muss man durch die Gänge des Labyrinths laufen, wenn man 1. DFS, oder 2. BFS nutzt? 2. BFS: Worst-Case: Ω n 2 mal über Kanten laufen! DFS schafft das schneller! Frage: Ist DFS auf jedem Baum/Labyrinth schneller? Man kann zeigen: Jede Kante wird maximal zwei Mal benutzt. Man benötigt maximal 2n-1 Schritte Es gibt Bäume, bei denen 2n-1 Schritte benötigt werden Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 10

Überblick Breiten- und Tiefensuche Wachstum von Funktionen Größe des Inputs Definitionen (O-Notation) Relationen zwischen Laufzeitklassen Beispiele für Laufzeitklassen Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 11

Wachstum von Funktionen / Laufzeiten Wie lange benötigen Algorithmen? Absolute/Genaue Laufzeit ist nicht immer nötig Abschätzen: In welcher Ordnung wächst die Laufzeit? Wovon hängt die Laufzeit ab? Was ist gegeben? (Zahlen, Strings, Graphen, ) Wie viel ist gegeben? (Codierungsgröße) Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 12

Codierungsgröße - Zahlen Wie können Zahlen codiert werden? 1. Unär ( Bierdeckelnotation ) 2. b-adisch Dezimal (10-adisch) Gewöhnlich für Zahlen: Binäre Darstellung, d.h. eine Zahl belegt log 2 n bits. Binär (2-adisch) m Allgemein: a m a m 1 a 1 a 0, a 1 a 2 a wobei n = σ i= a i b i und 0 a < b Beispiele: Dezimal Unär Binär Oktal Hexadezimal 27 IIII IIII IIII IIII IIII II 11011 33 1B Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 13

Codierungsgröße - Graphen Wie kann man Graphen speichern? Adjazenzmatrix: Adjazenzliste: v 4 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 v 1 : v 2, v 3 v 2 : v 1, v 5, v 6 v 3 : v 1, v 4, v 5 v 4 : v 3 v 5 : v 2, v 3, v 7 v 6 : v 2, v 7 v 7 : v 5, v 6 v 1 v 3 v 2 v 6 v 5 v 7 Größe: V 2 V + E log V Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 14

Codierungsgröße - Sonstige Was gibt es noch? Zeichenketten/Strings S: S log N für N mögliche Zeichen. (>o.o)>das_ist_ein_string!! ( o ) Punktmenge P in d Dimensionen: d P log N, wobei N die größte Koordinate ist. n m-matrizen: n m log N, wobei N der größtmögliche Wert ist. 5 12 1 6 22 5 0 42 21 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 15

Überblick Breiten- und Tiefensuche Wachstum von Funktionen Größe des Inputs Definitionen (O-Notation) Relationen zwischen Laufzeitklassen Beispiele für Laufzeitklassen Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 16

Wachstum von Funktionen Betrachte Laufzeit als Funktion T: N R + Verschiedene Systeme liefern verschiedene Laufzeiten, z.b. T 1 n und T 2 n. Aber: T 1 n und T 2 n wachsen ähnlich schnell T 1 n wächst höchstens c 1 mal so schnell wie T 2. T 1 n wächst mindestens c 2 mal so schnell wie T 2. Das gilt ggf. erst ab einem bestimmten Punkt, nämlich n 0 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 17 n 0 c 1 T 2 n T 1 n c 2 T 2 n n

Landau-Symbole Das motiviert folgende Definitionen: O-Notation: Es gibt Konstanten n 0 N und c 1 R +, sodass für alle n n 0 gilt: T 1 n c 1 T 2 n T 1 n O T 2 n Ω-Notation: Es gibt Konstanten n 0 N und c 2 R +, sodass für alle n n 0 gilt: T 1 n c 2 T 2 n T 1 n Ω T 2 n Achtung: O, Ω und Θ sind Mengen! Θ-Notation: Es gibt Konstanten n 0 N und c 1, c 2 R +, sodass für alle n n 0 gilt: c 2 T 2 n T 1 n c 1 T 2 n T 1 n Θ T 2 n Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 18

Beispiel Funktionen Zeige: n O n 2 Mit c = 1 und n 0 = 1 gilt die Aussage wie rechts zu sehen. 12 9 e n n 2 6 3 n n Vorsicht: Es muss eine Allaussage bewiesen/widerlegt werden Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 19 0-3 0 0,5 1 1,5 2 2,5 3 log n 1: https://media1.tenor.com/images/2b6d254d7bbdfd42583e6080ac327d0f/tenor.gif?itemid=5268083 log log n

Überblick Breiten- und Tiefensuche Wachstum von Funktionen Größe des Inputs Definitionen (O-Notation) Relationen zwischen Laufzeitklassen Beispiele für Laufzeitklassen Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 20

Relationen zwischen Klassen - Eine graphische Darstellung Ω g n Θ g n g n Größere Funktionen Wir können sogar Klassen miteinander vergleichen. Beispiel: Ω(n) und Θ n 2 Wir sehen, jede Funktion, die in Θ n 2 liegt, liegt auch in Ω n. Die Umkehrung gilt nicht! Also Θ n 2 Ω(n) Ω n 2 Θ n 2 Ω n n 4 n 3 n 2 O g n 0 Kleinere Funktionen Zum Merken: Wird die Funktion größer, wächst der O-Bereich und der Ω-Bereich schrumpft. O n 2 Θ n O n 0 n 1 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 21

Relationen zwischen Klassen Eine Tabelle Bedingung f n o g n o g n O g n Θ g n Klein-o-Notation f n Θ g n Klasse O g n Θ g n Ω g n Klasse O f n X X Θ f n X X Ω f n X O f n = X Θ f n = Ω f n X = f n ω g n ω g n Ω g n Θ g n Klein-ω-Notation O f n X Θ f n X X Ω f n X X Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 22

Heute Breiten- und Tiefensuche Wachstum von Funktionen Größe des Inputs Definitionen (O-Notation) Relationen zwischen Laufzeitklassen Beispiele für Laufzeitklassen Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 23

Ab an die Tafel! Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 24

Beispiel 1 Zeige 4n 2 + 12n 15 Θ n 2. D.h.: Bestimme n 0, c 1, c 2, sodass für alle n n 0 gilt: 0 c 1 n 2 4n 2 + 12n 15 c 2 n 2 1. Suche nach c 2 : 4n 2 + 12n 15 4n 2 + 12n 4n 2 + 12n 2 = 16n 2 für n 1. 2. Suche nach c 1 : n 4 4n 2 + 12n 15 4n 2 15 ฎ 4n 2 n 2 = 3n 2 für n 4. Beide Ungleichung gelten ab n 0 = 4. Also c 1 = 3, c 2 = 16 und n 0 = 4. Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 25

Beispiel 2 Zeige oder widerlege: 2 n Θ 3 n Zunächst: 2 n O 3 n, denn 2 n 2 + 1 n = 3 n. Aber: 2 n Ω 3 n! Ansonsten gäbe es eine Konstante c 1 mit Aber: 2n = 2 n 2 und lim 3 n 3 n 3 Aussage widerlegt. 2 n c 1 3 n, also 2n c 3 n 1 n = 0, d.h. dieses c1 kann nicht existieren! Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 26

Beispiel 3 Satz 3.1: Für jedes c > 0 gibt es ein n 0, sodass für alle n n 0 gilt: log 2 n c n log Beweisidee: Zeige, dass lim 2 n = 0, d.h. für wachsendes n kommen wir beliebig nah an 0 heran. D.h. n n wir können n 0 so wählen, dass log 2 n c für alle n n n 0 gilt. Satz 3.2: Seien a, b R +. Dann gilt log 2 a n O n b. Beweis: Wählen wir die Konstante c = 1. Dann soll gelten: log 2 a n n b m log 2 n ฏ log 2 log a 2 n log 2 n b a log 2 log 2 n b log 2 n log 2 m b a m Da a, b R + ist auch b a R+. Nach Satz 3.1 ist die letzte Ungleichung ab einem n 0 wahr. Da wir Äquivalenzumformungen benutzt haben, können wir die Lösungkette von unten nach oben gehen. Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 27

Beispiel 4: Laufzeit eines Algorithmus PrimFaktor n 1. Sei i = 2 2. While i n 3. if n mod i = 0 then 4. n = n i 5. output i 6. else 7. i = i + 1 Man sieht: Zeilen 1 und 3-7 dauern konstant lange. While-Schleife benötigt höchstens n Iterationen (da entweder i größer oder n kleiner wird) Damit: O 1 + O n O 1 = O n Lineare Laufzeit! Oder? Input besitzt Größe m log 2 n. Damit hat der Algorithmus eine Laufzeit von: O n = O 2 log 2 n = O 2 m Das ist exponentielle Laufzeit. Schnellster, bisher bekannter Algorithmus für die Primfaktorzerlegung ist der Zahlkörpersieb. Seine Laufzeit ist: e O 1 m 1 3 log m 1 3 Christian Rieck, Arne Schmidt Graphenscan, Wachstum Seite 28