n个点的简单无向图没有长度为3的环,求其最大的边数

来源:互联网 发布:淘宝卖家手机端 编辑:程序博客网 时间:2024/05/01 10:25

原题描述:在一个未来的空中都市中,有很多个小岛(城区)。现在要求在这些岛之间架一些桥梁(桥是架在两个岛中间的)。要求:首先,如果A与B中间有桥,B与C之间有桥,则A与C之间就不能再架桥了,即对于城市中的任意三个岛,不能在其中两两都架上桥。在这样的前提下,要求架的桥数最多,并计算其中的一个可行方案。

 

此题在网上可以搜索到答案,桥数最多时为二分图。但没有给出有力的证明。以下简要证明之。

 

引理:n个顶点的图G=(V,E),假设其顶点的最大度数为m,则边数最多为m*(n-m)

 

证明:

取出最大度数的顶点v0,由于v0的度数为m,则v0有m个邻接点,设为X={u1,u2,...,um},而且图G没有长度为3的环,则这m个邻接点互不连接。

将G中的顶点V分成两个部分,X和 V-X,考虑V-S中的所有顶点,任取一个点v1,由于v1的度数不大于m,则将v1的边全部移动到X上来,这个操作是可行的,因为X有m个顶点,而v1最多只有m条边,此时v1必定和v0不相邻,注意移动之后图G的边数和点数都没有改变。循环处理V-S的所有顶点,如此使用图G分成了两个部分X和X-S,即是一个二分图,二分图边数最多时为完全二分图,即边数最多为m*(n-m)

 

当m=floor(n/2)时,m*(n-m)最大,所以对于n个顶点的图G,n为偶数时边数最多为(n/2)*(n/2),n为奇数时边数最多为(n-1)/2* (n+1)/2