缓存多个路径的链接

时间:2012-04-21 21:08:02

标签: c dijkstra

我正在编写一个算法代码,该算法可以找到源和目标之间的多条路径。哪个是存储我在每次迭代中从修改后的Dijkstra获得的路径的最佳方法,以便稍后删除隔行扫描的路径?我从一个名为previous的向量中获取路径,从目的地开始直到我到达源。矩阵似乎并不适合每条路径。

int l[SDIM][SDIM];
int d[SDIM], s[SDIM], p[SDIM];
int i,j,a,z,prev,minD,minJ,count;
for (i=0;i<SDIM;i++)
{
    d[i]=l[a][i];
    s[i]=1;
    p[i]=a;
}
s[a] = 0;
prev=a;
do
{
    minD=MAX;
    for (j=0;j<SDIM;j++)
    {
        if ((s[j]==1) && (d[j]<minD))
        {
            minD=d[j];
            minJ=j;
        }
    }
    s[minJ] = 0;
    prev=minJ;
    if (prev==z) break;
    for (i=0;i<SDIM;i++)
    {
        if ((l[prev][i]!=MAX) && (d[i]>(d[prev]+l[prev][i])))
        {
            d[i]=d[prev]+l[prev][i];
            p[i]=prev;
            s[i]=1;
        }
    }
}while(1);

0 个答案:

没有答案