现在的位置: 首页 > 综合 > 正文

无向哈密顿图回路Dirac 定理证明和竞赛图为哈密顿通路的证明过程

2018年02月20日 ⁄ 综合 ⁄ 共 1469字 ⁄ 字号 评论关闭

Dirac 定理: 设一个无向图中有 N 个节点,若所有节点的度数都大于等于 N/2,则汉密尔顿回路一定存在。注意,“N/2” 中的除法不是整除,而是实数除法。如果 N 是偶数,当然没有歧义;如果 N 是奇数,则该条件中的 “N/2” 等价于 “⌈N/2⌉”。


网上已经有证明的方法,比如:http://blog.csdn.net/weiguang_123/article/details/7830047

而我想从自己的理解用反证法来证明一下:


我们先假设N为偶数,如果偶数成立,那当为奇数的时候很明显(边 / 点)的值更大出现回路的可能性更大(这只是我的一种理解方式,其实也可以按照偶数的方式证明的)

一:首先可以证明图一定是连通的:

前提:设 d(v) 表示节点 v 的度数。对于任意两个节点 u、 v,若它们不相邻,则可能和它们相邻的节点共有 N - 2 个,而 d(u) + d(v) ≥ N/2 + N/2 ≥ N。

1:假设u和v不连通

2:则尽量使得u和v的度数连向不同的点(即尽量别出现某点同时和u,v点同时相连),那么将有(N - 2)/ 2的点和u连,(N - 2)/ 2的点和v连;

而d(u) = N / 2   = (N - 2) / 2 + 1;所以u至少还得连接一个已经被v连接的点,

3:存在一个点同时和u,v连接,那么u,v可达;

所以这样u和v就能通过这个点连通了。(同理:v会和已经被u连接好的点连接)


二:现在证明存在一个连接所有N个点的回路:

步骤1.先证明存在k(k <= N)个点的的哈密顿回路。

(1)任意找两个相邻的节点 S 和 T,在它们基础上扩展出一条尽量长的没有重复节点的路径。也就是说,如果 S 与节点 v 相邻,而且 v 不在路径 S → T 上,则可以把该路径变成 v → S → T,然后 v 成为新的
S。从 S 和 T 分别向两头扩展,直到无法扩为止,即所有与 S 或 T 相邻的节点都在路径 S → T 上。此时这条路径的点数为k 个。

(2)而 d(S) + d(T) ≥ N/2 + N/2 ≥ N >= k;只要证明S到T的路径上存在点vi和T相连,vj和S相连(i
< j)那么i到j路径任意相连两点都能作为回路的始末点。

证明如下:


【1】假设与S相连的都在编号为2到k/2,T相连的是k/2到k - 1,这样就能保证不会存在点(i
< j)
vi和T相连,vj和S相连

【2】但是这样和S的度数最多为:k/2
- 1 <= N / 2 - 1,则d(S) <= N / 2 - 1和d(S) >= N / 2矛盾。

【3】所以必须和S相连的会有一个点大于k/2,证明完毕。


if(k = N)证明完毕;

else 跳到步骤2;

步骤2:

(1)由步骤1得到k个点的哈密顿回路。

(2)当存在第k+1点即不和S相连,又不和T相连,则必定和S到T间的点Vi相连,否则不连通,这样就可以断开k个点的回路Vi附近的边,形成新的S->T的路径,之后可以回到步骤1,直到k = N。



竞赛图每对顶点之间都有一条边相连的有向图称为竞赛图

证明:n(n>=2)阶竞赛图一定存在哈密顿通路


归纳法:假设当1到k个点已经为哈密顿通路1-> 2 -> ....->k,再把Vk+1归并进去:

1:当假k个点中有相邻的两个点Vi->Vi + 1,出现Vi -> Vk+1,Vk+1 -> Vi+1,则Vk+1直接插入Vi->Vi+1

2:当假k个点中有相邻的两个点Vi->Vi + 1,出现Vi -> Vk+1,Vi+1 ->Vk+1,当往右追溯到k的话如果一直都是指向Vk+1的话,那必然出现Vk->Vk+1

否则会出现1的情况。

3:当假k个点中有相邻的两个点Vi->Vi
+ 1,出现 Vk+1
 ->
 Vi,那就往左追溯到1,如果一直Vk+1指向vj(1
<= j <= i)的话,那必然会出现Vk+1 -> V1

否则会出现1的情况。


抱歉!评论已关闭.