Backtracking

Backtracking-Verfahren (Trial-and-Error-Verfahren):
Bezeichnung für ein Lösungsverfahren, bei dem man versucht,eine Teillösung eines Problems systematisch zu einer Gesamtlösung auszubauen. Falls in einem gewissen Stadium ein weiterer Ausbau einer vorliegenden Lösung nicht mehr möglich ist (Sackgasse), werden einer oder mehrere der letzten Teilschritte rückgängig gemacht. Die dann erhaltene reduzierte Teillösung versucht man auf einem anderen Weg wieder auszubauen. Das Zurücknehmen von Schritten und erneute Vorangehen wird solange wiederholt, bis eine Lösung des vorliegenden Problems gefunden ist oder bis man erkennt, daß das Problem keine Lösung besitzt. Die Möglichkeit in Sackgassen zu laufen und aus ihnen wieder herauszufinden, zeichnet das Backtracking-Verfahren aus.

Backtracking in der Programmiersprache PROLOG

Die Teilziele einer Frage oder innerhalb einer Regel werden von links nach rechts zu erfüllen versucht. Erst wenn ein Teilziel erfüllt ist, wird zum nächsten übergegangen. Werden bei der Erfüllung eines Teilzieles Variablen gebunden, so sind die Variablen mit gleichen Namen auch in den folgenden Teilzielen an dieselben Werte gebunden.

Wenn ein Teilziel (B) nicht erfüllt werden kann, wird zum vorhergehenden Teilziel (A) zurückgegangen. Die Variablen, die zuvor bei der Erfüllung dieses Teilzieles (A) gebunden waren, werden wieder zu freien Variablen. Es wird eine weitere Lösung für dieses Teilziel (A) gesucht. Mit einer gefundenen Lösung wird dann wieder versucht, das nächste Teilziel (B) zu erfüllen.

Das Backtracking kann auf zwei Weisen terminieren:

  1. wenn die Datenbasis vollständig durchsucht wurde und definitiv keine Lösung gefunden wurde.
  2. wenn eine Lösung gefunden worden ist. In diesem Fall kann Prolog noch aufgefordert werden, weitere Lösungen zu suchen. Für die dann erneute Terminierung des Backtracking können wiederum die Fälle 1 oder 2 eintreten.


Literatur:

Zurck