Povratno sledenje gradi kandidatne rešitve postopoma in opusti (se vrne od) delne kandidate, čim ko ne morejo voditi do veljavne rešitve. Sistematično raziskuje prostor rešitev prek DFS, pri čemer obrezuje slepe ulice.
Ideja
Izberi -> raziskuj -> izbri izbiro. Poskusi možnost, rekurziviraj; če ne uspe, razveljaviti in poskusi naslednjo.
Primer: vse permutacije
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
