Το Backtracking κατασκευάζει λύσεις υποψηφίων σταδιακά και εγκαταλείπει (υποχωρεί από) έναν μερικό υποψήφιο όταν δεν μπορεί να οδηγήσει σε έγκυρη λύση. Εξερευνά συστηματικά τον χώρο λύσεων μέσω DFS, κόβοντας άκρα που δεν έχουν έξοδο.
Η ιδέα
Επιλέξτε -> εξερευνήστε -> αναιρέστε την επιλογή. Δοκιμάστε μια επιλογή, επανάληψη· αν αποτύχει, αναιρέστε και δοκιμάστε την επόμενη.
Παράδειγμα: όλες οι μεταθέσεις
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
