Schnellreferenz

Graphenalgorithmen-Spickzettel: Komplexität, Einsatz und Auswahl

Eine Seite zum Überfliegen vor einem Interview oder beim Programmieren. Jeder wichtige Graphenalgorithmus, seine Zeit- und Speicherkomplexität, wofür er am besten geeignet ist, und ein Entscheidungsleitfaden für die richtige Wahl, wenn die Uhr läuft.

11 Min Lesezeit Aktualisiert: Juli 2026 Alle Niveaus
Mohammed Islam Hadjoudj
Mohammed Islam Hadjoudj
Expert Operations Research Engineer
Traversierung BFS DFS Kürzeste Wege Dijkstra Bellman-Ford Floyd-Warshall A* Spannbäume Kruskal Prim Ordnung Topologische Sortierung Zyklenerkennung Zusammenhang Union-Find Tarjan / Kosaraju (SCC) Netzwerkfluss Ford-Fulkerson Edmonds-Karp
Die sechs Familien von Graphenalgorithmen. Fast jedes Graphenproblem fällt in eine davon.

Dieser Spickzettel ist für zwei Momente gemacht: die letzte Stunde vor einem technischen Interview und die Mitte einer Programmiersitzung, wenn Sie die Form des Problems kennen, aber das genaue Werkzeug brauchen. Er ist bewusst kompakt. Für die ganze Geschichte hinter jedem Algorithmus folgen Sie den Links zu den ausführlichen Artikeln, und wenn Sie einen strukturierten Weg durch alles möchten, beginnen Sie mit dem Graphentheorie-Lernpfad.

Durchgehend ist V die Anzahl der Knoten und E die Anzahl der Kanten.

Die große Komplexitätstabelle

Das mit Abstand Nützlichste, das man auswendig können sollte. Die Komplexitäten gehen von der üblichen effizienten Implementierung aus (binärer Heap für Dijkstra und Prim, Pfadkompression und Union by Rank für Union-Find).

AlgorithmusAm besten fürZeitSpeicher
BFSKürzester Weg in ungewichteten Graphen, EbenenordnungO(V + E)O(V)
DFSZusammenhang, Zyklen, Struktur erkundenO(V + E)O(V)
DijkstraKürzester Weg, nichtnegative GewichteO((V + E) log V)O(V)
Bellman-FordKürzester Weg mit negativen GewichtenO(V · E)O(V)
Floyd-WarshallKürzeste Wege zwischen allen Paaren, kleine dichte GraphenO(V³)O(V²)
A*Heuristischer kürzester Weg (Karten, Spiele)O(E) typischO(V)
KruskalMinimaler Spannbaum, dünn besetzte GraphenO(E log E)O(V)
PrimMinimaler Spannbaum, dichte GraphenO((V + E) log V)O(V)
Topological SortEinen DAG nach Abhängigkeiten ordnenO(V + E)O(V)
Union-FindDynamischer Zusammenhang, GruppierungO(α(V)) pro OperationO(V)
Tarjan / KosarajuStarke ZusammenhangskomponentenO(V + E)O(V)
Edmonds-KarpMaximaler Fluss, minimaler SchnittO(V · E²)O(V + E)
Brauchen Sie den echten Code? Diese Tabelle listet 12 Grundlagen auf einen Blick. Das Algorithmen-Handbuch enthält alle 55, jeweils mit Pseudocode und Schritt für Schritt hergeleiteter Komplexität.

Hinweis zu A*: seine Laufzeit hängt ganz von der Heuristik ab. Mit einer perfekten Heuristik läuft er fast geradewegs zum Ziel; mit einer nutzlosen sinkt er auf Dijkstra herab. Das α bei Union-Find ist die inverse Ackermann-Funktion, praktisch eine kleine Konstante für jede Eingabe, die Ihnen je begegnen wird. Für die Begründung jeder Zeile siehe den Leitfaden zur Komplexität von Graphenalgorithmen.

Graphendarstellungen

Vor jedem Algorithmus wählen Sie, wie der Graph gespeichert wird. Diese eine Entscheidung beeinflusst jede Komplexität oben.

DarstellungSpeicherKantenabfrageAm besten für
AdjazenzlisteO(V + E)O(degree)Dünn besetzte Graphen, die Standardwahl
AdjazenzmatrixO(V²)O(1)Dichte Graphen, Abfragen in konstanter Zeit

Faustregel: Greifen Sie zur Adjazenzliste, außer der Graph ist dicht oder Sie brauchen Kantenprüfungen in konstanter Zeit. Ein 2D-Gitter ist ein impliziter Graph, in dem jede Zelle ein mit ihren Nachbarn verbundener Knoten ist, sodass Sie oft gar keine explizite Darstellung brauchen.

Traversierung: BFS und DFS

Die beiden Algorithmen, auf denen alles andere aufbaut. Den vollständigen Vergleich lernen Sie in BFS vs DFS.

Kürzeste Wege

