c# - 是否有一种已知的算法可以找到每对之间距离相同的节点之间的最短距离?

标签 c# algorithm optimization data-structures

换句话说,我想知道是否有一种已知的算法可以找到节点之间从一个节点到另一个节点的最少移动次数。例如,我可能有一棵树

A - B - C - D
 \     /  \
  E - F -  G

我想要从 A 开始的最短路径至 G .那将是 A->B->C->GA->E->F->F .

更具体地说,我有一个

var nodes = new List<Node> 

在哪里

class Node
{
    // ... properties

    List<Node> Neighbors;
}

并给出了一些 Node start, end;nodes我想找到从 start 开始的最短路径至 end .

我知道我可以使用 Djikstra 的距离算法 1在每个节点之间,但我认为对于这种情况有更好的方法吗?

最佳答案

BFS 遍历是解决这个问题最快的方法,因为它将在线性时间 O(m + n) 内解决问题。

BFS 是一种层序遍历,这意味着它逐层遍历节点:( 首先遍历距离为 1 条边的所有节点,并在遍历 2 条边的距离等等。)。

关于c# - 是否有一种已知的算法可以找到每对之间距离相同的节点之间的最短距离?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39694145/

相关文章:

c# - 非泛型类型 'ActionResult' 不能与类型参数一起使用

c++ - 如何优化 vector 的二分查找?

algorithm - 在没有弗洛伊德循环检测算法的情况下检测链表中的循环

performance - Page Speed - 消除渲染阻塞

c# - 在使用 FromEventPattern 订阅之前捕获事件

c# - 转换为不排除表单成员的接口(interface)

java - (java) 快速排序,先按数字对数字-字符对进行排序,然后按字符排序

mysql - 如何使用 SQL 有效地确定行之间的变化

c# - 衡量方法的哪一部分花费大量时间的最佳实践?

c# - WPF 数据网格中的错误