Backtracking membangun solusi kandidat secara bertahap dan meninggalkan (mundur) dari kandidat parsial segera setelah tidak dapat menghasilkan solusi yang valid. Ini secara sistematis menjelajahi ruang solusi melalui DFS, memangkas jalan buntu.
Idenya
Pilih -> jelajahi -> batalkan pilihan. Coba satu opsi, rekursi; jika gagal, batalkan dan coba opsi berikutnya.
Contoh: semua permutasi
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
