【发布时间】:2016-03-26 17:59:03
【问题描述】:
因此,如果我在图中有两个顶点,并且它们通过多个边连接,而它们之间的最短路径相同(即,如果我有节点 A 和节点 B,并且它们直接通过三个边连接(有它们之间的距离是 3 条最短路径 1)所以计数应该返回 3)如何修改 BFS 算法来实现这一点?这是我的代码,它只计算 2 个节点之间的最短路径,而不是这些最短路径的数量。
public void BFSDegree(Graph g, string s, string p)
{
Queue<string> q = new Queue<string>();
dist.Add(s, 0);
q.Enqueue(s);
while (q.Count() != 0)
{
string j = q.Dequeue();
foreach (string h in g.adjacentTo(j))
{
if (!dist.ContainsKey(h))
{
q.Enqueue(h);
dist.Add(h, 1 + dist[j]);
}
if (j == p)
{
Console.WriteLine(" " + dist[j]);
return;
}
}
}
}
【问题讨论】:
-
看来,您当前执行
return的位置,您可以改为增加一个计数器,在while之前设置为零,然后在while之后使用该计数器值返回,如果计数器大于零。 -
哟,看下面我的回答
标签: c# algorithm graph breadth-first-search