给出距离矩阵D,其中d [i] [j]表示从i到j的最短路径,并且所有边缘权重均为正。 还有,
d[i][i] = 0 and
d[i][j] > 0
距离矩阵可以表示有效加权有向图,也可以不表示。 如何检查它是否代表有效的加权有向图?
答案 0 :(得分:0)
以下条件是必要条件,但还不足够:
有效距离矩阵应满足以下条件:
Sudo代码:
bool valid = true;
for(int k=0;k<n;k++)
{
for(int i=0;i<n;k++)
{
for(int j=0;j<n;j++)
{
if(j<=i) //check for only upper half of diagonal
continue;
if(d[i][k]+d[k][j]<d[i][j])
{
valid = false;
break;
}
}
if(!valid)
break;
}
if(!valid)
break;
}
return valid;
答案 1 :(得分:0)
检查
d[i][j]==0 for i=j and
d[i][j]==d[j][i] for all i and j
现在,在给定的最短路径上运行dijsktra的最短路径算法。这将给出一个新的最短路径矩阵,即A。
Now check if d[i][j]=A[i][j] for all i and j.
如果这些条件中的任何一个失败,则图形无效,否则有效