zoukankan      html  css  js  c++  java
  • 最小生成树问题

    --------------------siwuxie095

       

       

       

       

       

       

       

       

    最小生成树问题

       

       

    这里介绍最小生成树(Minimum Spanning Tree)问题

       

       

       

       

       

    所谓生成树,就是对于一个完全连通的带权无向图,用 V-1 条边连接

    V 个顶点而形成的树,即为该图的生成树,如上图所示

       

       

    而在所有的生成树中,边上的权值相加最小的生成树,即为最小生成树

    如何找到一张图中的最小生成树,就是最小生成树问题

       

    「最小生成树是一副连通加权无向图中一棵权值最小的生成树」

       

       

       

       

       

    最小生成树问题,在实际生活中有很多应用,如:电缆的布线设计

       

    通过发电站将电输送到每一个节点,其实并不需要每两个节点之间

    都有电缆连接,只需要保证每个节点都有电即可。这种情况下,电

    缆布线的最优设计就是找到这张图的最小生成树,让布置电缆的总

    费用最低

       

    最小生成树提供了一个各个节点之间均连通,同时连通的总费用

    又最小的方案

       

       

       

       

       

    对于最小生成树问题,通常针对的是连通带权无向图,所以最小生

    成树必须要带权,不然就没有最小的概念了

       

    如果一个图不连通,也可以分别在每个连通分量上求各自的最小生

    成树,最后得到的通常叫做 最小生成森林

       

       

       

       

       

    将最小生成树问题抽象出来,即 在有 V 个顶点的连通带权无向图

    中找V-1 条边,这 V-1 条边必须将 V 个顶点连接起来,且使得最

    终的总权值最小

       

    1)找 V-1 条边

       

    2)连接 V 个顶点

       

    3)总权值最小

       

       

       

       

       

       

       

    切分定理

       

       

    实现最小生成树的 Prim 算法和 Kruskal 算法都不约而同的应用了

    切分定理(Cut Property)

       

       

    在介绍切分定理之前,首先应该知道什么叫做切分。把图中的顶点

    分为两部分,称为这张图的一个切分(Cut)

       

       

       

       

       

       

    当定义了一个图的切分之后,就可以得到一个新的概念:

       

    如果一条边的两个端点,属于切分不同的两个阵营,就称

    这条边为横切边(Crossing Edge)

       

       

       

       

       

       

    切分定理:

       

    给定任意切分,横切边中权值最小的边必然属于最小生成树

       

    如:在下图的切分中,横切边 0-7 是权值最小的边,权值为

    0.16,所以 0-7 一定是这张图的最小生成树中的一条边

       

       

       

       

       

       

    切分定理的简单证明:

       

       

       

    前提:切分将一个图分成了两部分,中间用横切边进行连接。

    根据切分定理可知,横切边中权值最小的边,一定属于最小

    生成树

       

       

    反证法:

       

    令三条横切边分别为 e、f、g,且 e 为权值最小的横切边,

    T 为图的最小生成树

       

    假设 T 包含 f,而不包含 e,那么如果将 e 加入 T,那么

    e 和 f 就必然形成了环,不再是生成树

       

    显然,e 的权值小于 f,那么用 e 替换 f 就可以形成一个

    权值小于 T 的生成树,与 T 为最小生成树矛盾

       

       

       

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    程序员书单
    36条极简人生建议
    Nacos
    jvm详解
    22种世界500强都在用的高效工作方法,你了解几种?
    道德经39经典
    积累的力量
    JUC之线程间定制化通信
    JVM调优参考
    docker开机启动和dockercompose开机启动执行相应的各个docker容器
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/7124296.html
Copyright © 2011-2022 走看看