Algorithmische Graphentheorie

Ähnliche Dokumente
WS 2009/10. Diskrete Strukturen

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

Algorithmen und Datenstrukturen

Graphen: Datenstrukturen und Algorithmen

Anmerkungen zur Übergangsprüfung

13. Binäre Suchbäume

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

Babeș-Bolyai Universität Cluj Napoca Fakultät für Mathematik und Informatik Grundlagen der Programmierung MLG5005. Paradigmen im Algorithmenentwurf

Das Briefträgerproblem

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

Binäre Bäume Darstellung und Traversierung

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

8 Diskrete Optimierung

Algorithmen und Datenstrukturen 2

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

Kapiteltests zum Leitprogramm Binäre Suchbäume

Algorithmische Methoden der Netzwerkanalyse

Datenstrukturen & Algorithmen

Algorithmen und Datenstrukturen (WS 2007/08) 63

Bäume und Wälder. Bäume und Wälder 1 / 37

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

Algorithmentheorie Maximale Flüsse

Algorithmen und Datenstrukturen 2

4 Greedy-Algorithmen (gierige Algorithmen)

Algorithmen und Datenstrukturen Suchbaum

Bäume und Wälder. Bäume und Wälder 1 / 37

Kürzeste Wege in Graphen. Maurice Duvigneau Otto-von-Guericke Universität Fakultät für Informatik

Vorlesung 3 MINIMALE SPANNBÄUME

Gliederung. Definition Wichtige Aussagen und Sätze Algorithmen zum Finden von Starken Zusammenhangskomponenten

Die in den Suchverfahren konstruierten Graphen waren zusammenhängend und enthielten keine Kreise. Also vereinbaren wir:

Statistische Untersuchungen zu endlichen Funktionsgraphen

Datenstrukturen und Algorithmen

Tutorium Algorithmen & Datenstrukturen

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

1 topologisches Sortieren

Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Grundlagen der Programmierung 2. Bäume

w a is die Anzahl der Vorkommen von a in w Beispiel: abba a = 2

Nachtrag zu binären Suchbäumen

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Kap. 4.2: Binäre Suchbäume

Kombinatorische Optimierung

Guten Morgen und Willkommen zur Saalübung!

Zeichnen von Graphen. graph drawing

368 4 Algorithmen und Datenstrukturen

Literatur. Dominating Set (DS) Dominating Sets in Sensornetzen. Problem Minimum Dominating Set (MDS)

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

Binärbäume. Prof. Dr. E. Ehses,

Seminarvortag zum Thema Virtual Private Network Design im Rahmen des Seminars Network Design an der Universität Paderborn

Informatik II Bäume. Beispiele. G. Zachmann Clausthal University, Germany Stammbaum. Stammbaum. Stammbaum

EndTermTest PROGALGO WS1516 A

Graphentheorie Mathe-Club Klasse 5/6

Scheduling und Lineare ProgrammierungNach J. K. Lenstra, D. B. Shmoys und É.

Algorithmen II Vorlesung am

Graphentheorie. Organisatorisches. Organisatorisches. Organisatorisches. Rainer Schrader. 23. Oktober 2007

Wasserfall-Ansätze zur Bildsegmentierung

Fully dynamic algorithms for the single source shortest path problem.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

Codierung, Codes (variabler Länge)

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Was bisher geschah Wissensrepräsentation und -verarbeitung in Zustandsübergangssystemen Constraint-Systemen Logiken Repräsentation von Mengen

Sortierverfahren für Felder (Listen)

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

3 Quellencodierung. 3.1 Einleitung

Steinerbäume. Seminarausarbeitung Hochschule Aalen Fakultät für Elektronik und Informatik Studiengang Informatik Schwerpunkt Software Engineering

Beispiel zu Datenstrukturen

Undirected Single-Source Shortest Paths with Positive Integer Weights in Linear Time

t r Lineare Codierung von Binärbbäumen (Wörter über dem Alphabet {, }) Beispiel code( ) = code(, t l, t r ) = code(t l ) code(t r )

Unterscheidung: Workflowsystem vs. Informationssystem

Informatik II. PVK Part1 Severin Wischmann n.ethz.ch/~wiseveri

