使用 BFS 查詢無向圖中所有連通分量的 Python 程式


當需要找到樹中所有節點的總和時,會建立一個類,其中包含設定根節點、向樹中新增元素、搜尋特定元素以及新增樹的元素以查詢總和等方法。可以建立類的例項來訪問和使用這些方法。

以下是相同內容的演示 -

示例

 即時演示

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”並在控制檯上顯示輸出。

更新於: 2021年4月17日

621 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.