DFS und Rekursion

Intermediate Algorithmen und Datenstrukturen Deutsch
Also available: English
Created by Best · 16.08.2026 at 09:13 UTC

DFS geht in die Tiefe: Rekursion oder expliziter Stack. Nützlich für Zusammenhang, Zykelsuche und topologische Sortierung in DAGs.

Markiere Knoten als besucht, sonst Endlosschleifen in Zyklen.

$$O(|V|+|E|)$$

Wo gebraucht

Zyklenerkennung, topologisches Sortieren, Connected Components, Maze-/Constraint-Suche, Compiler-Call-Graphen. Oft mit explizitem Stack statt tiefer Rekursion.

Vertiefung

Die Tiefensuche verfolgt einen noch offenen Zweig so weit wie möglich und kehrt danach zum letzten Verzweigungspunkt zurück. Rekursion speichert diesen Rückkehrzustand implizit in den Aktivierungsdatensätzen.

Ein Zustandsfeld pro Knoten verhindert erneute Expansion und macht Zyklen beherrschbar. Mit mehreren Zuständen lassen sich noch aktive von vollständig abgeschlossenen Knoten unterscheiden, was etwa Zyklenerkennung in gerichteten Graphen ermöglicht.

Ein- und Austrittszeiten erzeugen eine Klammerstruktur für verschachtelte Teilbäume. Darauf beruhen topologische Sortierung, Zusammenhangsanalysen und Klassifikation von Kanten.

Schwierigkeitsstufen

  1. Rekursive Suchfolge für geordnete Nachbarn verfolgen.
  2. Aktiv- und abgeschlossen-Zustand zur Zyklenerkennung nutzen.
  3. Austrittsreihenfolge mit topologischer Sortierung verbinden.

Fallstricke

Nur den unmittelbaren Vorgänger auszuschliessen genügt in allgemeinen oder gerichteten Zyklen nicht. Grosse Graphen können ausserdem die sichere Rekursionstiefe überschreiten.

University approvals: 0
Tasks
Question 1

Was verhindert Endlosläufe bei DFS in Graphen mit Zyklen?

Question 2

Wozu dient ein eigener Zustand für noch aktive Knoten?

Question 3

Prüfe mit rekursiver Tiefensuche, ob ein Ziel erreichbar ist.

Hint

Ein boolean[] speichert Besuchsmarken pro Index. Über eine List<Integer> kann Java mit for (int v : list) iterieren.

Starter code is prefilled; replace TODO blocks with your solution.
1 test case will be used for grading
Run checks runtime behavior only. Final correctness is evaluated when you submit.
Card Info
  • Topic: Algorithmen und Datenstrukturen
  • Difficulty: Intermediate
  • Completed: 0 users
Creator
Best
Best
BestBuddy