Rahmen eines Backtracking-Verfahrens

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

PROCEDURE Solve(start: BOOLEAN;
                state: State; move: Move;
                VAR solution: State) : BOOLEAN;
   VAR
      moves: SET OF Move;
BEGIN
   IF start THEN
      InitState(state);
   ELSE
      ApplyMove(state, move);
   END;
   IF Solved(state) THEN
      solution := state; RETURN TRUE
   END;
   moves := SetOfPossibleMoves(state);
   FOREACH move IN moves DO
      IF Solve(FALSE, state, move, solution) THEN
         RETURN TRUE
      END;
   END;
   RETURN FALSE
END Solve;

*Auch wenn das Backtracking-Verfahren auf verschiedene Problemfelder angewendet wird, so gleicht sich doch die Struktur der rekursiven Prozedur, die zur Lösungssuche verwendet wird.
 
*Viele Verfahren hängen jedoch davon ab, daß möglichst frühzeitig Irrwege erkannt werden, um mit einem vertretbaren Rechenzeitaufwand zur Lösung zu gelangen.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1999 Andreas Borchert, in HTML konvertiert am 29.06.1999