图论及其应用第4章
第四章 欧拉图与哈密尔顿图
§ 4.1 欧拉图
定义1 设G 是无孤立点的图。经过G的每条
边的(闭)迹被称为 Euler(闭)迹,存在Euler闭
迹的图称为欧拉图, 简称E 图。Euler闭迹又
称为Euler回路。
例1
(a )
(b)
(c)
(d)
(e)
(f)
上图中,(a),(f)是欧拉图;(b), (d) 有欧拉迹但 不是欧拉图;(c)和(e)无欧拉迹。
说明:(1) H 的每一点v,有 d+(v) = d -(v) = 2,且是连通的 从而H是欧拉有向图, 称为德 · 布鲁因图。 (2) H有2k条弧,若以每一条由点(b1,b2,…,bk-1)到点( b2,b3,…,bk)的弧a代表一个k-元组(b1,b2,…,bk),便可得 2k个不同的k-元组。 步骤2 求H的欧拉有向闭迹, 由此得k-部分序列
E(G) E(Q1 ) E(Q2 ) E(Qk )
问题:邮递员从邮局出发,递送邮件,然后返回邮局,要求辖
区每条街至少走一遍且走过的总路程最短,应如何选择路线?
图论模型:在一个连通的具有非负权的赋权图G中找一条 包含每条边(允许重复)且边权之和最小的闭途径,称之
为最优环游。 对该问题 (1) 若图G是一个欧拉图,则找出G的欧拉回路即可。 (2) 对一般图,其解法为:添加重复边以使G成为欧拉图G*, 并使添加的重复边的边权之和为最小,再求G*的欧拉回路。
定理1 下列陈述对于一个连通图G是等价的:
(1) G是欧拉图。 (2) G的每个点的度是偶数。 (3) G的边集能划分为圈。 证明 (1) (2)
令C是G中的一条欧拉闭迹。C中任一个给定的 点在C中每出现一次恰关联两条边,因为G的每条 边在C中仅出现一次,所以该点的度应为该点在C 中出现的次数乘以2, 是一个偶数。
(abhijedklmnpgcfq……) = (0000110101111001……) (abhijefgcdklmnpq……) = (0000110100101111……) (abhipgcdklmnjefq……) = (0000110010111101……)
§4.3 中国邮递员问题
Euler图中确定Euler回路的Fleury算法 算法的思想 从任一点出发按下法来描画一条边不重复的 迹,使在每一步中未描画的子图的割边仅当没有别的边可 选择时才被描画。 Fleury算法 1. 任意选取一个顶点v0,置w0= v0。 2. 假设迹wi=v0e1v1…eivi已经选定,那么按下述方法从 E\{e1,e2,…,ei}中选取边ei+1:使 (1) ei+1和vi相关联; (2) 除非没有别的边可选择,否则ei+1 不是G=G -{e1, e2, …, ei} 的割边。 3. 当第2步不能再执行时,算法停止。
例
例:某博物馆的一层布置如下图,其中边代表走廊,结点e是入 口,结点g是礼品店,通过g我们可以离开博物馆。请找出从博物 馆e进入,经过每个走廊恰好一次,最后从g处离开的路线。
d j h i e g c f b a
解:图中只有两个奇度顶点e和g, 因此存在起点为e, 终点为g 的欧拉迹。 为了在G中求出一条起点为e,终点为g的欧拉迹,在e和g 间添加一条平行边m
(3) 对恰有两个度数为奇的点的图G,可以证明:需要重复的
边正好是从一个奇度点到另一个奇度点的最短路上的边,即 问题为欧拉问题与最短路问题的综合。
说明: (1) 若G是Euler图,则G的任何Euler回路都是最优环游. (2) 若G 不是Euler图,用添加重复边以使G成为欧拉图G* 的方法时,添加的重复边具有的特征由定理3给出. 定理3 若W是图G中一条包含所有边的闭途径,则W具有最小 权值的充要条件是: (1) G的每一条边在W中最多重复一次; (2) 对于G的每个圈上的边来说,在W中重复的边的总权 值不超过该圈非重复边总权值。 证明:“必要性” 首先,设G是连通非欧拉图,u与v是G的两个奇度顶点, 把连接u与v的路上的边改为2重边,则路中的点的度数奇偶性
又设C是G2中任意一个圈,在该圈中,如果重复边的总权 值超过该圈中非重复边总权值,那么可以把该圈中平行边改 为非平行边,而把非平行边改为平行边,如此修改,得到的 图仍然是包含G的欧拉图,但对应的欧拉环游长度减小了。 这就是说,只要对G2的每个圈都作上面的修改,最后得到 的图仍然为包含G的欧拉图,而最后的图正好满足(2)。 “充分性” 只需证明:任何两条包含G中所有边的闭途径W1与W2, 如果满足定理的两个条件,则它们有相同的总权值。 设Y1与Y2分别表示W1与W2中重复出现的边集合。
证明:不失一般性,只就G是连通图进行证明。 设G=(n, m)是连通图。令vl, v2, …, vk, vk+1, …, v2k是G的所 有奇度点。 在vi与vi+k间连新边ei得图G*(1≦i≦k),则G*是欧拉图。 因此,由Fleury算法得欧拉回路C。 在C中删去ei (1≦i≦k)得k条边不重的迹Qi (1≦i≦k):
例如,图中,鼓轮的位置由 四个触点给出读数0010。如 果鼓轮沿顺时针方向旋转一 段,读数将是1001。
0 0 1
0 0 1 0
触点
0
问题 为提高效率,我们期望鼓轮每旋转一周(m段)读出的 由k位组成的m个数应是互不相同的. 进一步,对故定的k,最 大的m应是多少?如何构造这样的鼓轮? 涉及该问题的数学模型的几个概念:
设 S = (a1,a2,…, a n ,…) 为(0,1)无限序列.
1. S的周期: S中对任何正整数n,具有 an+ τ = an的最小的 正整数τ. 2. S的k-部分序列S1, S2, … : 是由S中相继k个元素
组成的k元组作为元素组成的序列, 即
S1=(a1, a2,…,ak), S2=(a2, a3,…,ak+1), …
推论 连通图G 有Euler迹当且仅当G最多有两个奇点。 证明 定理1表明:G有Euler闭迹当且仅当G有零个奇点。 若连通图G有Euler非闭迹C,并设点u和v分别是C的起 点和终点。记在C中添加一条连接u和v的新边e后所得到 的图为C + e。显然,C + e是一条Euler闭迹, 则由已证结 论, C + e有零个奇点, 从而C, 即G有两个奇点。 反之,设G是恰有两个奇点 u 和 v 的连通图。在 u和v 间添加新边 e 得图G + e, 则 G + e 没有奇点。由已证结论, G + e有Euler闭迹, 从而G 有Euler迹。 综上, 推论结论成立.
没有改变,仍然为偶数,但u与v的度数由奇数变成了偶数。 如果对G中每对奇度点都如此处理,则最终得到的图为欧拉 图。设该图为G1。 其次,对G1作修改: 如果在G1中,边e重复数大于2,则在G1中删掉2条重复的e 边后,所得之图仍然是包含G的欧拉图。 在G1中,对每组平行边都做上面的处理,最后得到一个重 复边数最多为1的包含G的欧拉图G2。 这说明,若W是包含G的所有边的欧拉回路,则G中每条 边至多在W里出现两次。这就证明了(1)。
(1) D是欧拉有向图。
(2)D的每个点的入度等于出度。 (3)D的弧集可划分为有向圈。 例 欧拉有向图:
§ 4.2 高效率计算机鼓轮的设计
计算机中旋转鼓轮的位置是借助于鼓轮表面上的一 系列电触点所产生的二元信号来识别的。这个表面分 为m段,每段由绝缘体或导体材料组成。绝缘段给出 信号0(没有电流),导通段给出信号1(有电流)。
n
m
该例有16个解,其中的一些为 (abcdkijefjhlmnpq……) = (0000101101001111……)
(abcdkipghlmjefq……) = (0000101100111101……)
(abcfgijedklmnpq……) = (00npgcdefq……) = (0000110111100101……)
i = (0110)
j = (1101) k = (1011) l = (0111) m = (1111) n = (1110) p = (1100) q = (1000)
h = (0011)
l
111
欧拉闭迹和相应的 德· 布鲁因序列 (abcdefghijklmnpq……) = (0000101001101111……)
S1,S2,…,Sτ 和相应的德 · 布鲁因序列S.
例 下图为k = 4 (τ=24=16) 的德 · 布鲁因图, 相应的欧拉 有向闭迹及相应的德 · 布鲁因序列.
a 000 001 b g 010 c h d k 011 e 101 i j 110 f p q 100
弧 a = (0000) b = (0001) c = (0010) d = (0101) e = (1010) f = (0100) g = (1001)
(2) (3): 因为G连通非平凡,故每个点的度至少是2, 所以G含有一个圈Z 。移去Z的各条边产生一个生成子图G1 ,其中每个点的度仍然是偶数。若G1没有边,则(3)已经 成立;否则,重复应用这种论证于G1,产生一个图G2,其 中所有的点的度仍然是偶数,等等。当该过程终止于空图 Gn时,我们就得到了将G的边分成若干圈的一个划分。 (3) (1) : 令Z1是这个划分的一个圈。若G仅由Z1组 成,则G显然是欧拉图。否则,有另外一个圈Z2与Z1有一 个公共点v,从v开始并且由Z1和Z2相连组成的通道是含有 这两个圈中各条边的一条闭迹。继续这个过程,我们可以 构成一条含有G的所有边的闭迹;从而G是欧拉图。
我们先证明:对于任意一个圈C*, 如果满足:
eYi E (C* )
w(e)
eYi E (C* )
w(e),(i 1, 2)
则有:
w(e) w(e)
3. 德 · 布鲁因(De Bruijn)序列: 指对于固定的正整数