Teil III: Routing - Inhalt I. Literatur. Geometric Routing. Voraussetzungen. Unit Disk Graph (UDG) Geometric Routing 29

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

Breiten- und Tiefensuche in Graphen

Programmiersprachen und Übersetzer

Wintersemester 2005/2006 Gedächtnisprotokoll der mündlichen Prüfung

Konzepte der Informatik

Theoretische Grundlagen der Informatik

Formale Systeme. Binary Decision Diagrams. Prof. Dr. Bernhard Beckert WS 2010/2011 KIT INSTITUT FÜR THEORETISCHE INFORMATIK

Schulinterner Lehrplan für das Fach Informatik der Sekundarstufe II an der Bettine von Arnim Gesamtschule

Codierungstheorie Rudolf Scharlau, SoSe

Datenstrukturen. Mariano Zelke. Sommersemester 2012

Datenstruktur, die viele Operationen dynamischer Mengen unterstützt

15 Optimales Kodieren

Erzeugung zufälliger Graphen und Bayes-Netze

Datenbankanwendung. Prof. Dr.-Ing. Sebastian Michel TU Kaiserslautern. Wintersemester 2014/15.

Highway Hierarchies. Kristian Dannowski, Matthias Hoeschel

9.4 Binäre Suchbäume. Xiaoyi Jiang Informatik II Datenstrukturen und Algorithmen

Lange Nacht der Wissenschaft. Ein Klassiker. Die Mathematik der Kürzesten Wege

NP-Vollständigkeit. Krautgartner Martin ( ) Markgraf Waldomir ( ) Rattensberger Martin ( ) Rieder Caroline ( )

Graphenalgorithmen und lineare Algebra Hand in Hand Vorlesung für den Bereich Diplom/Master Informatik

Maximaler Fluß und minimaler Schnitt. Von Sebastian Thurm

Die k kürzesten Wege in gerichteten Graphen

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

Bestimmung einer ersten

WS 2013/14. Diskrete Strukturen

Algorithmen und Datenstrukturen SS09

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Pratts Primzahlzertifikate

Approximationsalgorithmen

Graphen: Einführung. Vorlesung Mathematische Strukturen. Sommersemester 2011

Transkript:

Algorithmische Graphentheorie Vorlesung 4: Suchstrategien Babeş-Bolyai Universität, Department für Informatik, Cluj-Napoca csacarea@cs.ubbcluj.ro 14. April 2017

HALBORDNUNG

TOPOLOGISCHE ORDNUNG

TOPOLOGISCHES SORTIEREN

TOPOLOGISCHES SORTIEREN (2)

ZUSAMMENFASSUNG

DURCHLAUFEN BINÄRER BÄUME Die Knoten müssen häufig in einer gewissen Reihenfolge abgearbeitet (durchlaufen) werden. Es gibt im wesentlichen drei Möglichkeiten (sog. Ordnungen), die sich aus der Baumstruktur ergeben, um einen Baum zu durchlaufen:

DURCHLAUFEN BINÄRER BÄUME (2) Preorder Durchlauf W-L-R: Es wird immer zuerst die Wurzel, dann der linke Teilbaum, danach der rechte Teilbaum abgearbeitet. Diese Reihenfolge wird auch als Prefix-Notation bezeichnet.

DURCHLAUFEN BINÄRER BÄUME (3) Inorder Durchlauf L-W-R Bei dieser Reihenfolge wandert man immer zuerst den linken Teilbaum bis zum Ende hinunter. Danach wird der direkte Vorgänger (Wurzel) abgearbeitet. Schließlich wird der rechte Teilbaum abgearbeitet. Diese Durchlaufreihenfolge wird auch als Infix-Notation bezeichnet. Falls ein Suchbaum vorliegt, so kann mit diesem Durchlauf eine sortierte Ausgabe erzeugt werden.

DURCHLAUFEN BINÄRER BÄUME (4) Postorder Durchlauf L-R-W Bei diesem Verfahren wird immer zuerst der linke Teilbaum, dann der rechte Teilbaum und erst am Schluss die Wurzel abgearbeitet. Dieses Verfahren wird auch als Postfix-Notation oder polnische Notation bezeichnet.

