Procházení nejprve do šířky (nebo vyhledávání) protože graf je podobný prvnímu průchodu stromu do šířky (viz metoda 2 v tento příspěvek ).
Jediný háček je v tom, že na rozdíl od stromů mohou grafy obsahovat cykly, takže se můžeme dostat znovu do stejného uzlu. Abychom se vyhnuli zpracování uzlu více než jednou, používáme booleovské navštívené pole. Pro jednoduchost se předpokládá, že všechny vrcholy jsou dosažitelné z počátečního vrcholu. Například v následujícím grafu začneme procházení od vrcholu 2. Když dojdeme k vrcholu 0, hledáme všechny jeho sousední vrcholy. 2 je také sousedním vrcholem 0. Pokud neoznačíme navštívené vrcholy, pak se 2 zpracuje znovu a stane se neukončujícím procesem. První průchod šířky následujícího grafu je 2, 0, 3, 1. 
Java vs C++Doporučeno: Vyřešte to na PRAXE nejprve, než přejdete k řešení.
Následují implementace jednoduchého Breadth First Traversal z daného zdroje.
Implementace využívá reprezentace seznamu sousedství grafů. STL 's seznam kontejneru se používá k ukládání seznamů sousedních uzlů a fronty uzlů potřebných pro průchod BFS.
nepřátelské hledáníKrajta
# Python3 Program to print BFS traversal # from a given source vertex. BFS(int s) # traverses vertices reachable from s. from collections import defaultdict # This class represents a directed graph # using adjacency list representation class Graph: # Constructor def __init__(self): # Default dictionary to store graph self.graph = defaultdict(list) # Function to add an edge to graph def addEdge(self, u, v): self.graph[u].append(v) # Function to print a BFS of graph def BFS(self, s): # Mark all the vertices as not visited visited = [False] * (max(self.graph) + 1) # Create a queue for BFS queue = [] # Mark the source node as # visited and enqueue it queue.append(s) visited[s] = True while queue: # Dequeue a vertex from # queue and print it s = queue.pop(0) print(s, end=' ') # Get all adjacent vertices of the # dequeued vertex s. # If an adjacent has not been visited, # then mark it visited and enqueue it for i in self.graph[s]: if not visited[i]: queue.append(i) visited[i] = True # Driver code if __name__ == '__main__': # Create a graph given in # the above diagram g = Graph() g.addEdge(0, 1) g.addEdge(0, 2) g.addEdge(1, 2) g.addEdge(2, 0) g.addEdge(2, 3) g.addEdge(3, 3) print('Following is Breadth First Traversal' ' (starting from vertex 2)') g.BFS(2) # This code is contributed by Neelam Yadav # This code is modified by Susobhan Akhuli> Výstup
Following is Breadth First Traversal (starting from vertex 2) 2 0 3 1>
Časová náročnost: O(V+E), kde V je počet vrcholů v grafu a E je počet hran
Pomocný prostor: O(V)
Přečtěte si prosím celý článek na První vyhledávání šířky nebo BFS pro graf Více podrobností!