/
/
·
·
/
/
·
·
  • Einführung
  • Die Idee in einem Satz
  • Backtracking als Such-Baum
  • Klassisches Beispiel: 8-Damen-Problem
  • Pseudocode-Schema
  • Pruning: das Geheimnis
  • Weitere klassische Probleme
  • Backtracking vs. DP vs. Greedy
  • Komplexität
  • Branch-and-Bound (Spezialform)
  • Klausur-Faustregeln
  • Häufige Stolpersteine
ThemenAlgorithmenBacktracking
Algorithmen·4Lerneinheiten·20min·Stand17.07.2026

Backtracking.

Du bist in einem Labyrinth und triffst eine Sackgasse. Was machst du? Du gehst zurück und probierst eine andere Abzweigung. Genau das ist Backtracking: systematisches Durchprobieren mit Rückzug bei Sackgassen. Klausur-Klassiker für NP-schwere Probleme wie 8-Damen, Sudoku, TSP. 8/17 WInf-Algo-Klausuren.

Backtracking: Erweitere eine Teil-Lösung schrittweise. Wenn der aktuelle Pfad zu keiner gültigen Lösung führen kann (Sackgasse), gehe einen Schritt zurück und probiere eine Alternative.

Stelle dir alle möglichen Lösungs-Kandidaten als Baum vor:

  • Wurzel: leere Teil-Lösung
  • Kanten: "fügt nächstes Element hinzu"
  • Blätter: komplette Lösungen (gültig oder nicht)

Backtracking führt eine Tiefensuche (DFS) über diesen Baum durch, mit Pruning: schneide unmögliche Pfade früh ab.

Problem: Platziere 8 Damen auf einem 8×8-Schachbrett, sodass keine eine andere bedroht (keine in gleicher Zeile, Spalte oder Diagonale).

Backtracking-Lösung:

solve(board, col):
    if col == 8: return True  # alle Damen platziert
    for row in 0..7:
        if isSafe(board, row, col):
            board[row][col] = "Q"   # versuche Position
            if solve(board, col + 1):
                return True
            board[row][col] = "."   # backtrack: entferne Versuch
    return False

Pro Spalte: versuche alle 8 Zeilen. Wenn keine funktioniert → rückwärts. Mit Pruning sind nur wenige Tausend statt 88=168^8 = 1688=16 Millionen Versuche nötig.

backtrack(partial_solution):
    if is_complete(partial_solution):
        record_solution(partial_solution)
        return

    for candidate in next_candidates(partial_solution):
        if is_promising(candidate, partial_solution):
            extend(partial_solution, candidate)
            backtrack(partial_solution)
            undo(partial_solution, candidate)  # backtrack!

Ohne Pruning ist Backtracking = brute-force-Tiefensuche (O(bd)O(b^d)O(bd)).

Mit Pruning sind nur wenige Pfade tatsächlich besucht. Pruning-Strategien:

  1. Constraint Propagation: Schließe Zellen aus, die andere Damen-Positionen blockieren
  2. Branch-and-Bound: Bei Optimierungs-Problemen: schneide Pfade ab, deren bestmögliche Lösung schlechter als bestes gefundenes Optimum ist
  3. Ordering Heuristics: Probiere "vielversprechendere" Kandidaten zuerst

Sudoku

Backtracking pro leere Zelle: probiere 1-9, prüfe Sudoku-Regeln, weiter zur nächsten Zelle.

Knapsack (0/1)

Für jedes Item: nimm oder nimm nicht. Backtracking über alle 2n2^n2n Kombinationen, mit Pruning bei Kapazitäts-Überschreitung viel weniger.

Traveling Salesman (TSP)

Permutationen aller Städte. Pruning: wenn aktuelle Teil-Tour bereits länger als beste komplette Tour → abbrechen.

Graph-Färbung

Färbe Knoten mit minimaler Farben-Anzahl, so dass keine 2 adjazenten gleich sind.

N-Queens

Verallgemeinerung von 8-Damen für beliebiges nnn.

