2016 - 2024

感恩一路有你

最大公约数怎么求算法java prim算法讲解?

浏览量:2212 时间:2021-04-05 17:33:02 作者:admin

prim算法讲解?

Prim算法是一种常见的最小生成树算法。prim算法的核心思想是从已知的扩散中求最小值。它的实现类似于Dijkstra算法,但与Dijkstra算法略有不同。Dijkstra是寻找单个源的最短路径。需要更新每个点的距离。Prim甚至不需要更新距离。直接找到已知点的最近边并将其添加到最小值

prim算法和kruscal算法的区别?

Prim算法:

Prim算法将所有顶点分为A和B两部分。A是目标集。该算法可以看作是一个不断地将B中的顶点转移到一个集合的过程。在这个过程中,从B中的每个顶点到树的最短距离是不断更新和排序的。根据贪心思想,将无环最短路径的顶点从B移到a,Prim算法是在加权连通图中寻找最小生成树,即权值最小且连通到所有节点的树。重点放在树上,树没有环。

Prim算法是这样做的:

首先将一个节点作为最小生成树的初始节点,然后迭代求出最小生成树中每个节点的最小权边,并将其加入到最小生成树中。如果连接后生成循环,请跳过此边并选择下一个节点。当所有节点都加入到最小生成树中时,就可以找到连通图中的最小生成树。

2、Kruskal算法:

kruska算法将多个顶点分成N个部分。该算法可以看作是一个连续合并n个部分的过程。在此过程中,根据权值对多条边进行排序,然后根据贪婪思想对权值最短且无循环的顶点进行合并。

Kruskal算法和prim算法的区别在于,Kruskal需要将所有权重边从小到大排序,然后才能找到最小的生成树节点。排序后的加权边依次添加到最小生成树中。如果添加时生成循环,将跳过此边并添加下一条边。当所有节点都加入到最小生成树中时,就会找到最小生成树。

毫无疑问,Kruskal算法比prim算法在效率上更快,因为Kruskal只需要对加权边进行一次排序,而prim算法需要对加权边进行多次排序。尽管prim算法所涉及的加权边可能不能覆盖连通图中的所有边,但随着排序算法效率的提高,Kruskal算法与prim算法的区别将更加明显。

最大公约数怎么求算法java java求中位数算法 如何用java求最大公约数

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。