2017-01-16 2 views
0

Ich möchte einen Algorithmus haben, der so schnell wie möglich eine Lösung erhält, die darin besteht, ausgehend von einem Zustand in einem Baum alle möglichen Zustände in einer Baumstruktur zu durchlaufen, Warum wäre es notwendig, zuerst einen Baum zu erstellen und ihn dann zu durchqueren, anstatt einen Baum zu erstellen, und wenn während des Erstellens eines Lösungsknotens die Erstellung gestoppt und sofort auf den Stamm zurückgesetzt wird, den Pfad zu diesem Blatt notieren ?Algorithmen für Suchbaum vs. Baum

Gibt es grundsätzlich einen BF-Algorithmus, um eine Baumbreite zu erzeugen, anstatt zuerst einen Baum zu erstellen und ihn dann in der Breite zuerst zu durchsuchen?

Art wie die animierten Ergebnisse here:

Vielen Dank für das Lesen

+1

Ich hatte den Eindruck, dass der häufigste Ansatz für die Baumsuche darin besteht, den Baum implizit zu erstellen, anstatt den gesamten Baum zu erstellen und ihn dann zu durchsuchen. Haben Sie eine Quelle, die etwas anderes sagt? – templatetypedef

+0

Nun, mein Professor sagte, dass man zuerst einen Baum bauen muss, um einen Baum zu suchen. Jetzt bin ich in Konflikt darüber, was Suche nach einem Baum bedeutet – JuroNemo

+0

Es klingt wie entweder (1) sie auf eine andere Art von Problem beziehen, (2) sie bezogen sich auf die abstrakte Idee, dass es einen Baum und nicht den Code für den Bau oder (3) sie haben sich geirrt. Bei Suchproblemen wie diesen ist es ungewöhnlich, den Baum vorher genau aus dem Grund zu konstruieren, den Sie identifiziert haben. – templatetypedef

Antwort

0

Es gibt keinen Vorteil in einem Suchalgorithmus einen Baum und dann suchen, es zu bauen, genau wegen der Gründe, die Sie erwähnt haben. Darüber hinaus gibt es keinen Suchvorteil, der durch das Erstellen einer Baumbreite zuerst oder der Tiefe zuerst erreicht wird.

In der Regel sind bereits Bäume vorhanden und wir durchqueren sie mit dem Breadth-First-Ansatz oder dem Depth-First-Ansatz. Der Grund, warum wir einen dieser Ansätze wählen, liegt an einer Eigenschaft des Suchelements oder des Baumes.

Wenn Sie Fälle gesehen haben, in denen wir einen Baum erstellen und ihn dann durchsuchen, müssen Sie aus pädagogischen Gründen ein eigenständiges Programm schreiben, das den Baum erstellt und dann durchläuft. Dies ist vergleichbar mit dem Erstellen einer verknüpften Liste von Zahlen und dem Ausführen einer linearen Suche oder dem Erstellen eines binären Suchbaums und dem anschließenden Suchen nach einem Wert. Typischerweise neigt dieser Ansatz dazu, über die Erzeugung und Durchquerung einer in ein Programm gepackten Datenstruktur zu lehren.