Subset Sum

Wähle Teilmenge der Eingabe-Zahlen, die exakt zu einer Ziel-Summe addieren.

ParadigmaEigenschaften
GreedyLokal beste Wahl, nie zurück, schnell, nicht immer optimal
DPSpeichert überlappende Teil-Lösungen, optimal, polynomial
BacktrackingSystematisches Durchprobieren mit Rückzug, optimal, oft exponentiell
D&CTeile + löse Teile + kombiniere, polynomial bei unabhängigen Teilen

Wann Backtracking? Wenn es viele Lösungs-Kandidaten gibt und keine bessere Strategie (DP, Greedy) funktioniert, typisch bei NP-schweren Problemen.

Worst Case: O(bd)O(b^d)O(bd) mit bbb = Branching-Faktor, ddd = Tiefe.

Average Case: durch Pruning deutlich besser. Schwer allgemein zu beschreiben, hängt vom Problem ab.

Beispiel 8-Damen: 88=16M8^8 = 16M88=16M ohne Pruning, ~151515k mit guten Constraints.

Für Optimierungs-Probleme: erweitere Backtracking um eine Schranke für den noch erreichbaren best/schlechtesten Wert.

branch_and_bound:
    best_so_far = infinity
    for each candidate:
        if upper_bound(candidate) < best_so_far:
            skip   # diese Teil-Lösung kann nicht besser sein
        else:
            extend and recurse

Anwendung: optimale TSP-Lösung, optimaler Knapsack mit garantierter Optimalität.

1. Backtracking = systematische Tiefensuche mit Rückzug.

2. Pruning ist essentiell. Ohne Pruning oft exponentiell und unbenutzbar.

3. Pseudocode-Schema: if complete → record; for each candidate → extend + recurse + undo.

4. Klassiker: 8-Damen, Sudoku, N-Queens, Knapsack, TSP, Graph-Färbung.

5. Branch-and-Bound: Backtracking + Schranke für Optimierungs-Probleme.

1. undo vergessen. Beim Rückzug MUSS die Teil-Lösung wieder in den vorherigen Zustand gebracht werden. Sonst falsche Ergebnisse.

2. Constraint-Check zu spät. Wenn du erst am Ende prüfst, ob die Lösung gültig ist, hast du gar nicht backtracking, sondern brute force.

3. Backtracking als immer optimal annehmen. Korrektheit ist garantiert (findet ALLE Lösungen oder die beste), aber Laufzeit kann exponentiell sein.

4. Pruning vergessen. Ohne Pruning oft unbenutzbar in der Praxis. Constraints früh propagieren.

5. Backtracking mit Greedy verwechseln. Greedy macht eine Wahl und vergisst Alternativen. Backtracking probiert systematisch ALLE.

Sieh das 4-Damen-Problem mit Backtracking gelöst. Pro Schritt:

  • Aktuelle Brett-Position
  • Versuchte Damen-Position (gelb)
  • Konflikte (rot markiert)
  • Backtrack-Schritte wenn keine Lösung in Sicht

So entwickelst du Intuition für "systematisch durchprobieren mit Rückzug".

Lade Visualisierung...

Klausur-Tipp: Bei Backtracking-Aufgaben zeichne den Such-Baum: jeder Knoten = Teil-Lösung, Kanten = Erweiterungen. Markiere Pruning-Stellen, das zeigt, warum Backtracking effizient bleibt trotz exponentiellem Worst Case.

Anmelden, um den Fortschritt zu speichern.

Nächster Schritt

Wenn du fertig bist: jetzt üben.

Aktives Abrufen festigt Wissen schneller als nochmal lesen.

War das hilfreich?

Verwandte Themen

  • Big-O Notation
  • Bubblesort
  • Mergesort
  • Quicksort
  • Sortier-Vergleich

Tools

Bald: Karteikarten · Spaced-Repetition · Mind-Map-Export

Fachliche Qualität
Noch nicht klassifiziertNoch nicht geprüft.

