Time complexity dfs或bfs更适合测试有向图上的二部图吗?
如果我想检查两个测试着色性/如果一个有向图是二部图,那么使用广度优先搜索或深度优先搜索是否重要?在时间复杂度方面,一个更有效吗 实际上,图形是有向的还是无向的根本不重要;无论边缘是哪个方向,其两端的两个节点必须具有不同的颜色。所以对于无向图,答案是完全相同的 我还假设图是连接的,因此每个节点都可以从Time complexity dfs或bfs更适合测试有向图上的二部图吗?,time-complexity,depth-first-search,breadth-first-search,Time Complexity,Depth First Search,Breadth First Search,如果我想检查两个测试着色性/如果一个有向图是二部图,那么使用广度优先搜索或深度优先搜索是否重要?在时间复杂度方面,一个更有效吗 实际上,图形是有向的还是无向的根本不重要;无论边缘是哪个方向,其两端的两个节点必须具有不同的颜色。所以对于无向图,答案是完全相同的 我还假设图是连接的,因此每个节点都可以从节点0访问;这并没有什么区别,因为无论哪种方式,您都只需在每个连接的组件上独立运行算法。但它确实简化了分析 DFS或BFS如下所示。唯一的区别是to_visit.get_one()和to_visit.
节点0
访问;这并没有什么区别,因为无论哪种方式,您都只需在每个连接的组件上独立运行算法。但它确实简化了分析
DFS或BFS如下所示。唯一的区别是to_visit.get_one()
和to_visit.put_one()
的行为;DFS使用堆栈(后进先出),而BFS使用队列(先进先出)
def是两部分(节点0):
to_visit=[node_0]
颜色={node_0:'RED'}
访问期间:
node=to_visit.get_one()
color1=颜色[节点]
颜色2='蓝色',如果颜色1='红色',否则为'红色'
对于node.neights中的邻居:
如果没有颜色:
颜色[邻居]=颜色2
去拜访。放一个(邻居)
elif颜色[邻居]==颜色1:
返回错误
返回真值
考虑到算法的时间复杂性,在任何一种情况下:
以访问
,因为只有当它不在颜色
中时才会插入,但插入时我们会将其添加到颜色
节点上迭代一次,因为1