- 4
- 0
- 约9.04千字
- 约 46页
- 2017-08-22 发布于湖北
- 举报
数据结构第七章(图)
例 1 6 5 4 3 2 6 5 1 3 5 6 6 4 2 5 1 3 1 1 6 3 1 4 1 6 4 3 1 4 2 1 1 6 4 3 2 1 4 2 5 1 6 5 4 3 2 1 4 2 5 3 1、普里姆算法 普里姆算法的时间复杂度为O(n2),与网中的边数无关,因此适用于求边稠密的网的最小生成树。 2、克鲁斯卡尔(Kruskal)算法 而克鲁斯尔算法恰恰相反,它的时间复杂度为O(eloge)(e为网中边的数目),因此,它相当于普里姆算法而言,适合于求边稀疏的网的最小生成树。 例 1 6 5 4 3 2 6 5 1 3 5 6 6 4 2 5 1 6 5 4 3 2 1 2 3 4 5 克鲁斯卡尔(Kruskal)算法: 假设连通网N=(V,{E}),则令最小生成树的初始状态为只有n个顶点而无边的非连通图T=(V,{}),图中每个顶点自成一个连同分量。在E中选择代价最小的边,若该边依附的顶点落在T中不同的连通分量上,则将此边加入到T中,否则舍去此边而选择下一条代价最小的边。依次类推,直至T中所有顶点都在同一连通量上为止。 2、克鲁斯卡尔(Kruskal)算法 (1)用顶点数组和边数组存放顶点和边信息 顶点结点: typedef struct { int data; //顶点信息 int jihe; }VEX; 边结点:
原创力文档

文档评论(0)