Diese Lerneinheit wurde für typische Bachelor-Klausuren konzipiert. So prüfen wir · Fehler entdeckt? Melde ihn uns oder markiere die fragliche Stelle direkt im Text oben.

Klausur-ÜbersichtKomplette Übersicht: alle Tabs als linearer Text zum Lernen
▾

Alle Tabs der Lerneinheit (Erklärung · Interaktiv verstehen · Praxis-Übung · Klausur-Quiz) als durchgehender Text. Ideal zum Wiederholen vor der Klausur, und für Suchmaschinen wie Google, Bing und KI-Suche (ChatGPT, Perplexity).

Inhalt dieser Übersicht

  1. Erklärung(Erklärung)
  2. Interaktiv verstehen(Visualisierung / Interaktiv)
  3. Praxis-Übung(Quiz / Klausurfragen)
  4. Klausur-Quiz(Quiz / Klausurfragen)
Teil 1·Erklärung

Erklärung

Du bist in einem Labyrinth und triffst eine Sackgasse. Was machst du? Du gehst zurück und probierst eine andere Abzweigung. Genau das ist Backtracking: systematisches Durchprobieren mit Rückzug bei Sackgassen. Klausur-Klassiker für NP-schwere Probleme wie 8-Damen, Sudoku, TSP. 8/17 WInf-Algo-Klausuren.

Die Idee in einem Satz

Backtracking: Erweitere eine Teil-Lösung schrittweise. Wenn der aktuelle Pfad zu keiner gültigen Lösung führen kann (Sackgasse), gehe einen Schritt zurück und probiere eine Alternative.

Backtracking als Such-Baum

Stelle dir alle möglichen Lösungs-Kandidaten als Baum vor:

  • Wurzel: leere Teil-Lösung
  • Kanten: "fügt nächstes Element hinzu"
  • Blätter: komplette Lösungen (gültig oder nicht)

Backtracking führt eine Tiefensuche (DFS) über diesen Baum durch, mit Pruning: schneide unmögliche Pfade früh ab.

Klassisches Beispiel: 8-Damen-Problem

Problem: Platziere 8 Damen auf einem 8×8-Schachbrett, sodass keine eine andere bedroht (keine in gleicher Zeile, Spalte oder Diagonale).

Backtracking-Lösung:

solve(board, col):
    if col == 8: return True  # alle Damen platziert
    for row in 0..7:
        if isSafe(board, row, col):
            board[row][col] = "Q"   # versuche Position
            if solve(board, col + 1):
                return True
            board[row][col] = "."   # backtrack: entferne Versuch
    return False

Pro Spalte: versuche alle 8 Zeilen. Wenn keine funktioniert → rückwärts. Mit Pruning sind nur wenige Tausend statt 8⁸ = 16 Millionen Versuche nötig.

Pseudocode-Schema

backtrack(partial_solution):
    if is_complete(partial_solution):
        record_solution(partial_solution)
        return

    for candidate in next_candidates(partial_solution):
        if is_promising(candidate, partial_solution):
            extend(partial_solution, candidate)
            backtrack(partial_solution)
            undo(partial_solution, candidate)  # backtrack!

Pruning: das Geheimnis

Ohne Pruning ist Backtracking = brute-force-Tiefensuche (O(b^d)).

Mit Pruning sind nur wenige Pfade tatsächlich besucht. Pruning-Strategien:

  1. Constraint Propagation: Schließe Zellen aus, die andere Damen-Positionen blockieren
  2. Branch-and-Bound: Bei Optimierungs-Problemen: schneide Pfade ab, deren bestmögliche Lösung schlechter als bestes gefundenes Optimum ist
  3. Ordering Heuristics: Probiere "vielversprechendere" Kandidaten zuerst

Weitere klassische Probleme

Sudoku

Backtracking pro leere Zelle: probiere 1-9, prüfe Sudoku-Regeln, weiter zur nächsten Zelle.

Knapsack (0/1)

Für jedes Item: nimm oder nimm nicht. Backtracking über alle 2ⁿ Kombinationen, mit Pruning bei Kapazitäts-Überschreitung viel weniger.

