Eine ausführliche Analyse der Prinzipien des BFS-Algorithmus mit illustrierten Erklärungen und Python-Code zur Implementierung des BFS-Algorithmus.

PHPz
Freigeben: 2024-01-22 23:24:05
nach vorne
1377 Leute haben es durchsucht

BFS, auch Breitensuche genannt, ist ein rekursiver Algorithmus wie der DFS-Algorithmus. Der Unterschied besteht darin, dass der BFS-Algorithmus eine Warteschlange verwendet, um alle Zielknoten zu durchlaufen und dabei Schleifen zu vermeiden.

Veranschaulichung des Funktionsprinzips des BFS-Algorithmus

Nehmen Sie als Beispiel einen ungerichteten Graphen mit 5 Knoten, wie unten gezeigt:

BFS算法概念原理详细图解 Python代码实现BFS算法

Ab Knoten 0 fügt der BFS-Algorithmus ihn zunächst in die Liste „Besucht“ ein und alle Nachbarknoten werden in eine Warteschlange gestellt.

BFS算法概念原理详细图解 Python代码实现BFS算法

Als nächstes besuchen Sie Knoten 1 am Anfang der Warteschlange und gehen Sie zu Knoten neben Knoten 1. Da Knoten 0 bereits besucht wurde, wird Knoten 2 besucht.

BFS算法概念原理详细图解 Python代码实现BFS算法

Knoten 2 hat einen unbesuchten Nachbarknoten 4, aber da Knoten 4 am Ende der Warteschlange steht, wollen wir zuerst Knoten 3 am Anfang der Warteschlange besuchen.

BFS算法概念原理详细图解 Python代码实现BFS算法

Nur Knoten 4 bleibt in der Warteschlange, der nicht besucht wurde, daher wird Knoten 4 zuletzt besucht.

BFS算法概念原理详细图解 Python代码实现BFS算法

Zu diesem Zeitpunkt ist die Breitendurchquerung dieses ungerichteten Graphen abgeschlossen.

Pseudocode des BFS-Algorithmus

create a queue Q 
mark v as visited and put v into Q 
while Q is non-empty 
remove the head u of Q 
mark and enqueue all (unvisited) neighbours of u
Nach dem Login kopieren

Python-Code zur Implementierung des BFS-Algorithmus

import collections
def bfs(graph, root):
    visited, queue = set(), collections.deque([root])
    visited.add(root)

while queue:
        vertex = queue.popleft()
        print(str(vertex) + " ", end="")

        for neighbour in graph[vertex]:
            if neighbour not in visited:
                visited.add(neighbour)
                queue.append(neighbour)

if __name__ == '__main__':
    graph = {0: [1, 2], 1: [2], 2: [3], 3: [1, 2]}
    print("Following is Breadth First Traversal: ")
    bfs(graph, 0)
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEine ausführliche Analyse der Prinzipien des BFS-Algorithmus mit illustrierten Erklärungen und Python-Code zur Implementierung des BFS-Algorithmus.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:163.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage