c++ prim函数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c++ prim函数
C++的STL库中有一个非常重要的函数——prim函数。
prim函数是一种用于求解最小生成树问题的算法,可以在图中找到一棵包含全部节点的最小权值树。
prim函数的基本思想是从任意一个节点开始,不断添加与已有节点相连的权值最小的节点,直到所有节点都被加入为止。
具体实现过程如下:
1. 初始化一个集合S,包含任意一个节点v。
2. 初始化一个set,用于保存所有与集合S相连的节点和相应的边权值,根据边权值从小到大排序。
3. 从set中取出权值最小的边(u,w),如果u不在集合S中,则将u加入集合S,并将(u,w)加入最小生成树的边集中。
4. 将所有与u相连的节点v及其边权值添加到set中,如果v 已经在S中,则从set中删除。
5. 重复步骤3和4,直到集合S包含所有节点为止。
prim函数的时间复杂度为O(ElogV),其中E表示边数,V表示节点数。
它是一种贪心算法,每次选择当前情况下的最优解,但并不保证一定能够得到全局最优解。
- 1 -。