Traveling Salesman (TSP)

Permutationen aller Städte. Pruning: wenn aktuelle Teil-Tour bereits länger als beste komplette Tour → abbrechen.

Graph-Färbung

Färbe Knoten mit minimaler Farben-Anzahl, so dass keine 2 adjazenten gleich sind.

N-Queens

Verallgemeinerung von 8-Damen für beliebiges n.

Subset Sum

Wähle Teilmenge der Eingabe-Zahlen, die exakt zu einer Ziel-Summe addieren.

Backtracking vs. DP vs. Greedy

ParadigmaEigenschaften
GreedyLokal beste Wahl, nie zurück, schnell, nicht immer optimal
DPSpeichert überlappende Teil-Lösungen, optimal, polynomial
BacktrackingSystematisches Durchprobieren mit Rückzug, optimal, oft exponentiell
D&CTeile + löse Teile + kombiniere, polynomial bei unabhängigen Teilen

Wann Backtracking? Wenn es viele Lösungs-Kandidaten gibt und keine bessere Strategie (DP, Greedy) funktioniert, typisch bei NP-schweren Problemen.

Komplexität

Worst Case: O(b^d) mit b = Branching-Faktor, d = Tiefe.

Average Case: durch Pruning deutlich besser. Schwer allgemein zu beschreiben, hängt vom Problem ab.

Beispiel 8-Damen: 8⁸ = 16M ohne Pruning, ~15k mit guten Constraints.

Branch-and-Bound (Spezialform)

Für Optimierungs-Probleme: erweitere Backtracking um eine Schranke für den noch erreichbaren best/schlechtesten Wert.

branch_and_bound:
    best_so_far = infinity
    for each candidate:
        if upper_bound(candidate) < best_so_far:
            skip   # diese Teil-Lösung kann nicht besser sein
        else:
            extend and recurse

Anwendung: optimale TSP-Lösung, optimaler Knapsack mit garantierter Optimalität.

Klausur-Faustregeln

1. Backtracking = systematische Tiefensuche mit Rückzug.

2. Pruning ist essentiell. Ohne Pruning oft exponentiell und unbenutzbar.

3. Pseudocode-Schema: if complete → record; for each candidate → extend + recurse + undo.

4. Klassiker: 8-Damen, Sudoku, N-Queens, Knapsack, TSP, Graph-Färbung.

5. Branch-and-Bound: Backtracking + Schranke für Optimierungs-Probleme.

Häufige Stolpersteine

1. undo vergessen. Beim Rückzug MUSS die Teil-Lösung wieder in den vorherigen Zustand gebracht werden. Sonst falsche Ergebnisse.

2. Constraint-Check zu spät. Wenn du erst am Ende prüfst, ob die Lösung gültig ist, hast du gar nicht backtracking, sondern brute force.

3. Backtracking als immer optimal annehmen. Korrektheit ist garantiert (findet ALLE Lösungen oder die beste), aber Laufzeit kann exponentiell sein.

4. Pruning vergessen. Ohne Pruning oft unbenutzbar in der Praxis. Constraints früh propagieren.

5. Backtracking mit Greedy verwechseln. Greedy macht eine Wahl und vergisst Alternativen. Backtracking probiert systematisch ALLE.

Teil 2·Visualisierung / Interaktiv

Interaktiv verstehen

4-Damen-Backtracking-Stepper

Sieh das 4-Damen-Problem mit Backtracking gelöst. Pro Schritt:

  • Aktuelle Brett-Position
  • Versuchte Damen-Position (gelb)
  • Konflikte (rot markiert)
  • Backtrack-Schritte wenn keine Lösung in Sicht

So entwickelst du Intuition für "systematisch durchprobieren mit Rückzug".

Interaktive Visualisierung

Interaktive Komponente: probiere sie im Topic-Player oben aus.

Klausur-Tipp: Bei Backtracking-Aufgaben zeichne den Such-Baum: jeder Knoten = Teil-Lösung, Kanten = Erweiterungen. Markiere Pruning-Stellen, das zeigt, warum Backtracking effizient bleibt trotz exponentiellem Worst Case.

