Eine Einführung in das ECLiPSe System


... [ Seminarthemen SS01 ] ... [ Inhaltsverzeichnis ] ... [ Fallbeispiel ] ...

Suchstrategien


Einleitung

Der nachfolgende Überblick über Suchstrategien ist auf der Grundlage des Tutorial on Search in ECLiPSe enstanden, welches Bestandteil der ECLiPSe Dokumentation ist.

Wir haben es also in der Constraint Logic Programmierung mit folgendem Muster zu tun:


 solve(Data) :- 
	model(Data, Variables),
	search(Variables),
	print_solution(Variables).

In dem Modell werden die Werte und zugehörigen Constraints definiert. Die Suche muß erfolgen, da im Normalfall nicht davon ausgegangen werden kann, daß die Constraints alleine nur zu einer einzigen Lösung führen.

Es gibt nun eine ganze Anzahl von Suchstrategien, die sich im wesentlichen in zwei Kategorien einteilen lassen:


Constructive versus Move-Based Suchstrategien

Constructive Suchmethoden arbeiten mit inkrementellen Assignments, das heißt, daß den Problemvariablen schrittweise Werte zugewiesen werden. Daraus ergibt sich, daß diese Methoden den Suchraum anhand einer Baumstruktur organisieren.

Move-Based Suchmethoden arbeiten mit Sprüngen zwischen Total Assignments. Unter einem Total Assignment versteht man die vollständige Belegung aller Problemvariablen mit Werten aus deren Wertebereich.
Durch methodische Modifikation einzelner Problemvariablen, ausgehend von einem vorherigen Total Assignment, wird der Suchraum erforscht.
Dieses Verfahren ist seiner Natur nach sehr speicherintensiv, da sich das System die bereits getesteten Kombinationen merken muß. An dieser Stelle sei gesagt, daß in dieser Ausarbeitung nicht näher auf diese Art von Suchstrategien eingegangen wird.

Es gibt noch zwei Kriteria, anhand derer sich die verschiedenen Suchmethoden charakterisieren lassen. Zum einen ist es die Unterscheidung, ob es sich um eine vollständige oder um eine unvollständige Suche handelt und zum anderen, ob es Zufallselemente in dem Suchalgorithmus gibt. Eine vollständige Suche ist immer dann notwendig, wenn eine Optimallösung gesucht wird, denn eine optimale Lösung kann nur gefunden werden, wenn alle möglichen Lösungen miteinander in Beziehung gesetzt werden.
Eine unvollständige Suche hingegegen kann immer dann eingesetzt werden, wenn nur nach einer oder einer relativ guten Lösung gesucht wird.


Heuristik

Die traditionelle Methode in der CLP Welt ist die Anwendung von Heuristik und Pruning im Rahmen der systematischen Baumsuche (also Constructive Suchmethoden). Pruning bedeutet das Beschneiden des Suchraumes durch Constraints. Teile des Suchbaumes werden exkludiert, indem bewiesen wird, daß sie keine Lösungen enthalten.
Unter Heuristik wird in diesem Bereich die methodische Anordnung des Suchbaumes verstanden, so daß vielversprechende Subräume zuerst traversiert werden. Ein Beispiel verdeutlicht dieses:

Wir betrachten die zwei Domain Variablen:

 X1 :: 0..1
 X2 :: 0..3
Die graphische Veranschaulichung des Suchraumes anhand eines Baumes:



Eine Standardtraversierung (Tiefensuche, links nach rechts, mit Zurückgehen) ergibt folgende Besuchsreihenfolge der Blätter: (0,0),(0,1),(0,2),(0,3),(1,0),(1,1),(1,2),(1,3)
Es existieren nun zwei grundsätzliche Methoden, um den Baum so zu strukturieren, daß die Besuchsfolge der Blätter den festgelegten Präferenzen genügt. Die erste Methode beschäftigt sich mit der Variablenanordnung. Betrachtet man die Struktur des oben gezeigten Baumes, wird schnell deutlich, daß die Anzahl der Knoten direkt von der Wahl der Reihenfolge der zu betrachtenden Variablen abhängt. Wenn wir zuerst die Werte von X2 betrachten würden, sähe der Baum folgendermaßen aus:



Man beachte hierbei die Korrelation zwischen Wertebereich der Domain Variablen und Anzahl der Knoten im Baum. Hieraus ist die Forderung abzuleiten, daß die Variablen mit der geringsten Wertebereichausprägung ganz oben im Baum angeordnet werden, um die Anzahl der Knoten im Baum zu minimieren.

Die zweite Methode beschäftigt sich mit der Werteanordnung. Dieses geschieht anhand einer spezifischen Anordnung der Werte der Variablen im Rahmen des jeweiligen Wertebereichs. Das folgende Beispiel macht es deutlich:



Durch die Kombination dieser beiden Methoden sind - unter Beibehaltung der eigentlichen Suchmethode (Tiefensuche, links nach rechts mit Zurückgehen) - bei einer Vielzahl von Problemen große Effektivitätsgewinne zu erzielen.




Complete Tree Suche

Hierbei wird der gesamte Baum traversiert. Durch eine geeignete Heuristik kann die Zeit und die Anzahl der Backtracks bis zur ersten gültigen Lösung dramatisch reduziert werden. Es sei an dieser Stelle auf das Fallbeispiel im nächsten Kapitel hingewiesen.


Bounded Backtrack Suche

Unter der Bounded Backtrack Methode versteht man die Festlegung einer maximalen Anzahl von Backtracks. Es erfolgt ein Buchführen über die erfolgten Backtracks. Bei der Überschreitung des Limits wird die Suche abgebrochen, auch wenn noch keine Lösung gefunden wurde. Es handelt sich also um eine unvollständige Suche, die einer gut gewählten Heuristik bedarf.


Credit Suche

Dieses Verfahren beruht auf Festlegung eines "Kreditrahmens" für einen Baum. Ausgehend vom Wurzelknoten wird der Kreditrahmen des Elternknotens zu gleichen Teilen auf die Kindsknoten aufgeteilt. Dabei ist die einzelne Krediteinheit atomar. Für Subbäume deren Wurzel nur eine Krediteinheit besitzt, gilt damit die Regel, daß nur ein Blatt besucht werden darf. Dabei wird der jeweils linke Pfad gewählt. Subbäme für die kein Kredit mehr vorhanden ist, werden nicht besucht. Bei der Kreditrahmenvergabe ist folgendes zu berücksichtigen:


Timeout Suche

Hier wird die Suche nach Ablauf einer vorab definierten Laufzeit abgebrochen und die bis dahin beste gefundene Lösung präsentiert.

Nach oben

... [ Seminarthemen SS01 ] ... [ Inhaltsverzeichnis ] ... [ Fallbeispiel ] ...