最优闭回路问题

简介: 最优闭回路问题

一、欧拉回路与道路

1、欧拉回路与道路

连通图G中,若存在一条道路,经过每一边一次且仅一次,则称这条路为欧拉道路。若存在一条回路经过每边一次仅一次,称这条回路为欧拉回路。

具有欧拉回路的图称为欧拉图,简称E图。

2、欧拉图存在的条件

(1)无向连通图G是欧拉图当且仅当G中无奇点(出入次和为奇数)。

(2)连通有向图G是欧拉图,当且仅当它的每个顶点的出次等于入次。

二、中国邮路问题

1、中国邮路问题

一个邮递员,负责某一地区邮件投递,他每天从邮局出发,走遍该地区所有街道在返回邮局,问应如何安排送信的路线,可以使他所走的路线总路程最短(1962,管谷梅)。

给定一个连通图G,每边有权L(e),要求一条回路经过每边至少一次,且满足总权和最小。

2、中国邮路问题求解

(1)若连通图G没有奇点,则是一个欧拉图,显然按照欧拉回路走就满足要求:每边一次仅一次,且权和最小;

(2)若G中有奇点,则有些边走过不止一次,这相当于对图G增加一些重复边E1,得到新的图G1=G+E1,使得G1没有奇点,且满足路程最短。

3、有奇点的G的中国邮路问题等价问题

连通图G=(V,E)中,求一个边集E1(E的子集),将E1的边均变成重复边得到G1=G+E1,使得G1无奇点,且

E1*存在的充分必要条件:

(1)每条边最多重复一次;

(2)对图G中每个初等圈来说,重复边的长度不超过圈长的一半。

例1

求图1所示网络的中国邮路问题

【问题分析】

图1中,点v2,v4,v6,v8为奇点,为了使得所有的点为偶点,需要构造辅助边.如果增加(v6,v3)和(v3,v2),等价于直接增加边(v6,v2)(距离由最短距离决定)。