Teil 3·Quiz / Klausurfragen

Praxis-Übung

Backtracking, Praxis-Übung

6 Aufgaben zu Backtracking-Prinzip, Pruning, klassischen Problemen.

Klausurfragen mit Lösungen (6)

F1.Was ist die Grundidee von Backtracking?

Antwort: Systematisches Durchprobieren mit Rückzug bei Sackgassen

Erklärung: Backtracking: Tiefensuche durch alle Kandidaten, mit Rückzug bei Sackgassen (Constraints verletzt). Schließt unmögliche Pfade früh aus (Pruning) um exponentielle Laufzeit zu reduzieren.

F2.Welches Problem ist KEIN klassisches Backtracking-Problem?

Antwort: Binäre Suche

Erklärung: Binäre Suche ist Divide-and-Conquer, KEIN Backtracking. Es teilt das Suchintervall und geht in eine Richtung, kein Rückzug nötig. 8-Damen, Sudoku, 0/1-Knapsack sind Backtracking-Klassiker.

F3.Backtracking ohne Pruning entspricht brute-force-Tiefensuche mit O(b^d) Worst Case.

Antwort: Wahr

Erklärung: RICHTIG. Ohne Constraint-Check + früher Abbruch ist Backtracking = einfacher rekursiver Such-Baum-Durchlauf. Mit b Verzweigungen pro Knoten und Tiefe d: O(b^d). Pruning macht den Unterschied praktisch und theoretisch.

Typ: Wahr/Falsch

F4.Was bedeutet 'Pruning' bei Backtracking?

Antwort: Unmögliche Pfade früh abschneiden, bevor sie komplett exploriert werden

Erklärung: Pruning: bei Constraint-Verletzung sofort den ganzen Teilbaum verwerfen statt blind weiterzusuchen. Beispiel: 8-Damen, wenn 2 Damen in gleicher Diagonale → keine weitere Spalte versuchen, direkt zurück.

F5.Welche Aussagen über Backtracking sind RICHTIG?

Richtige Antworten: Backtracking findet alle Lösungen, wenn man weiter sucht; Branch-and-Bound ist Backtracking + Schranke für Optimierung; 8-Damen kann mit Backtracking effizient gelöst werden; Backtracking hat im Worst Case exponentielle Laufzeit

Erklärung: Richtig: findet alle Lösungen, Branch-and-Bound, 8-Damen, exponentieller Worst Case. Falsch: Backtracking funktioniert AUCH bei NP-schweren Problemen (nur halt exponentiell); DP ist oft schneller bei überlappenden Teilproblemen.

Typ: Multi-Select

F6.Ordne Paradigma der Strategie zu:

Zuordnungen:

  • Greedy → Lokal beste Wahl, kein Rückzug
  • Dynamische Programmierung → Überlappende Teilprobleme cachen
  • Divide-and-Conquer → Unabhängige Teilprobleme rekursiv lösen
  • Backtracking → Systematisches Durchprobieren mit Rückzug

Erklärung: Vier algorithmische Paradigmen. Jedes mit eigener Stärke. Backtracking ist die 'Try-everything-Methode' mit Smart-Pruning.

Typ: Zuordnung

Teil 4·Quiz / Klausurfragen

Klausur-Quiz

Klausurfragen mit Lösungen (6)

F1.Was ist die zentrale Schleife im Backtracking-Pseudocode?

Antwort: for candidate in next_candidates: extend, recurse, undo

Erklärung: Standard-Schleife: für jeden Kandidaten: erweitere Teil-Lösung, rekursiv weiter, undo (zurücksetzen für nächsten Kandidaten). Das undo ist DER Backtracking-Schritt.

F2.Branch-and-Bound nutzt eine Schranke, um Pfade abzuschneiden, deren bestmögliche Lösung schlechter als das bisher gefundene Optimum ist.

Antwort: Wahr

