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
  • 因此,两种算法的最坏情况迭代次数相同;O(E),其中E是图中的边数