2

我正在为一种算法编写代码,该算法在源和目标之间找到多条路径。在每次迭代中存储从修改后的 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);
4

0 回答 0