Kruskal算法:

void Kruskal ( )
{
    MST = { } ;                           //边的集合,最初为空集
    while( EdgeAccepted < NumVertex - 1 
                         && E中还有边 )  //MST中边数不到V-1
    {
        E(V, W) = Min( E );               //最小堆
        Delete( E(V, W) );                //将其从E中删除      
        Uset = Find( U, S );              //并查集
        Vset = Find( V, S );              //并查集
        if( Uset != Vset )                //E(V, W)不在MST中构成回路
        {
            EdgeAccepted++;               //更新MST中边数
            SetUnion( S, Uset, Vset );    //并入集合 //并查集
        }
        else 
            彻底无视E(V, W);
    }
    if (EdgeAccepted < NumVertex - 1)
        ERROR(生成树不存在)
}

Prim算法时间复杂度O(V²),适用于稠密图

void Prim ( )
{
    /*MST = { s, }*/                           //树集中只有源点S
    while ( 1 ) 
    {
        V = smallest unknow distance vertex;   //未收录顶点中dist最小者
        if( no  V )                            //V不存在
            break;
        
        dist[V] = 0;                           //收录
        for( each W adjacent to V )            //V的每个邻接点W
        {
            if( dist[W] != 0 )                 //如果未收录
            {
                if( E(V, W) < dist[W] )
                {                              //路径变短,更新一下
                    dist[W] = E(V, W);
                    parent[W] = V;             //并查集并入树集合中
                }
            }
        }
    }
    if( 收录顶点不到 != 总顶点 )
        ERROR("生成树不存在");
}
初始化:dist[V]   = E(s, V) OR INF;
        parent[s] = -1;

最小生成树问题:Kruskal算法 AND Prim算法的更多相关文章

  1. Algorithm --> Kruskal算法和Prim算法

    最小生成树之Kruskal算法和Prim算法 Kruskal多用于稀疏图,prim多用于稠密图. 根据图的深度优先遍历和广度优先遍历,可以用最少的边连接所有的顶点,而且不会形成回路.这种连接所有顶点并 ...

  2. 求最小生成树——Kruskal算法和Prim算法

    给定一个带权值的无向图,要求权值之和最小的生成树,常用的算法有Kruskal算法和Prim算法.这两个算法其实都是贪心思想的使用,但又能求出最优解.(代码借鉴http://blog.csdn.net/ ...

  3. 最小生成树之Kruskal算法和Prim算法

    依据图的深度优先遍历和广度优先遍历,能够用最少的边连接全部的顶点,并且不会形成回路. 这样的连接全部顶点并且路径唯一的树型结构称为生成树或扩展树.实际中.希望产生的生成树的全部边的权值和最小,称之为最 ...

  4. 最小生成数kruskal算法和prim算法

    定义 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连通图. 连通网:在 ...

  5. 最小生成树(次小生成树)(最小生成树不唯一) 模板:Kruskal算法和 Prim算法

    Kruskal模板:按照边权排序,开始从最小边生成树 #include<algorithm> #include<stdio.h> #include<string.h> ...

  6. 最小生成树---普里姆算法(Prim算法)和克鲁斯卡尔算法(Kruskal算法)

    普里姆算法(Prim算法) #include<bits/stdc++.h> using namespace std; #define MAXVEX 100 #define INF 6553 ...

  7. 【算法】prim算法(最小生成树)(与Dijkstra算法的比较)

    最小生成树: 生成树的定义:给定一个无向图,如果它的某个子图中任意两个顶点都互相连通并且是一棵树,那么这棵树就叫做生成树.(Spanning Tree) 最小生成树的定义:在生成树的基础上,如果边上有 ...

  8. hdu 1162 Eddy&#39;s picture (Kruskal算法,prim算法,最小生成树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1162 [题目大意] 给你n个点的坐标,让你找到联通n个点的一种方法.保证联通的线路最短,典型的最小生成 ...

  9. 贪心算法-最小生成树Kruskal算法和Prim算法

    Kruskal算法: 不断地选择未被选中的边中权重最轻且不会形成环的一条. 简单的理解: 不停地循环,每一次都寻找两个顶点,这两个顶点不在同一个真子集里,且边上的权值最小. 把找到的这两个顶点联合起来 ...

随机推荐

  1. struct 方法使用

    struct _Worker { _Worker() { pWokerbase=NULL; hThread=INVALID_HANDLE_VALUE; pListConn=NULL; } struct ...

  2. python数据字典的操作

    一.什么是字典? 字典是Python语言中唯一的映射类型. 映射类型对象里哈希值(键,key)和指向的对象(值,value)是一对多的的关系,通常被认为是可变的哈希表. 字典对象是可变的,它是一个容器 ...

  3. Theos简介

    [Theos简介] Theos is a cross-platform suite of development tools for managing, developing, and deployi ...

  4. Log4j配置很详细

    来自: http://www.blogjava.net/zJun/archive/2006/06/28/55511.html Log4J的配置文件(Configuration File)就是用来设置记 ...

  5. day63-webservice 01.cxf介绍

    CXF功能就比较强了.CXF支持soap1.2.CXF和Spring整合的非常密切.它的配置文件基本就是Spring的配置文件了.CXF是要部署在服务器才能用的.CXF得放到Web容器里面去发布.CX ...

  6. laravel 模型关联之(多对多)

    多对多 多对多就相当于一个专题Topic有多个文章,但是这多个文章又属于多个专题, 而且多对都必须有一个表是他们之间的关联关系表PostTopic Post表和Topic表之间没有直接的关联,而且通过 ...

  7. 在web.Config文件中添加数据库连接配置

    新建一个网站,打开web.config文件,在connectionString配置节点添加add节点进行数据库进行数据库连接配置代码如下: <connectionStrings> < ...

  8. Docker学习笔记_Dockerfile常用指令

    Dockerfile常用指令

  9. CentOS集群自动同步时间的一种方法

    CentOS集群自动同步时间的一种方法 之前有篇日志是手动同步时间的 http://www.ahlinux.com/os/201304/202456.html 之所以这么干,是因为我们实验室的局域网只 ...

  10. Docker保存修改后的镜像

    1.启动镜像并做出修改 docker run -it centos /bin/bash [root@afcaf46e8305 /]# 注意afcaf46e8305是产生的容器ID,前面运行的时候不要- ...