在这里有点长镜头,因为我没有在 QuickGraph 中找到太多文档 HoffmanPavleyRankedShortestPathAlgorithm
,所以我猜没有很多人使用它,但是我在使用排名最短路径返回正确结果时遇到了一些问题算法,想知道是否有人发现了同样的问题。
我正在使用 1900 个顶点和 20000 个边填充双向图,并且我已将图设置为返回 150 条路径。它这样做了,但它并没有带回预期的几条路径,即应该在前 20 条最短路径中排名的路径。我对系统的期望是,如果我要求 150 条路径,它将按顺序返回 150 条最短路径。
现在,当我将其设置为返回 1000 多个路径时,就会出现预期的路径。以前有没有人遇到过这样的问题,并且可能有办法改进图表设置?我不能让系统返回 1000 条路径,因为处理时间太长。
以下是相关代码:图形设置:
BidirectionalGraph<string, TaggedEdge<string, int>> pathGraph = new BidirectionalGraph<string, TaggedEdge<string, int>>();
... add vertices and edges
算法设置:
HoffmanPavleyRankedShortestPathAlgorithm<string, TaggedEdge<string, int>> hoffmanAlgorithm = new HoffmanPavleyRankedShortestPathAlgorithm<string, TaggedEdge<string, int>>(pathGraph, E => 1.0);
try
{
hoffmanAlgorithm.ShortestPathCount = 150;
hoffmanAlgorithm.SetRootVertex(startPoint.ToString());
hoffmanAlgorithm.Compute(startPoint.ToString(), endPoint.ToString());
foreach (IEnumerable<TaggedEdge<string, int>> path in hoffmanAlgorithm.ComputedShortestPaths)
{
//process results...
}
}
正如我所说,我并不太有信心在这里得到回应,但我想我还是会尝试的。CodePlex 上的 QuickGraph 讨论论坛似乎不再有人操作,否则我会在那里尝试。
非常感谢