Sari la conținut
Academia PythonAcademiaPython

3.5 Backtracking generalizat

Concept nou și exemplu

Backtracking generalizat se aplică când spațiul soluțiilor e mai liber: combinații, partiții, culori de graf, sudoku. Nu mai ai nevoie de o "linie" fixă — decizi la fiecare pas ce alegi, cu posibilitatea de a lăsa o poziție necompletată.

Exemplu — toate submulțimile unei mulțimi:

python.py
def submultimi(elements):
rez = [[]]
for x in elements:
rez += [s + [x] for s in rez]
return rez

Dar varianta cu backtracking explicit e utilă când vrei să oprești explorarea devreme (ex. suma submulțimii să nu depășească o limită).

Folosește backtracking generalizat când vrei să generezi soluții și să le validezi pe măsură ce le construiești, nu după.