Interaktives Graphentheorie-Lernen
Interaktives Graphentheorie-Lernen
Guest User
Using app without sign in
Finder für Schnittkanten (Brücken)
Findet Kanten, deren Entfernung die Anzahl zusammenhängender Komponenten erhöht
Wählen Sie einen Algorithmus und generieren Sie Schritte, um die Visualisierung zu beginnen
Eine Brücke (oder Schnittkante) ist eine Kante, deren Entfernung den Graphen trennt. Das Finden von Brücken lokalisiert die kritischen Verbindungen eines Netzes, also die Verbindungen ohne Alternativroute.
Eine einzige Tiefensuche vergibt Entdeckungszeiten und Low-Link-Werte. Eine Kante (u, v), wobei v ein DFS-Kind von u ist, ist genau dann eine Brücke, wenn low[v] > disc[u], das heißt nichts im Teilbaum von v führt zu u oder darüber zurück. Alle Brücken werden in O(V + E) gefunden. Dasselbe DFS-Gerüst liefert auch Artikulationspunkte, und das Kontrahieren der 2-kantenzusammenhängenden Komponenten ergibt den Brückenbaum des Graphen.
Brücken enthüllen kritische Glasfaserverbindungen in Telekom-Backbones, unverzichtbare Straßen und Bahnabschnitte sowie fragile Verbindungen in Stromnetzen. In der Software hilft die Brückenanalyse, das Risiko von API-Abhängigkeiten einzuschätzen. Auf LeetCode erscheint sie als das bekannte Problem der kritischen Verbindungen.
Dieselbe Maschinerie wie bei den Artikulationspunkten, mit einem einzigen von größer gleich auf strikt größer geänderten Vergleich.
dfs(u, vorgänger):
entd[u] = low[u] = ++zeit
für jeden Nachbarn v von u:
wenn v == vorgänger: weiter // Ankunftskante überspringen
wenn v bereits besucht:
low[u] = min(low[u], entd[v]) // Rückkante
sonst:
dfs(v, u)
low[u] = min(low[u], low[v])
wenn low[v] > entd[u]:
melde die Kante (u, v) als BrückeDie strikte Ungleichung macht den ganzen Unterschied zu den Artikulationspunkten aus. low[v] > entd[u] besagt, dass nichts im Teilbaum unterhalb von v den Knoten u oder etwas darüber erreichen kann, die Kante (u, v) ist also die einzige Route und ihr Entfernen trennt den Graphen. Artikulationspunkte nutzen low[v] >= entd[u], wobei Gleichheit bedeutet, dass der Teilbaum u selbst erreicht, aber nicht darüber hinaus; das schneidet den Teilbaum ab, wenn du den Knoten u löschst, nicht aber, wenn du nur die Kante löschst.
Führe die Tiefensuche von A aus auf einem Dreieck mit zweikantigem Anhängsel aus, demselben Graphen wie bei den Artikulationspunkten, damit sich beide Tests auf identischen Daten vergleichen lassen.
Beispielgraph: Ungerichtete Kanten A-B, B-C und C-A bilden ein Dreieck, dazu C-D und D-E.
Die Brücken sind C-D und D-E. Beachte den Gegensatz zu den Artikulationspunkten auf genau diesem Graphen, wo die Antwort die Knoten C und D lautete. Jede Kante des Dreiecks liegt auf einem Zyklus und hat damit einen Umweg, während jede Kante des Anhängsels die einzige Verbindung zu allem dahinter ist. Die allgemeine Regel folgt unmittelbar: eine Kante ist genau dann eine Brücke, wenn sie auf keinem Zyklus liegt.
Zeit: O(V + E) · Speicher: O(V)
Eine einzige Tiefensuche mit konstantem Zusatzaufwand je Kante, die Kosten entsprechen also denen des Durchlaufs. Jeder Knoten wird einmal besucht und jede Kante zweimal betrachtet, einmal von jedem Endpunkt. Der Zustand besteht aus zwei ganzen Zahlen je Knoten plus dem Rekursionsstapel, alles O(V). Der naive Ansatz, jede Kante zu entfernen und den Zusammenhang zu prüfen, kostet O(E mal (V + E)); bei einem Graphen mit 10.000 Kanten ist die Low-Link-Methode damit rund vier Größenordnungen schneller.
Dieselbe DFS beantwortet mehrere verwandte Fragen. Wähle danach, ob das Anfällige eine Kante, ein Knoten oder eine ganze Region ist.
| Alternative | Vorzuziehen, wenn | Kosten |
|---|---|---|
| Artikulationspunkte | Das Kritische ist ein Knoten statt einer Verbindung. Dieselbe DFS mit low[v] >= entd[u]. | O(V + E) |
| Brückenbaum / 2-kantenzusammenhängende Komponenten | Du willst die Regionen, die den Ausfall einer beliebigen Kante überstehen, nicht nur die anfälligen Kanten. | O(V + E) |
| Union-Find über Nichtbrückenkanten | Du willst jede 2-kantenzusammenhängende Komponente zu einem einzigen Knoten kontrahieren. | O(E·α(V)) |
| Minimaler Schnitt | Die Kanten tragen Kapazitäten und du willst die günstigste trennende Menge, nicht die Einzelkantenausfälle. | Kosten des Maximalflusses |
Den ganzen Artikel lesen: Applications of Graph Theory in the Real World
Verwandte Algorithmen: Artikulationspunkte, Tiefensuche