Backtracking gradi kandidatna rješenja inkrementalno i odustaje (vraća se unazad) od djelomičnog kandidata čim ne može dovesti do važećeg rješenja. Sistematski istražuje prostor rješenja pomoću DFS-a, preusmjeravajući mrtve završetke.
Ideja
Odaberi -> istražite -> poništite izbor. Pokušajte opciju, rekurzirajte; ako ne uspije, poništite je i pokušajte sljedeću.
Primjer: sva permutacija
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
