Bakoverføring bygger kandidatløsninger inkrementelt og forlater (sporer tilbake fra) en delvis kandidat så snart den ikke kan føre til en gyldig løsning. Den utforsker løsningsrommet systematisk via DFS og beskjærer døde sluttresultater.
Ideen
Velg -> utforsk -> velg bort. Prøv et alternativ, rekurser; hvis det mislykkes, angre det og prøv det neste.
Eksempel: alle permutasjoner
():
result = []
():
remaining:
result.append(path[:])
i ((remaining)):
path.append(remaining[i])
backtrack(path, remaining[:i] + remaining[i+:])
path.pop()
backtrack([], nums)
result
permutations([, , ])
