未加权无向图中的平均最短路径

时间:2014-02-01 20:19:06

标签: java average shortest-path

有人能帮帮我吗?我有点迷茫。好吧,我肯定不是Java专家。

我需要编写java代码算法来计算未加权无向图(网络)中的平均最短路径。该图是100个节点(10×10)的网格,并且想要搜索网络中所有对(节点)之间的所有最短路径,然后除以最短路径的数量以获得平均的峰值路径。这可以通过修改Dijstra的算法来实现吗?有人可以告诉我怎么样吗?

dijkstra的alghoritm

public static void dijkstra(int s, int[][] A, int N, int[] d) {
    int mini;  int[] visit = new int[N];
    for (int i=0;i<N;i++) {
        d[i] = N*N;    
        visit[i] = 0;  
    }
    d[s] = 0;           
    for (int k=0;k<N;k++) {
        mini = -1;
        for (int i=0;i<N;i++)
            if ((visit[i]==0) && ((mini == -1) || (d[i] < d[mini])))
                mini = i;
        visit[mini] = 1;
        for (int i=0;i<N;i++)
            if (A[mini][i]==1)
                if (d[mini] + A[mini][i] < d[i]) 
                    d[i] = d[mini] + A[mini][i];
    }
}

1 个答案:

答案 0 :(得分:1)

Dijkstra的算法将为您提供从给定节点到连接图中所有其他节点的最短路径。获得平均值的一种方法是迭代遍历图的每个节点,运行Dijkstra算法以获得从该节点到其他每个节点的最短距离,并获取从该节点开始的路径的平均值。在迭代时累积“从当前节点开始的路径的平均值”。完成迭代后除以节点数。

这是一种蛮力方法,会计算每个距离两次,但它应该给你正确的平均值。