Grįžtamoji paieška sukuria kandidatines sprendimus nuosekliai ir atsisakyti (grįžti atgal iš) dalinę kandidatę, kai tik matyti, kad ji negali vesti prie tinkamo sprendimo. Ji sistematiškai tyrinėja sprendimo erdvę per DFS, apkertant negalinius šakų.
Idėja
Pasirinkti -> tyrinėti -> atšaukti pasirinkimą. Spróbą variantą, rekursyviai; jei nepavyks, anuliuoti jį ir bandyti kitą.
Pavyzdys: visos permutacijos
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
