如何使用BFS找到循环图的直径?

时间:2015-10-24 11:48:51

标签: graph vertex breadth-first-search cyclic

对于顶点数大于5的循环图,在每个节点中运行BFS并从这些长度中选出一个最大值停止工作。

例如: Cyclic graph

以循环方式将每个顶点从1到6编号。

现在,使用BFS: - from node 1:

  1. 取出节点1,在队列中添加2和6,将长度增加1
  2. 取出节点2,在队列中添加3,将长度增加1
  3. 取出节点6,在队列中添加5,将长度增加1
  4. 取出节点3,在队列中添加4,将长度增加1
  5. 取出节点5,什么都不做
  6. 取出节点4,什么都不做
  7. 长度已经等于4,大于直径。

1 个答案:

答案 0 :(得分:0)

BFS确实在您的示例中找到了正确的直径。

它需要两个不同的路径:<1, 2, 3, 4><1, 6, 5>

你选择<1, 2, 3, 4>的最长路径,然后取第一个节点和最后一个节点之间的距离,即路径中节点数减1.它给出4-1=3这是直径周期图。