Die häufigste Familie in Interviews und in der Praxis. Die richtige Wahl wird von den Kantengewichten bestimmt. Die vollständige Vertiefung finden Sie in kürzeste Wege verstehen.

SituationVerwendenWarum
Ungewichtete KantenBFSErste Ankunft ist der kürzeste Weg
Nichtnegative GewichteDijkstraGierig mit einem Min-Heap, hier immer korrekt
Negative GewichteBellman-FordRelaxiert Kanten V-1 mal, erkennt negative Zyklen
Alle Paare auf einmalFloyd-WarshallDrei verschachtelte Schleifen, winziger Code, top bei kleinen Graphen
Sie haben eine HeuristikA*Dijkstra zum Ziel geführt, siehe A*
Die klassische Falle: Lassen Sie Dijkstra niemals auf einem Graphen mit negativen Kanten laufen. Er legt einen Knoten zu früh als endgültig fest und kann ein falsches Ergebnis liefern. Greifen Sie stattdessen zu Bellman-Ford.

Minimale Spannbäume

Verbinden Sie jeden Knoten bei geringsten Gesamtkantenkosten. Beide Algorithmen sind korrekt; wählen Sie nach Graphendichte. Vollständige Durchläufe in minimale Spannbäume.

Ordnung und Zusammenhang

Alle drei tauchen ständig in Interviews auf. Siehe die ausgearbeiteten Muster in essenzielle Graphenalgorithmen für Programmierinterviews.

Netzwerkfluss

Modellieren Sie Durchsatz, Matching und Engpässe. Das elegante Ergebnis hier ist, dass der maximale Fluss gleich dem minimalen Schnitt ist. Vollständige Behandlung in Netzwerkfluss und das Max-Flow-Min-Cut-Theorem.

Welchen Algorithmus soll ich verwenden?

Der schnellste Weg, diesen Spickzettel zu nutzen: linke Spalte lesen, nach rechts springen.

Wenn Sie …Greifen Sie zu
jeden Knoten besuchen oder erkundenBFS oder DFS
den kürzesten Weg in einem ungewichteten Graphen findenBFS
den kürzesten Weg mit nichtnegativen Gewichten findenDijkstra
negative Kantengewichte behandelnBellman-Ford
kürzeste Wege zwischen allen Paaren erhaltenFloyd-Warshall
einen schnellen Weg mit einer Heuristik finden (Karten, Spiele)A*
alles zu minimalen Kosten verbindenKruskal oder Prim
Aufgaben nach ihren Abhängigkeiten ordnenTopologische Sortierung
prüfen, ob zwei Knoten verbunden sind, oder Elemente gruppierenUnion-Find
Cluster in einem gerichteten Graphen findenTarjan oder Kosaraju (SCC)
Durchsatz maximieren oder einen Engpass findenEdmonds-Karp (Max-Flow)

Verwandeln Sie die Tabelle in Intuition

Ein Spickzettel sagt Ihnen, welcher Algorithmus; ihn laufen zu sehen sagt Ihnen, warum. Gehen Sie einen davon Schritt für Schritt auf einem Live-Graphen durch.

Algorithmen-Visualisierer öffnen

Häufig gestellte Fragen

Wie hoch ist die Zeitkomplexität von Dijkstras Algorithmus?

Mit einem binären Heap (Prioritätswarteschlange) läuft Dijkstras Algorithmus in O((V + E) log V) Zeit und O(V) Speicher. Mit einem einfachen Array statt eines Heaps ist er O(V hoch 2), was bei dichten Graphen schneller sein kann.

Welchen Graphenalgorithmus sollte ich für kürzeste Wege verwenden?

Das hängt vom Graphen ab. Verwenden Sie BFS für ungewichtete Graphen, Dijkstra für nichtnegative Gewichte, Bellman-Ford bei negativen Gewichten, Floyd-Warshall für kürzeste Wege zwischen allen Paaren und A*, wenn Sie eine gute Heuristik haben (Karten und Spiele).

Sollte ich eine Adjazenzliste oder eine Adjazenzmatrix verwenden?

Verwenden Sie eine Adjazenzliste für dünn besetzte Graphen: Sie benötigt O(V + E) Speicher und ist die Standardwahl für die meisten Probleme. Verwenden Sie eine Adjazenzmatrix für dichte Graphen oder wenn Sie O(1) Kantenabfragen brauchen, auf Kosten von O(V hoch 2) Speicher.

Welche Graphenalgorithmen sollte ich für Programmierinterviews auswendig lernen?

Die fünf Kernalgorithmen sind BFS, DFS, Dijkstras Algorithmus, topologische Sortierung und Union-Find. Zusammen decken sie den Großteil der Graphenfragen in technischen Interviews ab.

Weitere Lernressourcen

Merken Sie sich das, dann gehen Sie tiefer

Ein Spickzettel bringt Sie schnell weiter. Echte Souveränität kommt davon, diese Algorithmen laufen zu sehen. Wählen Sie einen und drücken Sie auf Start.

Üben Sie mit dem Algorithmen-Visualisierer