Erklärung: RICHTIG. Branch-and-Bound = Backtracking + zusätzliche Pruning-Regel: Berechne Upper Bound für jeden Pfad. Wenn UB < bisheriges Bestes → Pfad nicht weiter verfolgen. Sehr effektiv bei TSP, Knapsack.

Typ: Wahr/Falsch

F3.Beim 8-Damen-Problem: Wie viele NAIVE Brute-Force-Versuche ohne Pruning?

Antwort: 8⁸ ≈ 16 Mio

Erklärung: Naiv: für jede der 8 Spalten 8 mögliche Zeilen → 8⁸ = 16.777.216 Versuche. Mit Backtracking + Pruning: nur ca. 15.000 tatsächlich besuchte Pfade. Pruning macht's praktisch.

F4.Welcher Algorithmus ist KEIN Backtracking?

Antwort: Quicksort (Standard-Implementation)

Erklärung: Quicksort ist DIVIDE-AND-CONQUER, kein Backtracking. Es teilt um ein Pivot, sortiert rekursiv beide Hälften, kein Rückzug. 8-Damen, Sudoku, TSP-B&B sind Backtracking/Branch-and-Bound.

F5.Backtracking ist {{1}}-Suche mit Rückzug bei Sackgassen. Die {{2}}-Strategie schneidet unmögliche Pfade früh ab. Bei Optimierungs-Problemen erweitert {{3}} um eine Schranke. Klassische Beispiele: {{4}}-Damen-Problem, Sudoku, Knapsack. Worst-Case-Laufzeit: {{5}} (b = Verzweigung, d = Tiefe).

Lösungen pro Lücke:

  • {{1}}: Tiefen / DFS / tiefen
  • {{2}}: Pruning
  • {{3}}: Branch-and-Bound / Branch and Bound
  • {{4}}: 8 / acht
  • {{5}}: O(b^d) / O(b^d) / O(b^d)

Erklärung: Backtracking-Vokabular. Tiefensuche, Pruning, Branch-and-Bound, 8-Damen, exponentielle Worst-Case-Laufzeit.

Typ: Lückentext

F6.Sortiere: Backtracking-Schritt.

Richtige Reihenfolge:

  1. Ist Teil-Lösung komplett? → Lösung speichern, fertig
  2. Wähle nächsten Kandidaten (z.B. nächste Zelle, nächste Damen-Position)
  3. Ist Kandidat vielversprechend (Constraints OK)?
  4. Wenn ja: erweitere Teil-Lösung um Kandidaten
  5. Rekursiver Aufruf für nächsten Schritt
  6. Zurück: undo des Kandidaten (BACKTRACK)

Erklärung: Standard-Backtracking-Schleife. Check → Kandidat → Constraint-Test → Erweitern → Rekursion → Undo. Letzteres ist der namensgebende Schritt.

Typ: Reihenfolge

Zur KategorieAlgorithmen.Mehr Themen entdeckenZum Themen-Hub.

UniProMax ist eine themenbasierte Lernplattform für Studierende an deutschen Unis.

Wir glauben, dass Verstehen besser ist als Auswendiglernen. Wir bauen Lerneinheiten die zeigen statt erzählen. Code, Visualisierung, Quiz. Auf Deutsch.

Marke

UniProMaxUniProMax

Themenbasiert, visuell, interaktiv.

Inhalte

  • Alle Themen (Hub)
  • Programmiergrundlagen
  • Algorithmen
  • Mathematik
  • Statistik
  • Datenbanken
  • Rechnungswesen
  • VWL

Studiengang-Filter

  • Informatik
  • Wirtschaftsinformatik
  • BWL
  • Data Science
  • VWL
  • Wirtschaftsingenieurwesen
  • Mathe
  • Psychologie
  • weitere Studiengänge folgen

Plattform

  • Mein Fortschritt
  • Impressum
  • Datenschutz
© 2026 UniProMaxAlle Systeme onlinev0.2 / Sommersemester 2026
UniProMaxUniProMaxUniProMaxUniProMax