• [小结论]生成树


    1、问题:对一个图,要求某一个生成树,使得该生成树第k大的边最小。(来源于POJ 2349)

    结论:对图做一遍最小生成树,所求边即为最小生成树中第k大的边。

    证法:考虑求MST的Kruskal算法。

      在使用Kruskal求MST的过程中,从小权边到大权边遍历所有边,遍历到每一条边的时候检查一下若将它加入生成树是否会形成环,若不形成则将它加入生成树,这样遍历完所有边之后就能求出最小生成树。

      若存在一个生成树T',其第k大的边比MST(记为T)中第k大的边权值小。记T'中第k大的边为l1,T中第k大的边为l2。图中所有边按小到大排序为a1,a2...am。不妨设l1为ai,l2为aj,则i < j。设遍历到ai的时候,T'的边集为为A',T的边集为A,则由Kruskal算法的步骤可知,|A'| <= |A|,否则一定会出现环。因为,边集A不要某条边的原因就是要了它会形成环,所以如果向A中加一条边就一定要删一条边才可能维持它是森林,所以|A'| <= |A|。

      这样的话,若l1为T'中第k大的边,则l2至少为T中第(k+1)大的边,矛盾。  

    2、在最小生成树中加入一条新边(边的两个顶点都在最小生成树中),一定会形成一个环。如果把环上的最长边去掉,就可以得到新的最小生成树。

    ------------------------------------------------------------------
    现在的你,在干什么呢?
    你是不是还记得,你说你想成为岩哥那样的人。
  • 相关阅读:
    第二次作业
    第一次作业
    2019春总结作业
    2019春第四次课程设计报告
    2019春第三次课程设计报告
    2019春第二次课程设计报告
    2019春第一次课程设计报告
    第十二周作业
    2019第十一周作业
    2019第十周作业
  • 原文地址:https://www.cnblogs.com/plumrain/p/jielun1.html
Copyright © 2020-2023  润新知