WIEDERHOLUNG - BÄUME Definition Es sei G = (V, E) ein ungerichteter Graph und T = (V, E) ein Teilgraph von G. Dann heißt T ein spannender Baum von G, wenn V = V gilt und T ein Baum ist. Ein Graph besitzt im Allgemeinen mehr als einen spannenden Baum, manchmal sogar sehr viele. Um dies zu illustrieren betrachten wir Graphen mit möglichst vielen Kanten. Definition Ein ungerichteter Graph G = (V, E) heißt vollständig, wenn für je zwei Knoten v, u V gilt {v, u} E. Einen ungerichteten, einfachen und vollständigen Graphen mit n Knoten bezeichnet man mit K n.

ANZAHL DER AUFSPANNENDEN BÄUME Wir wollen nun untersuchen, wieviele spannende Bäume ein vollständiger Graph enthält. Lemma Es sei T = (V, E) ein ungerichteter Baum mit V 2. Dann besitzt T mindestens zwei Knoten v V mit deg(v) = 1. Diese nennt man Blätter. Satz von Cayley Für n 2 gibt es n n 2 verschiedene aufspannende Bäume in einem vollständigen Graphen K n mit eindeutig markierten Knoten.

BEWEIS Ein Prüfer-Code ist ein Vektor (a 1, a 2,..., a n 1 ) mit 1 a i n für alle i = 1,..., n 1. Wir werden nun zeigen, dass man jedem aufspannenden Baum von K 2 einen eindeutigen Prüfer-Code zuordnen kann. Da die Knoten von K n eindeutig markiert sind, können wir sie durchnummerieren, d.h. sei V = {v 1, v 2,..., v n }. Wie kommt man nun von einen Baum T zum Prüfer-Code? Eine Möglichkeit ist das in Algorithmus 4 beschriebene Verfahren.

ALGORITHMUS 4

BEWEIS (2) T hat immer mindestens zwei Blätter. In jeder Iteration gibt es daher ein eindeutig bestimmtes Blatt v i mit minimalem Index. Da v i ein Blatt ist, also Grad 1 hat, besitzt es einen eindeutigen Nachbarn und durch das Entfernen von v i erhält man wieder einen Baum mit einem Knoten weniger. Folglich ist der Algorithmus wohldefiniert, bricht nach n 1 Iterationen ab und erzeugt einen Prüfer-Code. Da jeder Baum mindestens zwei Blätter hat, ist der Index des Blattes mit niedrigstem Index nie n. Daher ist v n der Knoten, der bis zum Schluss im Graphen T verbleibt, d.h. es gilt immer a n 1 = n. Nun sieht man schon, warum Prüfer-Codes interessant sind, denn es gibt genau n n 2 Prüfer-Codes (a 1,..., a n 2, a n 1 ) mit a n 1 = n.

BEWEIS (3)

BEWEIS (4)

BEWEIS (5)

BEWEIS (6)

BÄUME IN GERICHTETEN GRAPHEN Definition Sei G = (V, E) ein gerichteter Graph, so heißt G stark zusammenhängend, wenn für je zwei Knoten s, t V ein (gerichteter) Weg P mit Anfangsknoten s und Endknoten t existiert, und schwach zusammenhängend, wenn für je zwei Knoten s, t V ein ungerichteter Weg P mit Anfangsknoten s und Endknoten t existiert. Ein Knoten s V heißt Wurzel von G, wenn für alle Knoten t V ein gerichteter Weg P mit Anfangsknoten s und Endknoten t existiert.

BEMERKUNG Ein gerichteter Graph, der eine Wurzel besitzt, ist also immer schwach zusammenhängend, aber nicht jeder schwach zusammenhängende Graph besitzt eine Wurzel. Ein gerichteter Graph ist stark zusammenhängend genau dann, wenn jeder Knoten eine Wurzel ist. Abbildung 1: Ein gerichteter Graph der weder stark noch schwach zusammenhängend ist. Würde der Knoten 6 nicht zum Graphen gehören, so wären die Knoten 1 und 2 Wurzeln.

BÄUME IN GERICHTETE GRAPHEN Ungerichteter Graph ist ein Baum...

BÄUME IN GERICHTETE GRAPHEN Ungerichteter Graph ist ein Baum... genau dann, wenn er zusammenhängend und kreisfrei ist. Übertragung auf gerichtete Graphen... Ist ein gerichteter Baum stark oder schwach zusammenhängend? Darf er keine gerichteten einfache Kreise enthalten oder auch keine ungerichteten einfachen Kreise?

