Euler 图就是从一顶点出发【每条边】恰通过一次能回到出发点的那种图,【中国邮递员问题】的数学模型是:在一个赋权连通图上求一个含所有边的回路, 且使此回路的权最小。 显然,若此连通赋权图是 Euler 图,则可用 Fleury 算法求 Euler 回路,此回路即为 所求。 r) Q5 J* E$ t* R & \+ J, c/ ~1 T Hamilton 图就是从一顶点出发【每个顶点】恰通过一次能回到出发点的那种图。【旅行商问题描述】一名推销员准备前往若干城市推销产品,然后回到他的出发地。如何为他设计一条 最短的旅行路线(从驻地出发,经过每个城市恰好一次,最后返回驻地)?。用图论的术语说,就是在一个赋权完全图中,找出一个有最小权的 Hamilton 圈。称这种圈为最优圈。 ! X, ?' O4 U7 A+ h+ H8 ` ) x, E$ P5 J1 y0 N# P% n" j1 基本概念4 g& u$ H6 c! i% D; d0 e. n
【定义】 经过G 的每条边的迹叫做G 的 Euler 迹;闭的 Euler 迹叫做 Euler 回路或 E 回路;含 Euler 回路的图叫做 Euler 图。 直观地讲,Euler 图就是从一顶点出发每边恰通过一次能回到出发点的那种图,即 不重复地行遍所有的边再回到出发点。' \' I& P) x; y1 `2 s # r" I! M1 W' Y& ~' x) G7 I' V
4 ~0 N3 g$ C7 E& K$ |) {7 S) P* f
9 j8 \' M9 A) U) ^1 j+ _
【定义 】包含G 的每个顶点的轨叫做 Hamilton(哈密顿)轨;闭的 Hamilton 轨叫做 Hamilton 圈或 H 圈;含 Hamilton 圈的图叫做 Hamilton 图。 直观地讲,Hamilton 图就是从一顶点出发每顶点恰通过一次能回到出发点的那种图,即不重复地行遍所有的顶点再回到出发点。 - ~7 @5 r, ^: U/ a# [* H X* b8 q0 @: X; Z# o
2 Euler 回路的 Fleury 算法 0 y- {7 P! Y z3 z1921 年,Fleury 给出下面的求 Euler 回路的算法。 ( Z5 |1 X; }. z3 V9 z# `
4 l" S" W8 I( @ 1 C$ R! T: ~/ I( M
. C( o0 Y$ ^3 y! {5 s 6 D3 a, e$ N4 [& s) u- x / s3 D* I# D# w4 H7 {例 :邮递员问题& i" a' y x6 B2 \! {" `
中国邮递员问题 一位邮递员从邮局选好邮件去投递,然后返回邮局,当然他必须经过他负责投递的 每条街道至少一次,为他设计一条投递路线,使得他行程最短。1 n8 ~: p- H: ]. m$ r9 I
m( S. G6 Z3 s* j
上述中国邮递员问题的数学模型是:在一个赋权连通图上求一个含所有边的回路, 且使此回路的权最小。 显然,若此连通赋权图是 Euler 图,则可用 Fleury 算法求 Euler 回路,此回路即为 所求。 4 g2 g! d( F% m+ \# s( V% x: _/ A& b0 C' D+ J5 p; D& ]
非 Euler 图的权最小的回路的求解方法2 z8 u4 x+ u2 G
7 C! I4 _. l- ?8 o
对于非 Euler 图,1973 年,Edmonds 和 Johnson 给出下面的解法: % w: O4 R4 Y8 M+ J$ N, g( ]- m# _. p 4 T/ z1 h1 l( q6 q/ N4 X 9 p. A- p1 V% l( o- j* Z+ u$ w0 X" H9 `3 g; s0 X8 H- j% x
多邮递员问题 6 P8 D0 v* {: I) k% Y" ` 邮局有 k(k ≥ 2) 位投递员,同时投递信件,全城街道都要投递,完成任务返回邮 局,如何分配投递路线,使得完成投递任务的时间最早?我们把这一问题记成 kPP。 kPP 的数学模型如下: 0 T7 A/ M/ k7 N( v. s2 E- p0 \; ~) I- K1 Q# B1 Z9 t8 v + U% A/ w; S+ }. V
! f8 a6 _: v) s( f2 p" x* h3 旅行商(TSP)问题; r% d/ y& v R4 e) |. V
一名推销员准备前往若干城市推销产品,然后回到他的出发地。如何为他设计一条 最短的旅行路线(从驻地出发,经过每个城市恰好一次,最后返回驻地)?这个问题称 为旅行商问题。用图论的术语说,就是在一个赋权完全图中,找出一个有最小权的 Hamilton 圈。称这种圈为最优圈。与最短路问题及连线问题相反,目前还没有求解旅行 商问题的有效算法。所以希望有一个方法以获得相当好(但不一定最优)的解。 , k& P, U5 i; ^9 z. C% B# i% e6 ] c$ L% x; M
3.1 改良圈算法9 B" Z) e; z ?/ }
6 k6 T2 S# U' V. X: R7 C& T3 v( O7 F5 F- \' K6 ]4 x# f' }$ ?
+ Q# ?: }9 ^4 _( L% h2 k + g0 Z9 U- Q8 M用改良圈算法得到的结果几乎可以肯定不是最优的。为了得到更高的精确度,可以 选择不同的初始圈,重复进行几次算法,以求得较精确的结果。 这个算法的优劣程度有时能用 Kruskal 算法加以说明。3 O1 H% u5 |7 Z. [2 Y
" `" O& t0 a5 v- q- l, t8 h假设C 是G 中的最优圈。 则对于任何顶点v ,C − v 是在G − v 中的 Hamilton 轨,因而也是G − v 的生成树。由 此推知:若 T 是 G − v 中的最优树,同时 e 和 f 是和 v 关联的两条边,并使得 w(e) + w( f ) 尽可能小,则 w(T ) + w(e) + w( f ) 将是 w(C) 的一个上界。 这里介绍的方法已被进一步发展。圈的修改过程一次替换三条边比一次仅替换两条 边更为有效;然而,有点奇怪的是,进一步推广这一想法,就不对了。 L' C; J1 x9 r