数据结构与算法 普里姆算法

发布 2021-05-02 18:01:28 阅读 5653

5、普里姆(prim)算法。

1)算法思想。

t=(u,te)是存放mst的集合。

①t的初值是(,¢

即最小生成树初始时只有一个红点r,没有红边。

②t经过n-1次如下步骤操作,最后得到一棵含n个顶点,n-1条边的最小生成树。

⒈选择紫边集中一条轻边并扩充进t

⒉将轻边连接的蓝点改红点。

⒊将轻边改红边。

⒋修改紫边集。

2)较小紫边集的构造。

若当前形成的t中有k个顶点,|u|=k,|v-u|=n-k,故可能的紫边数目是k(n-k)。从如此大的紫边集中选择轻边是低效的。因此,必须构造较小的紫边集。

对于每个蓝点v ∈v-u,从v到各红点的紫边中,只有最短的那一条才有可能是轻边。因此,只须保留所有n-k个蓝点所关联的最短紫边作为轻边的候选集即可。

3)候选紫边集合的修改。

当把轻边(u,v)扩充到t时,因为v由蓝变红,故对每个剩余的蓝点j,边(v,j)就由非紫边变为紫边,这条新紫边的长度可能小于蓝点j原来所关联的最短紫边的长度。因此,用长度更小的新紫边取代那些原有的最短紫边。

4)prim算法的伪**描述。

primmst(g,t,r),¢

for(k=0;k

modifycandidateset(…)根据新红点v调整候选轻边集。

5) 算法的执行过程。

用prim算法得到最小生成树的过程【参见动画演示】

注意:若候选轻边集中的轻边不止一条,可任选其中的一条扩充到t中。

连通网的最小生成树不一定是惟一的,但它们的权相等。

例】在上图(e)中,若选取的轻边是(2,4)而不是(2,1)时,则得到如图(h)所示的另一棵mst。

6)算法特点。

该算法的特点是当前形成的集合t始终是一棵树。将t中u和te分别看作红点和红边集,v-u看作蓝点集。算法的每一步均是在连接红、蓝点集的紫边中选择一条轻边扩充进t中。

mst性质保证了此边是安全的。t从任意的根r开始,并逐渐生长直至u=v,即t包含了 c中所有的顶点为止。mst性质确保此时的t是g的一棵mst。

因为每次添加的边是使树中的权尽可能小,因此这是一种"贪心"的策略。

7)算法分析。

该算法的时间复杂度为o(n2)。与图中边数无关,该算法适合于稠密图。

数据结构与算法 回溯算法

数据结构与算法课程报告。回溯算法。学号。姓名魏炜焙 班级。教师。华侨大学电子工程系。设计目的 掌握并熟练运用 数据结构与算法分析 中所学到的知识解决问题。基本要求。找一个现实的例子,根据第十章内容,选择一个算法进行解决,并进行分析。设计内容。本实验运用的是回溯算法,解决跳马问题。跳马问题也称为骑士周...

数据结构与算法

本章知识要点 算法的基本概念 数据结构的定义 线性表的定义和存储 树 二叉树的定义和存储 查找与排序算法。算法 algorithm 是一组有穷的规则,规定了解决某一特定类型问题的一系列运算,是对解题方 与完整的描述。算法是解题的步骤,可以把算法定义成解一确定类问题的任意一种特殊的方法。在计算机科学中...

算法与数据结构

学院专业姓名学号。实验1 线性表的操作 12学时 问题描述 假设一个班级内有n个学生,定义一个学生类和一个班级类。学生类中包括学号 姓名 性别 年龄 专业等属性 班级类包括一个学生对象链表。定义如下 class student class myclass student stu head 链表表头指...