Katja Losemann Chris Schwiegelshohn

Slides:



Advertisements
Ähnliche Präsentationen
8. Termin Teil B: Wiederholung Begriffe Baum
Advertisements

Single-Source Shortest Paths: SSSP
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
7.2 B-Bäume / B*-Bäume als Hilfsmittel zur Indexorganisation
Sortieren I - Bubblesort -
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Das LCA – Problem in Suffixbäumen
ADS Vorlesung Prof. Dr. W. Conen, FH Gelsenkirchen
7. Natürliche Binärbäume
Durchlaufen eines Binärbaumes
R. Der - Vorlesung Algorithmen und Datenstrukturen (Magister)
Programmieren 2 Future Car Projekt Praktikum 6
Programmieren 2 Future Car Projekt Praktikum 6
Computergestützte Verifikation
Computergestützte Verifikation
1 Computergestützte Verifikation Model Checking für finite state systems explizit:symbolisch: 3.1: Tiefensuche 3.2: LTL-Model Checking 3.3:
1 Übung 1 Adaptiere die Prozeduren CheckEU und/oder CheckAU zu Prozeduren CheckEF und CheckAF!
Übung 1 1. Gib ein Transitionssystem an, das dieser Beschreibung
Baumstrukturen Richard Göbel.
Konstruktion von Suffix Bäumen
WS Algorithmentheorie 13 - Kürzeste (billigste) Wege Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 – Graphen)
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (17 – Bäume: Grundlagen und natürliche Suchbäume) Prof. Th. Ottmann.
Algorithmentheorie 12 – Spannende Bäume minimalen Gewichts
Seminar parallele Programmierung SS 2003
Klausur „Diskrete Mathematik II“
Diskrete Mathematik I Vorlesung 6 Binärer Suchbaum II.
Präsentation zu Milestone 1: Planaritätstest, Planarisierierung und Orthogonalisierung Gruppenmitglieder: cku, ocl, pdo, bra.
PG 478 – Open Graph Drawing Framework Thema: Compounds & Force-Directed Francois Bertault & Mirka Miller – An Algorithm for Drawing Compound Graphs [1999]
High Performance = Innovative Computer Systems + Efficient Algorithms Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen.
Algorithmen und Komplexität
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Kapitel 2: Datenstrukturen
Vortrag über Graphen Von Jörg Hendricks.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung 1 SS 2001 Algorithmus von Dijkstra.
Der Knoten Knoten int nodeName Vector edgesTo Point p boolean L boolean S int lambda int father boolean color color wird zur Veranschaulichung im Applet.
2. Die rekursive Datenstruktur Baum 2
Flüsse, Schnitte, bipartite Graphen
Effiziente Algorithmen
Diskrete Mathematik II
Black Box Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen Hartmut Klauck Universität Frankfurt SS
Effiziente Algorithmen
Effiziente Algorithmen
Effiziente Algorithmen
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Verteilte Algorithmen und Datenstrukturen Kapitel 4: Caching Christian Scheideler Institut für Informatik Universität Paderborn.
Animation von Dijkstra
Chris Schwiegelshohn Katja Losemann. Geg.: Suchtext y und Muster x p Position im Suchtext und q Position im Muster Init: p=0 und q=0 loop { while y(p.
Animation von Dijkstra
Vorlesung Binärer Suchbaum II-
Graphen und Bäume.
Kapitel 8: Graphalgorithmen 8. 1 Grundlagen 8
Algorithmen und Datenstrukturen Übungsmodul 8
Informatik Datenstruktur Graph 3.3 Durchlaufen von Graphen
SWE1 / Übung 10 ( ) Rekursion Binärbäume.
Die Tiefensuche Vorgedanke: Die Sage von Theseus und dem Minotaurus
Eine kurze Geschichte der Graphentheorie
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Datenstrukturen für den Algorithmus von.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik II Vorlesung Suche des kürzesten Weges in einem Netz.
Institut für Kartographie und Geoinformation Diskrete Mathematik I Vorlesung Binärer Suchbaum I-
Binärbäume.
Programmiersprachen II Graph_Algorithmen Einführung Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Praktische Informatik 1
2. Die rekursive Datenstruktur Baum 2.1 Von der Liste zum Baum
Heapsort-Algorithmus
 Präsentation transkript:

Katja Losemann Chris Schwiegelshohn Tarjans Algorithmus zur Bestimmung der starken Zusammenhangs- komponenten Katja Losemann Chris Schwiegelshohn

Idee G = <V,E> gerichteter Graph Gesucht sind alle starken Zusammenhangskomponenten (SZK) Einmalige Tiefensuche durch den Graph reicht aus SZK werden durch Wurzeln der DFS- Teilbäume eindeutig identifiziert

Idee (Forsetzung) dfs_index(v): Reihenfolge der DFS-Aufrufe Stack S wird in der Reihenfolge der besuchten Knoten befüllt Bei Rückkehr Überprüfung ob aktueller Knoten v die Wurzel einer SZK Wenn eine Wurzel gefunden wurde, bilden alle Knoten des Stacks bis zu dieser Wurzel eine SZK

Lowlink zusätzlicher Wert lowlink(v) für alle v mit lowlink(v) =min ( {num[v]} {num[x] | v→*−x ) v Wurzel, wenn lowlink(v) = dfs(v)

Lowlink zusätzlicher Wert lowlink(v) für alle v mit lowlink(v) = min{dfs(v‘) | v‘ von v aus über beliebig viele Baumkanten erreichbar, gefolgt von maximal einer (v‘‘,v‘) wobei v‘‘ und v‘ in derselben SZK (insbesondere damit v‘ noch auf dem Stack)} v Wurzel, wenn lowlink(v) = dfs(v) 5

Algorithmus Eingabe Graph G ( V, E ) current_dfs := 0 V‘ := V S = ∅ // S ist der Stack while ( V‘ not emtpy) tarjan ( v ) // v ∊ V‘

Algorithmus (Forsetzung) Tarjan ( v ) : dfs_index( v ) := current_dfs lowlink( v ) := current_dfs S.push ( v ) current_dfs ++ V‘ = V \ { v } For ( v1 | ( v, v1 ) ∊ E ) if ( v1 ∊ V‘ ) tarjan ( v1 ) lowlink( v ) := min ( lowlink( v ), lowlink( v1 ) )

Algorithmus (Forsetzung) else if (v1 ∊ S ) lowlink( v ) := min ( lowlink( v ), dfs_index( v1 ) ) If ( lowlink( v ) = dfs_index( v ) ) repeat k = S.pop( ) //Ausgabe until ( k = v )

Beispiel dfs(v) lowlink(v)) lowlink(1) = 1 lowlink(5) = 2 10 12 11 10 12 11 lowlink(4) = 2 lowlink(9) = 6 lowlink(8) = 6 1 5 lowlink(7) = 6 8 9 lowlink(6) = 6 4 lowlink(3) = 0 lowlink(2) = 0 2 3 6 7 lowlink(10) = 3 lowlink(0) = 0 9 SZK 1 SZK 0,2,3,4,5 8 lowlink(12) = 11 SZK 6,7,8,9 SZK 11,12 7 lowlink(11) = 11 10 6 5 4 3 12 2 1 11 Stack:

Beweis – Korrektheit lowlink Fall 1: (v‘‘,v‘) Vorwärtskante Dann dfs(v‘) > dfs(v‘‘) trägt nicht zum Min bei Fall 2: (v‘‘,v‘) Rückwärtskante Dann v‘ noch auf dem Stack und in gleicher SZK Fall 3: (v‘‘,v‘) Querkante Entweder nicht im Stack und in nächster SZK, oder nicht im Stack und in gleicher SZK, dann aber normale Baumkante

Beweis - Korrektheit lowlink garantiert, dass es immer einen Weg zu einem Knoten höher im DFS-Baum als der aktuelle Knoten existiert lowlink(v) = dfs(v) ⇒ Kein Knoten oberhalb von v kommt für SZK in Frage Mit der letzten Kante kommt man nicht in eine SZK, die nicht aktuell und auf dem Stack liegt. Wäre ein Weg nur in einer Richtung vorhanden, wäre lowlink(v) = dfs(v)

Aufwand Aber ist das effizient berechenbar? Tarjan muss für jeden Knoten einmal aufgerufen werden Die Berechnung von dfs und lowlink erfolgt rekursiv über alle angrenzenden Kanten Insgesamt wird jede Kante maximal 2x betrachtet, damit: O( |V| + |E| )