Arian Soleimanzadeh
  • Startseite
  • Blog
  • Podcasts
  • Videos
  • Bibliothek
  • Kontakt
العربيةArabic
DeutschGerman
EnglishEnglish
فارسیPersian
한국어Korean
中文Chinese
Bereich•Schnellkontakt

Languages

Choose your interface locale

ar

العربية

Arabic

de

Deutsch

German

en

English

English

fa

فارسی

Persian

ko

한국어

Korean

zh

中文

Chinese

Termin vereinbaren

Senden Sie eine kurze Nachricht — ich antworte so bald wie möglich.

LinkedInSchnelle Antwort
Startseite/Artikel/Topological Sorting: Kahn, DFS und Abhängigkeiten in DAGs
AlgorithmsGraph AlgorithmsArtikel

Topological Sorting: Kahn, DFS und Abhängigkeiten in DAGs

Praxisnaher Leitfaden zu Topological Sorting mit Kahn, DFS, Cycle Detection, Dependency Levels und realen DAG-Anwendungen.

21. August 20269 Min. Lesezeit22 Aufrufe
#Graph#Algorithms#Topological Sorting#DAG#Kahn Algorithm#DFS#JavaScript#TypeScript

Arian Soleimanzadeh

Software Engineer & Researcher

Visueller Leitfaden zu Topological Sorting und DAGs

Arian Soleimanzadeh

KI · Code · Produkt

Forschung + Engineering
Auf dieser Seite
Kahn-AlgorithmusDFS-MethodeMehrere gültige ReihenfolgenAnwendungenKomplexitätFazit

Topological Sorting erzeugt eine lineare Reihenfolge der Knoten eines gerichteten Graphen, sodass für jede Kante:

Code
1
u → v

u vor v steht.

Eine solche Reihenfolge existiert nur für einen Directed Acyclic Graph (DAG).

Kahn-Algorithmus

Kahn verwendet den in-degree.

  1. In-Degree aller Knoten berechnen.
  2. Alle Knoten mit In-Degree 0 in eine Queue legen.
  3. Einen Knoten entnehmen.
  4. In-Degree seiner Nachfolger reduzieren.
  5. Neue Null-Knoten einfügen.
  6. Werden nicht alle Knoten verarbeitet, existiert ein Zyklus.
JavaScript
1234567891011121314151617181920212223242526272829303132333435363738394041
function topoSort(graph) {
  const nodes = new Set();
  const indegree = new Map();

  for (const [u, list] of Object.entries(graph)) {
    nodes.add(u);
    for (const v of list) nodes.add(v);
  }

  for (const n of nodes) indegree.set(n, 0);

  for (const list of Object.values(graph)) {
    for (const v of list) {
      indegree.set(v, indegree.get(v) + 1);
    }
  }

  const queue = [...nodes].filter(
    n => indegree.get(n) === 0
  );

  let head = 0;
  const order = [];

  while (head < queue.length) {
    const u = queue[head++];
    order.push(u);

    for (const v of graph[u] ?? []) {
      indegree.set(v, indegree.get(v) - 1);

      if (indegree.get(v) === 0) {
        queue.push(v);
      }
    }
  }

  return order.length === nodes.size
    ? order
    : null;
}

DFS-Methode

Alternativ kann DFS mit Postorder und umgekehrter Finish-Reihenfolge verwendet werden.

Für produktiven Code ist Cycle Detection mit den Zuständen unvisited, visiting, finished wichtig.

Mehrere gültige Reihenfolgen

Eine topologische Reihenfolge muss nicht eindeutig sein. Unabhängige Tasks können ihre Position tauschen.

Anwendungen

  • Build-Reihenfolgen
  • Kursvoraussetzungen
  • Package Dependencies
  • CI/CD
  • Workflows
  • ETL Pipelines
  • Migrationen
  • DAG Dynamic Programming

Komplexität

Code
1
O(V + E)

Fazit

Topological Sorting löst Abhängigkeitsreihenfolgen in DAGs und erkennt zusammen mit Kahn oder DFS auch zyklische, damit ungültige Dependency-Strukturen.

Auf dieser Seite
Kahn-AlgorithmusDFS-MethodeMehrere gültige ReihenfolgenAnwendungenKomplexitätFazit

Artikeldetails

Veröffentlichungsdaten, Lesezeit und aktuelle Aufrufzahlen.

Veröffentlicht

21. August 2026

Aktualisiert

2. November 2026

Lesezeit

9 Min. Lesezeit

Aufrufe

22

Autor

Arian Soleimanzadeh

Vorheriger Artikel

Connected Components: DFS, BFS und Union-Find

Nächster Artikel

Articulation Points: Tarjan, Low-Link und kritische Knoten

Arian Soleimanzadeh

Ein persönliches Portfolio mit Fokus auf moderne Webentwicklung, UI-Systeme und praxisnahe KI-Produkte — sauberer Code, klares Design.

Schnellzugriff

  • Über mich
  • Blog
  • Bibliothek
  • Kontakt

Kontakt

  • soleimanzadeh.a.work@gmail.com
  • soleimanzadeh.uni@gmail.com

Verfügbarkeit: Wochentage

Antwortet in der Regel innerhalb von 24 Std.

Newsletter

Erhalten Sie Neuigkeiten zu Beiträgen, Projekten und neuen Veröffentlichungen.

© 2026 ariansoleimanzadeh.dev — Alle Rechte vorbehalten.

LinkedIn