【发布时间】:2014-07-18 02:05:15
【问题描述】:
我需要一双新的眼睛来解决这个问题,由于某种原因它没有生成正确的序列和距离矩阵,下面是我的实现。
这是在 C# 中,DistanceMatrix 是双 [,] 而 SequenceMatrix 是字符串 [,]
这些启动如下:http://puu.sh/951Tz/5ef27e3996.png
for (int k = 0; k < villageCount; k++)
{
for (int i = 0; i < villageCount; i++)
{
if (k == i)
continue;
for (int j = 0; j < villageCount; j++)
{
if (j == i)
continue;
if (j == k)
continue;
if (fw.DistanceMatrix[i, j] >= (fw.DistanceMatrix[i, k] + fw.DistanceMatrix[k, j]))
{
fw.DistanceMatrix[i, j] = (fw.DistanceMatrix[i, k] + fw.DistanceMatrix[k, j]);
fw.SequenceMatrix[i, j] = fw.SequenceMatrix[k, j];
}
}
}
}
由于某种原因,我得到以下输出:
[0, 0] "A" string
[0, 1] "B" string
[0, 2] "A" string
[0, 3] "B" string
[0, 4] "D" string
[1, 0] "B" string
[1, 1] "D" string
[1, 2] "D" string
[1, 3] "B" string
[1, 4] "D" string
[2, 0] "B" string
[2, 1] "B" string
[2, 2] "B" string
[2, 3] "B" string
[2, 4] "D" string
[3, 0] "B" string
[3, 1] "B" string
[3, 2] "C" string
[3, 3] "C" string
[3, 4] "D" string
[4, 0] "B" string
[4, 1] "E" string
[4, 2] "D" string
[4, 3] "B" string
[4, 4] "E" string
任何指针将不胜感激,如果您需要更多信息,我将在此页面上 F5 :)
初始化后的距离矩阵
[0, 0] 0.0 double
[0, 1] 50.0 double
[0, 2] 2.0 double
[0, 3] 10.0 double
[0, 4] 1.7976931348623157E+308 double
[1, 0] 50.0 double
[1, 1] 0.0 double
[1, 2] 3.0 double
[1, 3] 1.7976931348623157E+308 double
[1, 4] 1.0 double
[2, 0] 2.0 double
[2, 1] 3.0 double
[2, 2] 0.0 double
[2, 3] 5.0 double
[2, 4] 5.0 double
[3, 0] 10.0 double
[3, 1] 1.7976931348623157E+308 double
[3, 2] 5.0 double
[3, 3] 0.0 double
[3, 4] 1.7976931348623157E+308 double
[4, 0] 1.7976931348623157E+308 double
[4, 1] 1.0 double
[4, 2] 5.0 double
[4, 3] 1.7976931348623157E+308 double
[4, 4] 0.0 double
【问题讨论】:
-
你期待什么输出?
-
这是来自我的一个同学,我给了他我的代码的屏幕截图,没有任何差异会影响算法puu.sh/94W63/3733d3275f.png 如果你有兴趣,这也是地图puu.sh/954sl/89bd904fda.png 如果你有兴趣这是矩阵的初始化puu.sh/954Bu/fc0be21893.png
-
您在屏幕截图中说您将
DistanceMatrix中的值初始化为无穷大,但是您是否根据图中的连接在其中设置了适当的元素?您发布的代码部分似乎很好 -
是的puu.sh/9554w/5bbe3027fa.png,目前我正在手动计算所有迭代以比较结果:/如果你能节省我的时间:)
-
未来参考的提示。首先让您的代码工作然后担心性能通常会有所回报。这样一来,您始终有一个可以返回的工作基线。
标签: c# algorithm floyd-warshall