Python程序寻找无向图中所有连通组件的BFS算法
当需要找到一棵树的所有节点的和时,需要创建一个类,并包含设置根节点,向树中添加元素,搜索特定元素,添加元素以查找和等方法。可以创建该类的实例以访问和使用这些方法。
以下是示例:
示例
class Graph_structure:
def __init__(self, V):
self.V = V
self.adj = [[] for i in range(V)]
def DFS_Utility(self, temp, v, visited):
visited[v] = True
temp.append(v)
for i in self.adj[v]:
if visited[i] == False:
temp = self.DFS_Utility(temp, i, visited)
return temp
def add_edge(self, v, w):
self.adj[v].append(w)
self.adj[w].append(v)
def find_connected_components(self):
visited = []
connected_comp = []
for i in range(self.V):
visited.append(False)
for v in range(self.V):
if visited[v] == False:
temp = []
connected_comp.append(self.DFS_Utility(temp, v, visited))
return connected_comp
my_instance = Graph_structure(6)
my_instance.add_edge(1, 0)
my_instance.add_edge(2, 3)
my_instance.add_edge(3, 4)
my_instance.add_edge(5, 0)
print("There are 6 edges. They are : ")
print("1-->0")
print("2-->3")
print("3-->4")
print("5-->0")
connected_comp = my_instance.find_connected_components()
print("The connected components are...")
print(connected_comp)
输出
There are 6 edges. They are :
1-->0
2-->3
3-->4
5-->0
The connected components are...
[[0, 1, 5], [2, 3, 4]]
解释
-
定义一个名为“Graph_structure”的类,它具有“init”方法。
-
定义一个名为“DFS_Utility”的方法,帮助对图元素执行深度优先遍历。
-
定义另一个名为“add_edge”的方法,帮助添加节点到图中。
-
定义另一个名为“find_connected_components”的方法,帮助确定与特定节点相连的节点。
-
创建“Graph_structure”的实例。
-
使用“add_edge”方法向其添加元素。
-
在控制台上显示。
-
调用“find_connected_components”,并在控制台上显示输出。