当前位置: 首页 > 编程笔记 >

Python程序在无向图中使用BFS查找所有连接的组件

裴姚石
2023-03-14
本文向大家介绍Python程序在无向图中使用BFS查找所有连接的组件,包括了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("连接的组件是...")
print(connected_comp)
输出结果
There are 6 edges. They are :
1-->0
2-->3
3-->4
5-->0
连接的组件是...
[[0, 1, 5], [2, 3, 4]]

解释

    list-paddingleft-2">
  • 使用“ _init_”方法定义了一个名为“ Graph_structure”的类。

  • 定义了一种名为“ DFS_Utility”的方法,该方法有助于对图形的元素执行深度优先遍历。

  • 定义了另一个名为“ add_edge”的方法,该方法有助于将节点添加到图中。

  • 定义了另一种名为“ find_connected_components”的方法,该方法有助于确定连接到特定节点的节点。

  • 创建了“ Graph_structure”的实例。

  • 使用'add_edge'方法向其中添加元素。

  • 它显示在控制台上。

  • 将调用“ find_connected_components”,并在控制台上显示输出。

 类似资料:
  • 本文向大家介绍Python程序在无向图中使用DFS查找所有连接的组件,包括了Python程序在无向图中使用DFS查找所有连接的组件的使用技巧和注意事项,需要的朋友参考一下 当需要在无向图中使用深度优先搜索来查找所有连接的组件时,将定义一个类,该类包含用于初始化值,执行深度优先搜索遍历,查找连接的组件,将节点添加到图等的方法。可以创建该类的实例,并可以访问方法以及对其进行操作。 以下是相同的演示-

  • 本文向大家介绍Python程序,用于在图形中使用BFS查找可从节点到达的所有节点,包括了Python程序,用于在图形中使用BFS查找可从节点到达的所有节点的使用技巧和注意事项,需要的朋友参考一下 当需要查找树的所有节点的总和时,将创建一个类,该类包含设置根节点,向树中添加元素,搜索特定元素以及将树中的元素添加至的方法。找到总和,依此类推。可以创建该类的实例来访问和使用这些方法。 以下是相同的演示-

  • 我有一个无向图,我想从一个起始节点列出所有可能的路径。2个节点之间的每个连接在列出的路径中是唯一的,例如,给出以下图表示: 我无法使用现有的算法来完成它,我知道像DFS。任何帮助都将非常感谢。

  • 问题内容: 在查找循环方面已经存在一些问题,但是我没有找到SQL的解决方案(首选MSSQL)。 这些表将是Node(NodeID INT)和Edge(EdgeID INT,NodeID1 INT,NodeID2 INT) 在有向图中找到周期的性能很好的解决方案是什么? 问题答案: 该解决方案非常简单明了,但时间更长: 首先,将生成通过该图的所有路径的列表,以使任何路径都不会包含同一条边。 从此信息

  • 我需要找到一个算法来找到有向图中的所有根,在O(n m)。 我有一个寻找单个根的算法: 在v中的某些v上运行DFS(v)。如果结果是一个生成树,则v是根。否则,结果就是树木成林。然后: 在最后一棵树的根上运行DFS(u)。如果结果是一棵生成树,那么u是根。否则,图中没有根 现在,如果我想找到所有的根,最好的方法是每次在最后一棵树的不同顶点上运行上述算法O(n)次吗?假设我找到了一个根,如果另一个根