我有一个循环网络,从连接到最近邻居的每个节点开始。我添加了一定数量的远程连接,更长的连接变得非常不可能。
It can be represented like this
and it is stored in a 2D array like this
我想创建一个例程,随机选择两个节点并找到它们之间的最短路径。实现这一目标的最有效算法是什么?
答案 0 :(得分:0)
这是众所周知的算法,称为Dijkstra算法。在我知道图表是什么之前,我听过这个名字......
为澄清而编辑: - 就Prism和Dijkstra的差异而言: -
Prim的算法为图形构建最小生成树,该树是连接图中所有节点的树,并且在连接所有节点的所有树中具有最小总成本。但是,MST中任意两个节点之间的路径长度可能不是原始图中这两个节点之间的最短路径。
Dijkstra的算法构造从某个源节点开始的最短路径树。最短路径树是连接图中所有节点的树,具有从一些起始节点到图中任何其他节点的任何路径长度最小化的属性。
因此,如果关注两个节点之间的最短路径,那么请选择Dijkstra。我不太了解其他选择,但Kruskal与Prim在同一条线上。