(1)先求图1中任意两点之间的距离矩阵d1如表1(Floyd算法)。
sets:
dian/1..10/:L; 
link(dian,dian):d,x;
endsets
data:
d=@ole('d:\lianxian','d_1');
enddata
n=@size(dian);
min=@sum(link(i,j)|i#ne#j:d(i,j)*x(i,j));
@for(dian(i):@sum(dian(j)|j#ne#i:x(i,j))=1);
@for(dian(i):@sum(dian(j)|j#ne#i:x(j,i))=1);
@for(dian(i):@for(dian(j)|j#ne#i#and#j#gt#1:
L(j)>L(i)+x(i,j)-(n-2)*(1-x(i,j))+(n-3)*x(j,i)));
@for(dian(i):L(i)<n-1-(n-2)*x(1,i));
@for(dian(i):L(i)>-1+(n-2)*x(i,1));
@for(link:@bin(x));

表1 图1中各点间最短距离

vi\vj

v1

v2

v3

v4

v5

v6

v7

v8

v9

v1

0

5

10

9

11

12

13

15

16

v2

5

0

5

10

6

7

14

10

11

v3

10

5

0

9

5

2

13

9

6

v4

9

10

9

0

4

7

4

8

11

v5

11

6

5

4

0

3

8

4

7

v6

12

7

2

7

3

0

11

7

4

v7

13

14

13

4

8

11

0

4

7

v8

15

10

9

8

4

7

4

0

3

v9

16

11

6

11

7

4

7

3

0

根据表1,奇点间最短距离为

d1(v2,v6)=7;

d1(v2,v4)=10;

d1(v2,v8)=10;

d1(v4,v6)=7;

d1(v4,v8)=8;

d1(v6,v8)=7;

(2)确定奇点之间的连线方案

  1.  如图2所示,若增加(v2,v6),(v4,v8)边,所有点为偶数点,增加长度为15;
  2.  如图3所示,若增加(v6,v8),(v2,v4)边,所有点为偶点,增加长度为17;
  3. 如图4所示,若增加重复边(v4,v6),(v2,v8),所有点为偶点,增加长度为17;

三种方案比较,选择图2所示方案。

(3)规划邮路

从v1出发,经过图2中所有边一次,仅一次回到v1的路径,见图5箭头所示。

v1-v4-v7-v8-v9-v6-v3-v2-v6-v5-v8-v4-v5-v2-v1(不止一种线路)

三、旅行商问题

Hamilton图: 包含图G中每个顶点的路,称为Hamilton路,包含G中每个顶点的圈,称为Hamilton圈(回路)。

例2 旅行商路线问题(算法:tsp问题)

某公司计划在某地区的1-10这10个城镇做广告宣传,推销从城市1出发,再回到1,已知这个10个城镇之间的距离如表2所示。为节约开支,公司希望推销员走过这10个城镇的总距离最少。

表2 各城镇之间的距离

i/j

1

2

3

4

5

6

7

8

9

10

1

0

8

5

9

12

14

12

16

17

22

2

8

0

9

15

16

8

11

18

14

22

3

5

9

0

7

9

11

7

12

12

17

4

9

15

7

0

3

17

10

7

15

15

5

12

16

9

3

0

8

10

6

15

15

6

14

8

11

17

8

0

9

14

8

16

7

12

11

7

10

10

9

0

8

6

11

8

16

18

12

7

6

14

8

0

11

11

9

17

14

12

15

15

8

6

11

0

10

10

22

22

17

15

15

16

11

11

10

0

【符号设置】

  • G=(V,E)  各城镇连接生产的图;
  • dij   两点i与j的距离;
  • L(i) 点i到根1的距离(水平变量);(用来防止提前生成圈)

【模型假设】

(1)经过各城镇一次仅一次;

【建立模型】

(1)连接的各城镇之间的总距离的最小值

(2)每个点只有一个出次

(3)每个点只有一个入次

(4)点i与j的前行后继关系(除1外)

(5)节点i与节点1的距离

(6)变量限制

【数学模型】

【模型求解】

最小路程为73(单位),点与点的连接关系为x(1,2)=1,x(2,6)=1,x(6,5)=1,x(5,4)=1,x(4,8)=1 x(8,10)=1,x(10,9)=1,x(9,7)=1,x(7,3)=1,x(3,1)=1

行程网络图如下


相关文章
|
2月前
考研高数之无穷级数题型一:判断收敛性、求收敛半径以及收敛域和收敛区间(题目讲解)
考研高数之无穷级数题型一:判断收敛性、求收敛半径以及收敛域和收敛区间(题目讲解)
185 0
|
算法
贪心算法——区间选点
贪心算法——区间选点
94 0
|
11月前
求两点间的最短距离
求两点间的最短距离
66 0
|
机器学习/深度学习 算法 决策智能
方程就是二叉树森林?遗传算法从数据中直接发现未知控制方程和物理机理
方程就是二叉树森林?遗传算法从数据中直接发现未知控制方程和物理机理
【矩阵分析】矩阵幂级数 发散 条件 || 幂级数 与 解析函数 的关系 || 幂级数 收敛半径r 的求法
【矩阵分析】矩阵幂级数 发散 条件 || 幂级数 与 解析函数 的关系 || 幂级数 收敛半径r 的求法
【矩阵分析】矩阵幂级数 发散 条件 || 幂级数 与 解析函数 的关系 || 幂级数 收敛半径r 的求法
|
存储 算法
【贪心法】最优分解问题
【贪心法】最优分解问题
346 0
【贪心法】最优分解问题
|
存储 算法
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
131 0
算法 |【实验5.3】:一元三次方程的根-连续区间的二分搜索求近似解
|
机器学习/深度学习
UPC-最优分解问题(贪心)
UPC-最优分解问题(贪心)
55 0
|
机器学习/深度学习 Windows
【组合数学】递推方程 ( 常系数线性齐次递推方程 | 常系数、线性、齐次 概念说明 | 常系数线性齐次递推方程公式解法 | 特征根 | 通解 | 特解 )
【组合数学】递推方程 ( 常系数线性齐次递推方程 | 常系数、线性、齐次 概念说明 | 常系数线性齐次递推方程公式解法 | 特征根 | 通解 | 特解 )
364 0