The K Desktop Environment

Weiter Zurück Inhaltsverzeichnis

6. Technischer Hintergrund

6.1 TSP

Das Traveling Salesman Problem ist ein viel diskutiertes Problem in der Informatik. Es bekam seinen Namen von einem Handlungsreisenden, der eine Anzahl verschiedener Städte besuchen mußte. Er startete seine Reise in seiner Heimatstadt und wollte am Ende seiner Fahrt zu ihr zurückkehren. Wir sprechen also über einen Rundkurs durch eine Reihe von Städten. Natürlich wollte der Handlungsreisende den kürzest möglichen Kurs finden, um Zeit und Benzin zu sparen. Ein Bohrautomat, der eine Reihe von Löchern in ein Werkstück zu bohren hat, befindet sich in der gleichen Situation. Je kürzer sein Rundkurs durch alle Positionen, desto schneller wird das Werkstück fertig.

Für eine kleine Anzahl an Städten (oder Löchern) sind Menschen gut darin, zumindest einen kurzen (wenn auch nicht den kürzesten) Kurs intuitiv zu finden. Mit zunehmender Anzahl geraten Menschen in Schwierigkeiten, einen guten Kurs zu finden. Bei all der heute verfügbaren Rechenleister der Computer scheint es eine gute Idea zu sein, Computer a kurzen Kurs finden zu lassen. Leider ist kein anderer Algorithmus bekannt, als alle möglichen Kurse durchzurechnen and den kürzesten zu benutzen.

Wieviele Kurse sind möglich? Wir können die verschiedenen Kurse als Permutationen der Städte annehmen. Sagen wir, wir haben 4 Städte, A bis D:

A - B - C - D 
A - B - D - C
A - D - B - C
D - A - B - C
und so weiter

Wenn n die Anzahl der Städte ist, dann ist n! (Fakultät) die Anzahl der möglichen Kurse. Das sind schlechte Neuigkeiten, weil n! sehr schnell mit n wächst. Angenommen, der schnellste Computer, den wir uns leisten können, schafft ein TSP mit 100 Städten in einer Stunde. Das kling vernünftig. Nun lassen Sie uns annehmen, daß in unser nächstes Werkstück 101 Löcher gebohrt werden müssen. Das bedeutet, daß der Computer dann 100 Stunden benötigt, um den kürzesten Weg zu berechnene. Das kling gar nicht mehr vernünftig.

6.2 GDA

Es gibt eine Reihe von Algorithmen die gute Lösungen für Probleme wie das TSP annähern. Die meisten davon sind entweder nicht besonders gut darin oder benötigen ebenfalls eine Menge Rechenleistung. KTsp benutzt den Great Deluge Algorithm (GDA), der von Gunter Dueck 1990 am IBM Forschungszentrum in Heidelberg, Deutschland, entwickelt wurde.

Die Idee, die hinter GDA steckt, ist einfach: Je kürzer ein Rundkurs ist, desto größer seine Qualität. Wir nehmen alle möglichen Rundkurse und ihre Qualitäten und projezieren sie in einen 3D Raum. In X/Y tragen wir alle verschiedenen Kurse auf. Ähnliche Kurse liegen dicht beieinander. Z repräsentiert die Qualität der Kurse. Diese Darstellung resultiert in einer Art Landschaft, in der hohe Berge gute (kurze) Kurse repräsentieren. Wir starten nun GDA an einem zufällig gewählten Punkt in der Landschaft. Der Algorithmus kann frei umherwandern, aber es regnet endlos. Der Algorithmus kann von einem Punkt (Kurs) zu einem benachbarten Punkt (einem verschiedenen aber ähnlichen Kurs) wandern, aber darf nicht in das Wasser geraten.

In seinem Artikel "New Optimization Heuristics" (Journal of Computational Physics 104, 86-92, 1993) schreibt Gunter Dueck: "Imagine, the GDA is to find the maximum point on a certain surface, for instance the highest point in a fictious empty country. Then, we let it rain withour end in this country. The algorithm walks around in this country, but it never makes a step beyond the ever increasing water level. And it rains and rains... Our idea is that in the end the GDA gets wet feet when it has reached one of the very highest points in the country so that it has found a point close the optimum."

In einem 3D Raum würde dies nicht wirklich funktionieren, weil GDA bald auf einem kleinen Berg oder einer Insel gefangen wäre. Glücklicherweise benutzen wir den 3D Raum nur für unsere begrenzte Vorstellungskraft. Der wirkliche Raum, in dem dies geschieht, ist ein hochdimensionaler Raum, der es erlaubt, Fallen leicht zu entkommen.

Wie zahllose Experimente gezeigt haben, ist GDA selbst auf gewöhnlichen Workstations sehr schnell und liefert Lösungen, die nahe am globalen Optimum liegen. Natürlich kann selbst GDA in einer schlechten Lösung gefangen werden. Deshalb lassen wir ihn 50 oder 100 Male durchlaufen und benutzen das beste Ergebnis.

Weiter Zurück Inhaltsverzeichnis