内容
Dirac定理内容是:如果G是一个n个点的无向简单图simple graph,当
n
≥
3
n\geq3
n≥3并且所有边的度数
d
(
v
)
≥
n
/
2
d(v)\geq n/2
d(v)≥n/2时,图G是哈密尔顿图。
在细讲之前,先说说欧拉图和哈密尔顿图Hamiltonian Graph的最大的不同在于,欧拉的侧重点在图的边,而哈密尔顿的侧重点在于图的点。哈密尔顿图的定义就是包含了哈密尔顿回路Hamiltonian cycle,而哈密尔顿回路,就是经过了图中所有点的回路。
而cycle必须是path,而path是点不能重复的路径。简单说来就哈密尔顿图是有一条点不重复并且包含了所有点的环路的图。
简单图,就是没有自环和平行边的图。平行边,在前面的文章说过,是连接同一对点的两条边。需要注意的是,Dirac定理没有假设是连通图。举个例子,下图包含了一条哈密尔顿路径:
而下图是一张哈密尔顿图,因为哈密尔顿环路不需要经过所有的边,只需要经过所有的点:
证明
现在给出证明:
首先证明图是连通的,使用反证法,如果图不连通,那么图肯定存在多个组件component。这里介绍下组件的概念,组件就是不连通的图里连通的部分。那么最小的组件C的最大度数呢?那么最小组件的总点数,最大就是图的点数的一半。点数量的符号是|G|,已知|G|=n,那么|C|最大就是
n
/
2
n/2
n/2,因为最小组件的最大点数,极端情况下就是拆成两个组件嘛,所以是
n
/
2
n/2
n/2。因为是简单图,所以没有平行边和自环,所以最小组件C的点的最大度数,也就是最极端的情况,和C中其他点都相连,这个最大度数是|C|-1,假设
v
c
v_c
vc为C中任意点,所以我们可以得到:
d
(
v
c
)
≤
∣
C
∣
−
1
<
∣
C
∣
≤
n
/
2
d(v_c)\leq|C|-1 <|C|\leq n/2
d(vc)≤∣C∣−1<∣C∣≤n/2
与假设中的任意点的度数
d
(
v
)
≥
n
/
2
d(v)\geq n/2
d(v)≥n/2矛盾。所以证明了连通性。
设
P
=
x
0
…
x
k
P=x_0\dots x_k
P=x0…xk为G中的最长路径path。因为P是最大path,所以两个端点
x
0
x_0
x0和
x
k
x_k
xk的相邻点一定在P上,否则P再连上这个点构成一个更大的path。因为
x
0
x_0
x0至少有
n
/
2
n/2
n/2个边,
x
k
x_k
xk也一样。但是P上面除了
x
0
x_0
x0和
x
k
x_k
xk外最多只有
n
−
2
n-2
n−2个位置。根据鸽笼原理pigeon hole principle,
n
n
n个点要往
n
−
2
n-2
n−2个位置上放,所以一定有一个点是
x
0
x_0
x0的邻居,并且他在P这个path的下一个点是和
x
k
x_k
xk的邻居。因为最多
n
−
2
n-2
n−2个位置,放
n
/
2
n/2
n/2个
x
0
x_0
x0的邻居,还剩下
n
−
2
−
n
/
2
=
n
/
2
−
2
n-2-n/2=n/2-2
n−2−n/2=n/2−2个位置放
x
k
x_k
xk的邻居。要避免
x
0
x_0
x0的邻居不和
x
n
x_n
xn的邻居相邻,在
x
0
x_0
x0的邻居在P上全部挨在一起,都是位置是不够的,这就是鸽笼原理。所以一定会出现下图这种情况,存在相邻的两个点
x
i
x_i
xi与
x
i
+
1
x_{i+1}
xi+1,
x
i
x_i
xi是起点
x
0
x_0
x0的邻居,
x
i
+
1
x_{i+1}
xi+1是终点
x
k
x_k
xk的邻居。所以画出下图(图片来自德国汉堡大学Reinhard Diestel撰写的研究生教材《Graph Theory》),不过这个图把
x
i
x_i
xi和
x
i
+
1
x_{i+1}
xi+1交换了,意思是一样的:
可以取一条无重复点的路径C,路径为
x
0
x
i
+
1
P
x
k
x
i
P
x
0
x_0x_{i+1}P x_kxiP x_0
x0xi+1PxkxiPx0,这个路径path是一个环,包含了P的所有点。所以我们证明了这是一个环。但是还差最后一步,要证明P包含了图所有的点。
因为前面证明了G是连通图,所以所有点都是相连的。如果上述环路C还存在一个邻居x的话,那么把环从x这拆开,构成的路径长度就超过了P。但是我们预设了P是最长路径。所以上述环路C没有邻居。假如有一个点不在环路C中,根据图的连通性,这个点肯定与C相连,与环路C没有邻居的结果矛盾,所以我们证明了C包含了图G的所有点。
Dirac定理证明完毕。
举例
小明来到一个新城市,打算从火车站下车,游完该城市的所有的景点。以下是城市地图:
总共6个节点,每个节点度数都是3,所以是哈密尔顿图,所以小明可以不重复地游完所有景点然后回到火车站。