ZUSAMMENHÄNGENDE GERICHTETE GRAPHEN

BÄUME IN GERICHTETE GRAPHEN Definition Es sei T = (V, E) ein gerichteter Graph. T heißt Baum, wenn der zugeordnete ungerichtete Graph ein Baum ist. Abbildung 2: Gerichtete Bäume

BEMERKUNG Bäume in gerichteten Graphen sind also schwach zusammenhängend und kreisfrei, d.h. sie enthalten keine ungerichteten einfachen Kreise. Der Rückzug auf schwachen Zusammenhang hat allerdings den Nachteil, dass in einem gerichteten Graphen T = (V, E) für zwei beliebige Knoten s, t V nicht garantiert ist, dass es in T einen gerichteten Weg von s nach t gibt. Definition Es sei T = (V, E) ein gerichteter Graph. T heißt Wurzelbaum mit Wurzel s, wenn T ein Baum ist, in dem s eine Wurzel ist.

SATZ Es sei T = (V, E) ein gerichteter Graph und s V. Dann sind äquivalent: (a) T ist ein Wurzelbaum mit Wurzel s. (b) T ist ein Baum, indeg(s) = 0 und indeg(v) = 1 für alle v V \ {s}. (c) s ist eine Wurzel in T, indeg(s) = 0 und indeg(v) 1 für alle v V \ {s}.

BEWEIS

BEWEIS (2)

MINIMALE AUFSPANNENDE BÄUME In vielen Anwendungsproblemen geht es darum gewisse Knoten mit möglichst wenigen Kanten so zu verbinden, dass zwischen allen Paaren von Knoten ein Weg existiert. Magnetschwebebahn Städte werden als Knoten modellieren und die dazwischen technisch möglichen Verbindungen als Kanten. Wenn wir davon ausgehen, dass die Bahn immer in beide Richtungen fährt, erhalten wir so einen ungerichteten Graphen. Aus Kostengründen werden nur möglichst wenige Strecken tatsächlich gebaut, d.h. wir suchen einen aufspannenden Baum. Wir wissen schon, dass wir mindestens Anzahl der Städte - 1 Strecken realisieren müssen. Nun kosten die möglichen Strecken aber nicht alle gleich viel. Welchen aufspannenden Baum sollen wir also wählen?

MINIMALE AUFSPANNENDE BÄUME Broadcasting Betrachten ein Netzwerk von Sendemasten unterschiedlicher Reichweiten, in dem eine Information kostengünstig von einem Mast an alle anderen weitergegeben werden soll, so erhalten wir einen gerichteten Graphen, in dem wir einen aufspannenden Wurzelbaum suchen.

GEWICHTETE GRAPHEN UND MINIMALE SPANNENDE BÄUME Definition Es sei G = (V, E) ein ungerichteter oder gerichteter Graph. G heißt gewichtet, wenn jeder Kante e E ein Gewicht w(e) zugeordnet ist. Definition Es sei G = (V, E) gewichteter ungerichteter Graph. Ein Teilgraph T = (V, E T ) von G heißt minimaler spannender Baum von G, wenn sein Gewicht w(t) := e E T w(e) minimal unter allen spannenden Bäumen von G ist.

CHARAKTERISIERUNGSSATZ MINIMAL SPANNBÄUME Es sei G = (V, E) ein ungerichteter, gewichteter und zusammenhängender Graph mit n = V Knoten und Kantengewichten w(e) für alle e E und T = (V, E T ) ein spannender Baum. Dann sind äquivalent: (a) T ist ein minimaler spannender Baum. (b) Für jede Kante e E \ E T gilt: e ist eine Kante mit maximalem Gewicht in dem eindeutigen einfachen Kreis, der entsteht, wenn man e zu T hinzufügt. (c) Für jede Kante e T E T gilt: Entfernt man e T aus T, so zerfällt T in zwei Zusammenhangskomponenten Z 1 und Z 2. e T ist eine Kante mit minimalem Gewicht, die in beiden Zusammenhangskomponenten jeweils einen Endknoten hat.

