求图的直径算法的正确性

时间:2016-02-07 06:46:58

标签: algorithm data-structures graph

我听说过使用以下算法找到未加权图的直径的算法:

Algorithm (start_vertex):
    find out the set of vertices S having maximum value of 
        shortest distance from start_vertex.
    ans = 0;
    for each vertex v in S
        temp = 0;
        for each vertex u in graph G:
            temp = max(temp, shortest distance between u and v).
        ans = temp;
    return ans;

该算法在线性时间内工作,用于查找图的直径。任何人都可以证明其正确性或证明它是错误的

2 个答案:

答案 0 :(得分:3)

一个反例:

image

显然,图形直径为4(从A到C的距离),
但是对于起始顶点B,您将得到S = {D},
并且所有顶点都在距离D的范围3内。

此图包含7个顶点 您可以添加额外的顶点(在三角形内)而不会破坏计数器示例以获得大小为8,9的图形...

答案 1 :(得分:2)

这是一个反例:

Graph

显然,图表的直径为16(从c到d)。 如果从a开始,则集合S仅包含b。与b的最小距离最大的顶点是e。因此,算法将返回图表直径11。