Backtracking ndërton zgjidhje kandidate në mënyrë inkrementale dhe braktis (kthehet mbrapa nga) një kandidat i pjesshëm sapo ai nuk mund të çojë në një zgjidhje të vlefshme. Ai shploron në mënyrë sistematike hapësirën e zgjidhjeve përmes DFS, duke prerë degë të vdekura.
Ideja
Zgjidh -> shploron -> zhbën zgjedhjen. Provo një opsion, rekurzivizohu; nëse dështon, zhbën atë dhe provo tjetrën.
Shembull: të gjitha permutacionet
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
