Unterschied zwischen BFS und DFS Unterschied zwischen

Anonim

BFS vs DFS

Die erste Breitensuche (auch bekannt als BFS) ist eine Suchmethode, die alle Knoten von a erweitert bestimmtes Diagramm. Es erfüllt diese Aufgabe, indem es jede einzelne Lösung durchsucht, um diese Knoten (oder eine Kombination von Sequenzen darin) zu untersuchen und zu erweitern. Daher verwendet ein BFS keinen heuristischen Algorithmus (oder einen Algorithmus, der in mehreren Szenarien nach einer Lösung sucht). Nachdem alle Knoten erhalten wurden, werden sie zu einer Warteschlange hinzugefügt, die als Erste-in-zuerst-aus-Warteschlange bekannt ist. Die Knoten, die nicht untersucht wurden, werden in einem Container mit der Bezeichnung "open" gespeichert. Sobald sie erkundet sind, werden sie in einen mit "geschlossen" gekennzeichneten Container transportiert.

Depth First Search (auch bekannt als DFS) ist eine Suchmethode, die tiefer in einen Kindknoten einer Suche eindringt, bis ein Ziel erreicht ist (oder bis ein Knoten ohne weitere Permutationen oder ' Kinder'). Nachdem ein Ziel gefunden wurde, kehrt die Suche zu einem vorherigen Knoten zurück, der mit einer Lösung gegangen ist, und wiederholt den Prozess, bis alle Knoten erfolgreich durchsucht wurden. Daher werden Knoten weiterhin zur weiteren Exploration beiseite gelegt - dies wird als nicht-rekursive Implementierung bezeichnet.

Die Merkmale des BFS sind räumliche und zeitliche Komplexität, Vollständigkeit, Vollständigkeitsbeweis und Optimalität. Die Raumkomplexität bezieht sich auf den Anteil der Knoten auf der tiefsten Ebene einer Suche. Zeitkomplexität bezieht sich auf die tatsächliche Menge an "Zeit", die verwendet wird, um jeden Pfad zu berücksichtigen, den ein Knoten bei einer Suche nimmt. Vollständigkeit ist im Wesentlichen eine Suche, die eine Lösung in einem Diagramm findet, unabhängig davon, um was für ein Diagramm es sich handelt. Der Beweis für die Vollständigkeit ist die flachste Ebene, in der ein Ziel in einem Knoten in einer bestimmten Tiefe gefunden wird. Schließlich bezieht sich Optimalität auf ein BFS, das nicht gewichtet ist - das ist ein Diagramm, das für Kosten pro Einheit verwendet wird.

Ein DFS ist die natürlichste Ausgabe, die einen aufspannenden Baum verwendet - einen Baum, der aus allen Scheitelpunkten und einigen Kanten in einem ungerichteten Graphen besteht. In dieser Formation ist der Graph in drei Klassen unterteilt: Vorwärtskanten, die von einem Knoten zu einem Kindknoten zeigen; Rückkanten, die von einem Knoten zu einem früheren Knoten zeigen; und Kreuzkanten, die keines von beiden tun.

Zusammenfassung:

1. Ein BFS durchsucht jede einzelne Lösung in einem Diagramm, um seine Knoten zu erweitern. Ein DFS gräbt sich tief in einen Kindknoten ein, bis ein Ziel erreicht ist.

2. Die Merkmale eines BFS sind räumliche und zeitliche Komplexität, Vollständigkeit, Vollständigkeitsbeweis und Optimalität; Die natürlichste Ausgabe für ein DFS ist ein spannender Baum mit drei Klassen: Vorwärtskanten, Hinterkanten und Kreuzkanten.