Backtracking: Versuch und Rücknahme

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

Backtracking erkundet einen Entscheidungsbaum: treffe eine Wahl, gehe rekursiv weiter, nimm die Wahl zurück (undo), probiere die nächste Alternative.

Es ist Trial and Error mit systematischem Rückzug. Ohne Undo bleiben falsche Teilzustände stehen.

Diagram

Entscheidungen zurücknehmen: Permutations [1].

Wo gebraucht

Constraint Solver, Sudoku/Planung, Feature-Toggle-Kombinationen, Regex-Engines (mit Cuts), Spielesuche. Versuch und Undo ist das Kontrollmuster hinter vielen NP-schwierigen Exact-Solvern.

Vertiefung

Backtracking durchsucht einen Baum von Teilentscheidungen. Jeder Knoten beschreibt einen teilweise konstruierten Kandidaten, jede Kante ergänzt eine Wahl. Nach einem erfolglosen Zweig wird der vorherige Zustand wiederhergestellt, damit der nächste Zweig unter denselben Ausgangsbedingungen beginnt.

Die zentrale Invariante lautet: Beim Eintritt in eine Rekursionsebene enthält der Zustand genau die Entscheidungen des aktuellen Pfades. Zulässigkeitstests können Zweige früh verwerfen. Ihre Qualität entscheidet oft stärker über die Laufzeit als die eigentliche Rekursion, obwohl die Zahl möglicher Pfade im ungünstigen Fall exponentiell bleibt.

Schwierigkeitsstufen

  1. Einen vollständigen Entscheidungsbaum für wenige Wahlmöglichkeiten zeichnen.
  2. Einen Zulässigkeitstest formulieren, der keine gültige Lösung verwirft.
  3. Suchreihenfolge und Schranken so wählen, dass grosse Teilbäume früh entfallen.

Fallstricke

Häufig werden Änderungen nicht vollständig rückgängig gemacht oder globale Daten zwischen Geschwisterzweigen geteilt. Ein zu aggressiver Schnitt ist ebenfalls falsch: Er verbessert scheinbar die Laufzeit, kann aber Lösungen unbemerkt entfernen.


Sources

University approvals: 0
Tasks
Question 1

Was ist der Kernschritt nach einem fehlgeschlagenen Ast?

Question 2

Ein Suchzweig ergänzt eine Zahl zu einer gemeinsamen Liste. Was muss vor der nächsten Alternative gelten?

Question 3

Implementiere existsSubset rekursiv mit den Entscheidungen "Element aufnehmen" und "Element auslassen".

Hint

Eine private statische Hilfsmethode kann Index und Restwert erhalten. Mehrere boolesche Aufrufe lassen sich mit || verbinden.

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: Beginner
  • Completed: 0 users
Creator
Best
Best
BestBuddy