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