Dreamdancer hat geschrieben:Ich wusste garnicht, dass die iterative Tiefensuche als Bedingung hat, dass die Kosten immer 1 oder alle gleich sind. Für mich ist sie nur das Vorgehen, eben das iterative an der Tiefensuche

Naja, sagen wir mal, iterative Tiefensuche (IDS) hat als
Optimalitätsbedingung, daß die Kosten alle gleich sind. Und warum sollte man einen nicht optimalen Algorithmus verwenden?
(Ok, könnte schon Sinn machen, zum Beispiel, wenn er fast optimal ist. Wenn etwa die Kosten also zwischen 0.9 und 1.1 liegen, könnte man sich entscheiden, iterative Tiefensuche zu verwenden und den möglichen Abstand der gefundenen Lösung zur besten Lösung zu akzeptieren. Siehe unten.)
Dreamdancer hat geschrieben:Trotzdem: Im Falle von variierenden Kosten ist sie nicht besser als normale DFS.
Bezüglich Optimalität: Das hängt davon ab, wie stark die Kosten variieren. Wenn sie stark variieren, kommen ähnlich schlechte Ergebnisse raus, wie bei DFS. Wenn sie nur leicht variieren, sind die Ergebnisse besser. Genauer: Wenn die Kosten in einem Intervall
(a, b) liegen, haben alle Lösungen in Ebene
n Gesamtkosten im Intervall
(n a, n b). Im ungünstigsten Fall gibt nun die iterierte Tiefensuche die schlechtest denkbare Lösung einer Ebene
n zurück. Sie hat die Gesamtkosten
n b. Die beste Lösung muß dann Gesamtkosten von mindestes
n a haben (denn sonst müßte sie sich auf einer Ebene
< n befinden und wäre von der IDS bereits gefunden worden. Also ist gefundene Lösung um den Faktor
(n b - n a) / n a = n (b - a) / a schlechter als die beste Lösung.
Ergebnis: IDS liefert brauchbare Ergebnisse für niedrige Bäume und kleine Intervalle. Falls die Intervalle auf einen Punkt zusammenfallen, sind die Ergebnisse sogar optimal.
Bezüglich Terminierung: IDS terminiert für manche Suchbäume, für die DFS nicht terminiert, und umgekehrt. Beispiele: Für Bäume mit unendliche Verzweigung aber endlicher Tiefe terminiert nur DFS. Für Bäume mit endlicher Verzweigung aber unendlicher Tiefe terminiert nur IDS.
Allgemein kann man sagen, daß sich IDS bezüglich asymptotischer Laufzeitkomplexität, Terminierung und gefundener Lösung genauso verhält wie BFS, aber eine viel geringere asymptotische Speicherkomplexität hat. (Sei
n die Tiefe der von IDS und BFS gefundenen Lösung. Dann muß BFS die gesamte Ebene
n in der Warteschlange halten, während IDS nur einen Pfad zu
n speichern muß). In der Praxis sind Terminierung und Speicherkomplexität sicher entscheidende Kriterien, ob ein Algorithmus überhaupt in die nähere Auswahl kommt. In einem zweiten Schritt kann man sich dann über die Qualität der gefundenen Lösungen Gedanken machen.