7桥问题1. 从七桥问题说起
——窥视数学的后花园
2008-6-5 sxgao@gucas.ac.cn 1
4. 七桥问题
时间:18世纪
地点:普鲁士的哥尼斯堡城(Königsberg),
普雷格尔(Pregel)河
人物:悠闲的市民们, 欧拉
问题:能否经过每座桥一次且仅一次回到出发点?
2008-6-5 sxgao@gucas.ac.cn 4
5. Euler闭迹(closed trail, tour, circuit):经过图G的
每条边恰好一次的闭迹。
Euler迹(trail):经过每条边恰好一次的迹。
Euler图:有Euler闭迹的图。
图中顶点的度:顶点关联的边的条数。
2008-6-5 sxgao@gucas.ac.cn 5
6. 定理1 一个非空连通图是Euler图当且仅当它没有奇度顶点。
证明 必要性:设图G是Euler图,C是G中一个Euler闭迹。对G中任 一个
顶点 v,v必在C上出现。因C每经过v一次,就有两条与v关联的边被使
用。设C经过v共k次,则C经过了2k条于v关联的边,故v的度为2k。
充分性:无妨设图G的顶点个数n >1。因G连通,故至少有一条边。下
面用反证法证明充分性结论。
假设图G无奇度顶点,但它不是Euler图。令
S = {G | G是至少有一条边的n阶连通图,无奇度顶点,且不是Euler图}
则S非空。取S中边数最少的一个,记为G0 。因G0无奇度顶点,故G0中
顶点的度至少为 2,因此G0含有圈,从而含有闭迹。设C是中一条最长
的闭迹。由假设,C不是G0的Euler闭迹。因此G0中将C的边去掉后必有
一个连通分支至少含有一条边。记这个连通分支为G1。由于C是闭迹,
故G1中没有奇度顶点,且G1 的边少于G0 的边。由G0的选择可知, G1必
有Euler闭迹,记为 C1。因此C+C1是的一条闭迹,且它比C更长,这与
C的选取矛盾。证毕。
2008-6-5 sxgao@gucas.ac.cn 6
7. 重返七桥
问题:能否经过每座桥一次且仅一次回到出发点?
答案:不能
为什么?因右图中不存在欧拉闭迹,因此不能一笔画
完且回到出发点。
新问题:不要求回到出发点能否一笔画完?到底几笔
能画完?——好奇是创新的钥匙!
2008-6-5 sxgao@gucas.ac.cn 7
9. 再返七桥
问题:七桥问题对应的图几笔能画完?
2008-6-5 sxgao@gucas.ac.cn 9
11. 下列图形分别能几笔画成?
Herschel图 Petersen图
2008-6-5 sxgao@gucas.ac.cn 11
12. 如何求欧拉图中的欧拉闭迹?
——Fleury算法
基本思想:从图中一个顶点出发,用深度优先方法找图的迹,在任何
一步,尽可能不使用剩余图的割边,除非没有别的选择。
Fleury算法步骤:
输入:欧拉图G
输出:G的欧拉闭迹
step1. 从G的任一个顶点v0开始,令w0=v0,i:=0。
step2. 设迹wi=v0e1v1···eivi已取定。从E{e1,e2, ···,ei}中选取一条边ei+1,
使得
(1) ei+1和vi相关联;
(2) ei+1不是图G{e1,e2, ···,ei}的割边,除非没有别的选择。
step3. 当step2不能再执行时,停止。
2008-6-5 sxgao@gucas.ac.cn 12
28. 解中国邮递员问题的算法
奇偶点图上作业法
算法口诀
先分奇偶点,奇点对对联;
联线不重迭,重迭要改变;
圈上联线长,不得过半圈。
2008-6-5 sxgao@gucas.ac.cn 28
41. TSP-近似算法
最小生成树法
算法基本思想为:先求出的一棵最小生成树T,给T的每条
边添加一条重边,使其成为Euler图。然后沿Euler图的一条
Euler闭迹遍历的所有顶点。在每个顶点处,若沿Euler闭迹
前行时遇到的顶点已被访问过,则跳过它直接访问Euler闭
迹的下一个顶点。直至遍历的所有顶点后回到出发点。注意
我们的对象是一个完全图,故上述跳跃方式的访问总是可行
的,且最终能得到一个Hamilton圈。
2008-6-5 sxgao@gucas.ac.cn 41
44. TSP-近似算法
定理5 设赋权完全图的各边之权均为正数,且对∀vi , v j , vk ∈V,
c0
都有w(vi v j ) + w(v j vk ) ≥ w(vi vk ) , 则 * < 2 。这里c0是算法所得
c
的Hamilton圈H的权(近似最优值),而c*是最小权
Hamilton圈H*的权。
证明:设T和G*如算法所述。设E是G*中任一条Euler闭迹。
由定理条件,有 w( H ) = c0 ≤ w( E ) = 2 w(T ) 。此外,设T0是G的
最小权Hamilton圈H*删去任一边后所得的生成树,则
w(T ) ≤ w(T0 ) < c* 。因而 c0 < 2c 。证毕。
*
2008-6-5 sxgao@gucas.ac.cn 44