StartseiteSitemapDownloadsHilfeImpressumLastenheft Chat


Startseite

Einführung

Suchen

Das Suchen ist die Tätigkeit, in einem vorgegebenen Datenbestand (Suchraum) alle Objekte zu ermitteln, die eine bestimmte Bedingung, das Suchkriterium, erfüllen. [INFODUDEN S. 706]

Suchraum

Ein Suchraum ist Der Suchraum besteht aus Knoten (Datenobjekte), die untereinander in Beziehung stehen. Die Suche arbeit sich über vernetzte Knoten – wenn es sein muss – durch das gesamte Knotennetz wie beispielsweise über Nachbarschaftsbeziehungen zwischen den Knoten oder über Vater−Sohn−Beziehungen. Knoten des Suchraums stellen die Argumente/Objekte für das Suchkriterium dar.

Suchkriterium

Mit dem Suchkriterium wird geprüft, ob ein besuchtes Objekt das Zielobjekt ist. Das Suchkriterium ist im Allgemeinen eine Indikatorfunktion, mit der die Zielobjekte identifiziert werden:
  1. if (Suchkriterium(Objekt))
    then print('Zielobjekt gefunden!');

Agenda

Die Agenda ist eine Liste (listenartige Datenstruktur), die ein wichtiger Bestandteil eines jeden Suchalgorithmus darstellt. In diese Liste werden all jene Objekte (genauer: Referenzen bzw. Pointer auf Objekte) aufgenommen, die während der Suche noch abgearbeitet werden müssen, d. h. dass in die Agenda vom aktuellen Knoten die noch unbesuchten Nachbarknoten aufgenommen werden, die dann im weiteren Verlauf der Suche eventuell wiederum selbst weitere noch unbesuchte Nachbarknoten zur Verfügung stellen. Der Suchalgorithmus Suchalgorithmen unterscheiden sich grundlegend in Ihrer Strategie meist je nach Strukturierung der Agenda. Ist beispielsweise die Agenda eine Warteschlange, handelt es sich um eine Breitensuche.



Suchstrategien

Man unterscheidet zwischen zwei Arten von Suchstrategien:



Beispiele

Unterschiedliche Suchverfahren in einer Grid−Map

Eine Grid−Map ist eine rasterisierte 2D-Landschaft, die nicht selten als Karte für Computerspiele dient. Jedes einzelne Feld enthält zur Pfadsuche relevante Informationen wie beispielsweise, ob das Feld begehbar ist, ob sich ein Gegener auf dem Feld befindet oder wieviele Spielfiguren auf dem Feld bereits verendeten, usw.
Ob nun ein Feld Bestandteil des Ergebnispfades sein kann, entscheidet das Suchkriterium, mit dem gesucht wird. Wenn sich zum Beispiel der Held auf einem Grid−Map von Feld A nach Feld B bewegen muss, dann gibt es auf dem Wege meist ein Hindernis, welches Dank des Suchkriteriums umgangen werden kann.
Ein Suchalgorithmus bezüglich einer Grid-Map sucht einen möglichen Weg von A nach B. Falls die Suche keinen Pfad finden sollte, so existiert auch kein Ergebnispfad (Vollständigkeit).
Mit dem folgenden Applet {Nur Mut beim Applet, einfach Klicki-Klacki alles ausprobieren! Leider benötigen Sie hierfür einen leistungsstarken Rechner.} wird das Suchverhalten verschiedener Suchalgorithmen innerhalb einer Grid-Map simuliert. Das Suchkriterium des folgenden Applet ist recht einfach gelagert, es prüft lediglich, ob ein Feld begehbar ist oder nicht.
Mehr zu diesem Applet finden Sie unter Pfadsuche−Applet.

A*−Suche anhand eines Schiebepuzzles

Das Schiebepuzzle, welches wohl jedem bekannt sein dürfte, verfügt über einen unendlichen (Zyklen!) Suchraum, weshalb ein blindes Vorgehen (brute force) wie bei der Breitensuche sehr viel Speicherplatz verbraten würde. Deshalb wird für das 8−Puzzles−Schiebepuzzle eine informierte Suche eingesetzt, meist das A*−Suchverfahren. Für dieses Suchbeispiel sind zwei heuristische Funktionen bekannt:
  1. Manhattenabstand {Der Manhattenabstand ist nicht der diagonale bzw. euklid'sche Abstand, sondern die Summe von Horizontal- und Vertikalabstand. Der Manhattenabstand wird manchmal auch "city block distance" genannt - durch einen Häuserblock fährt es sich nicht so leicht hindurch. :-)} aller Puzzle-Teilchen
    mit h(n) = |x − x(n)| + |y − y(n)|
  2. Summe der falsch positionierten Puzzle-Teilchen
    (etwas effizienter zu berechnen)
Es bleibt dem Entwickler überlassen, für welche heuristische Funktion er sich entscheidet. An dieser Stelle möchte ich Sie kurz darauf hinweisen, dass die heuristische Funktion dazu da ist, um einen kürzestmöglichen Lösungsweg zu finden. Die heuristische Funktion h muss lediglich eine Bedingung erfüllen: Optimisums! :−) Das heißt, die heuristische Funktion h gibt immer eine kürzere Weglänge zurück, als es tatsächlich der Fall sein wird. Wird die erforderliche Eigenschaft der Heuristik verletzt, so erhält man dennoch eine Lösung. Ob diese Lösung dann ein kürzester Lösungsweg ist, hängt vom Zustand des Suchraumes ab: Näheres zur A*−Suche finden Sie in den Unterlagen zu meinem Hauptseminar.
Und nun viel Spaß mit dem Schiebepuzzle. :−)
Mehr zu diesem Applet finden Sie unter 8−Puzzles−Applet.



Info

stefan−baur.de / Suchen

[INFODUDEN]  Duden Informatik,  Bibliographisches Institut & F. A. Brockhaus AG,  2. Auflage,  1993,  ISBN 3−411−05232−5.  Ein Sachlexikon für Studium und Praxis







Startseite

Copyright © 2004-2009 Stefan K. Baur − Druck20042005200620072008200920102011