Korrektheit des Algorithmus für stark verbundene Komponenten für einen gerichteten Graphen


8

Ich habe den Algorithmus zum Finden der stark verbundenen Komponenten in einem gerichteten Graphen nachgelesen . Es werden zwei DFS-Suchvorgänge berücksichtigt, und im zweiten Schritt wird der ursprüngliche Graph G T transponiert .G=(V,E)GT

Der Algorithmus ist der folgende:

  1. Führen Sie DFS auf (beginnend an einem beliebigen Startscheitelpunkt) und verfolgen Sie die Endzeiten aller Scheitelpunkte.G
  2. Berechnen Sie die Transponierte,
  3. Führen Sie DFS auf , beginnend am Scheitelpunkt mit der letzten Endzeit, und bilden Sie einen Baum, der an diesem Scheitelpunkt verwurzelt ist. Sobald ein Baum fertiggestellt ist, fahren Sie mit der nächstnächsten Endzeit mit dem nicht besuchten Scheitelpunkt fort und bilden mit DFS einen weiteren Baum. Wiederholen Sie diesen Vorgang, bis alle Scheitelpunkte in G T besucht sind.GTGT
  4. Geben Sie die Eckpunkte in jedem vom zweiten DFS gebildeten Baum als separate, stark verbundene Komponente aus.

Meine Frage ist :

  1. Was ist die Intuition hinter diesem mittleren Schritt der Berechnung einer Transponierten?

Antworten:


10

A

A[i,j]=1AT[j,i]=1

In Bezug auf Grafiken bedeutet das

uGvvGTu

GTG

Der Algorithmus, den Sie betrachten, ist Kosarajus Algorithmus . Seien Sie vorsichtig mit Ihrer Vorstellung von "Endzeit": Es ist nicht die Zeit, zu der der Knoten besucht wird, sondern wenn die Suche den von ihm erreichbaren Teilgraphen durchlaufen hat. Wikipedia schlägt vor, einen Stapel zu verwenden, um dies zu verwalten, was ich für eine gute Idee halte.

GTx

  • Gxx
  • x
  • GGTxGTxGTxGT

2

Mein Verständnis:

Wenn Sie DFS auf jeder DAG Graph der Verfolgung der Veredelungs Zeiten auszuführen, die nur , was Sie garantieren können , ist , dass Senkknoten nie die höchste Zielzeit bekommen [1] . Gleichzeitig kann in jeder Komponente des Diagramms die niedrigste Endzeit angezeigt werden . Daher macht es die niedrigste Endzeit nutzlos.

Grundsätzlich ist die Tatsache [1] auch im Originaldiagramm nutzlos , aber im transponierten Diagramm sehr nützlich . Wenn Sie transponieren, führt diese Aussage zu Folgendem:

Im transponierten Diagramm erhält der Knoten, der im nicht transponierten Diagramm eine Senke war, immer die höchste Endzeit .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.