Graph 如何使用BFS求循环图的直径?

Graph 如何使用BFS求循环图的直径?,graph,vertex,breadth-first-search,cyclic,Graph,Vertex,Breadth First Search,Cyclic,对于顶点数大于5的循环图,在每个节点中运行BFS并从这些长度中选取最大值将停止工作 例如: 以循环方式从1到6为每个顶点编号 现在,使用BFS:-从节点1: 将节点1取出,在队列中添加2和6,将长度增加1 取出节点2,在队列中添加3,将长度增加1 取出节点6,在队列中添加5,将长度增加1 取出节点3,在队列中添加4,将长度增加1 取出节点5,不执行任何操作 取出节点4,不执行任何操作 长度已等于4,大于直径。BFS在您的示例中找到了正确的直径 它有两条独立的路径:和 取最长路径,取第一个和最后

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

例如:

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

现在,使用BFS:-从节点1:

  • 将节点1取出,在队列中添加2和6,将长度增加1
  • 取出节点2,在队列中添加3,将长度增加1
  • 取出节点6,在队列中添加5,将长度增加1
  • 取出节点3,在队列中添加4,将长度增加1
  • 取出节点5,不执行任何操作
  • 取出节点4,不执行任何操作

  • 长度已等于4,大于直径。

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

    它有两条独立的路径:


    取最长路径
    ,取第一个和最后一个节点之间的距离,即路径中的节点数减去1。它给出了循环图的直径
    4-1=3

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

    它有两条独立的路径:

    取最长路径
    ,取第一个和最后一个节点之间的距离,即路径中的节点数减去1。它给出了循环图的直径
    4-1=3