ბექტრეკინგი აშენებს კანდიდატ ამოხსნებს თანმიმდევრობით და უარყოფს (ბექტრეკავს) ნაწილობრივი კანდიდატის აზრს, როგორც კი ის არ შეიძლება მიგვიყვანოს მოქმედი ამოხსნებისკენ. ის სისტემატურად აკვლევს ამოხსნის სივრცეს DFS-ის საშუალებით, მკრთალი დასრულებების მოწყვეტით.
იდეა
ირჩე -> გამოიკვლე -> გააუქმე. სცადე ვარიანტი, რეკურსია; თუ ის ვერ შედის, გააუქმე და სცადე შემდეგი.
მაგალითი: ყველა პერმუტაცია
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