BEWEIS Sei T ein minimaler spannender Baum und e = {v, u} E \ E T beliebig. Da die Knoten v, u im Baum T durch einen eindeutigen einfachen Weg P verbunden sind, entsteht durch das Hinzufügen der Kante e zu T ein eindeutiger einfacher Kreis. Angenommen, es gibt eine Kante e T P mit w(e T ) > w(e). Dann betrachten wir den Graphen T = (V, (E \ {e T }) {e}). Es gilt offensichtlich w(t) < w(t). Außerdem hat T wieder n 1 Kanten und ist zusammenhängend. Folglich ist T ein spannender Baum mit einem kleineren Gewicht als T. Widerspruch.

BEWEIS (2)

ALGORITHMUS VON PRIM Wie findet man einen minimalen spannenden Baum mit kleinstem Gewicht? Idee Starte mit einem beliebigen Knoten. Der Baum ist zusammenhängend, also muss von diesem Knoten eine Kante ausgehen. Wähle hierfür diejenige mit kleinstem Gewicht. Nun hat man einen Teilgraphen mit zwei Knoten und einer Kante. Von diesem Teilgraphen muss wiederum eine Kante ausgehen zu einem noch nicht enthaltenen Knoten. Wähle hierfür wieder die mit kleinstem Gewicht und setze das Verfahren fort, bis alle Knoten verbunden sind.

ALGORITHMUS VON PRIM (2)

ALGORITHMUS VON PRIM (3)

WOHLDEFINIERTHEIT Satz Es sei G = (V, E) ein ungerichteter, gewichteter und zusammenhängender Graph mit n := V Knoten und Kantengewichten w(e) für alle e E. Dann ist der Algorithmus von Prim wohldefiniert und der erzeugte Teilgraph T := (V n, E n ) ein minimaler spannender Baum von G.

BEMERKUNG Der Algorithmus von Prim erzeugt ausgehend von einem Knoten eine immer größere Zusammenhangskomponente mit möglichst kleinem Gewicht. Bei den entstehenden Teilgraphen wird also der Fokus darauf gelegt, dass sie zusammenhängend sind. Dass sie gleichzeitig auch kreisfrei sind, folgt daraus, dass man die Zusammenhangskomponente in jedem Schritt vergrößern will.

ALGORITHMUS VON KRUSKAL (WIEDERHOLUNG) Man kann die Prioritäten auch umkehren: Kann man stattdessen eine Folge von Teilgraphen erzeugen, bei denen man immer eine Kante mit möglichst kleinem Gewicht dazu nimmt, solange der Graph kreisfrei bleibt? Die zwischendrin entstehenden Teilgraphen wären dann nicht notwendig zusammenhängend. Der letzte jedoch muss zusammenhängend sein, da man sonst noch eine weitere Kante hinzu nehmen könnte.

ALGORITHMUS VON KRUSKAL

WOHLDEFINIERTHEIT Satz Es sei G = (V, E) ein ungerichteter, gewichteter und zusammenhängender Graph mit n := V Knoten und Kantengewichten w(e) für alle e E. Dann ist der Algorithmus von Kruskal wohldefiniert und der erzeugte Teilgraph T := (V n, E n ) ein minimaler spannender Baum von G.

ZUSAMMENFASSUNG Die Algorithmen von Prim und Kruskal sind sogenannte Greedy-Verfahren. Als Greedy-Verfahren bezeichnet man einen Algorithmus, der versucht ein Problem zu lösen, indem er in jeder Iteration das tut, was gerade am besten erscheint. Dies muss global gesehen nicht die beste Entscheidung sein und führt auch nicht immer zum Erfolg, wie man an dem folgenden Beispiel sieht. Ein Greedy-Verfahren um von einem Berggipfel herunter zu finden wäre zum Beispiel immer in die Richtung des steilsten Abstiegs zu gehen. Wenn man Glück hat, kommt man so am Fuße des Berges an. Hat man hingegen Pech, so landet man in einer Senke, aus der man mit diesem Ansatz nicht mehr herausfindet. Dass Greedy-Verfahren zur Bestimmung minimaler spannender Bäume funktionieren liegt, etwas vereinfacht, daran, dass man einen minimalen spannenden Baum eines Graphen aus minimalen spannenden Bäumen von Teilgraphen zusammenbauen kann.