ViderPile (P)
Empiler dans P le problème initial S0, avec le statut Nouveau
Répéter
Soit S le noeud en sommet de pile
Si S.Statut = Nouveau alors
Si S est une solution unique s alors
Si f(s) < z* alors s* := s ; z* := f(s*) FS
Dépiler (P,S)
Sinon Si (S = ∅) ou (ev(S) ≥ z*) alors
Dépiler (P,S)
Sinon {S doit être séparé}
Choisir la décision à appliquer
Construire le fils gauche dans un record R, statut Nouveau
S.Statut := Gauche
Empiler (P,R)
FS
Sinon Si S.Statut = Gauche alors
S.Statut := Droit;
Construire le fils droit dans un record R, statut Nouveau
S.Statut := Droit
Empiler (P,R)
Sinon {Les 2 fils de S ont déjà été traités, et S.Statut = Droit}
Dépiler (P,S)
FS
Jusqu’à PileVide (P).
Partager