【发布时间】:2015-01-07 09:24:47
【问题描述】:
当未连接的顶点使用权重矩阵的值为 -1 时,我尝试在 c 中实现 Dijkstra 算法。
图表-http://imgur.com/TqCCcrk,BBrGSSl#0 权重矩阵 - http://imgur.com/TqCCcrk,BBrGSSl#1
如果我使用“-1”值作为某个 int 值(大于所有边的权重),我的代码可以工作,但我需要支持所有 int 值(0 和正)
我如何更改以下代码以支持 -1 作为无穷大值并且该代码将起作用!
p.s -1 值例如是 3 到 4 之间的连接 权重矩阵,大小为 6,从索引 1 开始,而不是 0
非常感谢...
while(selected[target] ==0)
{
min = INT_MAX;
m = 0;
for(i=1;i< size;i++)
{
d = dist[start] +cost[start][i];
if(d< dist[i]&&selected[i]==0)
{
dist[i] = d;
prev[i] = start;
}
if(min>dist[i] && selected[i]==0)
{
min = dist[i];
m = i;
}
}
start = m;
selected[start] = 1;
}
start = target;
j = 0;
while(start != -1)
{
path[j++] = start;
start = prev[start];
}
return pathList;
}
【问题讨论】:
标签: c algorithm matrix dijkstra