最新实验4 Lingo求解最短路最小树问题备课讲稿
最小生成树问题说课讲解

7
11
2020/5/25
V4
∴最小树的权为24,最小树为 Tree={v1v2,v1v3,v2v5,v5v6,v6v7,v6v4}
边可能删去几条,但T必须是树[当然如G不是连通图,则没有支撑树]。 最小树:赋权的连通图G的众多支撑树中必至少有一,其各边权之和为
最小的,它就叫G的一棵最小支撑树或最小生成树;简称最小树或最短 树[管线铺设]。 最小树的存在性:赋权的连通图G =(V,E),记m=|E|, n=|V|,支撑树T的 边数|E(T)|=n-1,E(T)必为V的n-1元子集,显然这种子集合最多 个,所以支撑树是有限的,其权组成有限集,必有最小的[但可能C mn不1 唯 一]。
2020/5/25
用Kruskal算法求最小树
用Kruskal算法(避圈法)求赋权连通图G的最小树
V2
5
V6
4
2
9
12
V1
3
8
V3
6
4
5
6
V5
V7
10 的权为24,最小树为 T={v1v2,v1v3,v2v5,v5v6,v6v7,v6v4}
Prim法求最小支撑树
t←t+1, k←k+1,转S3 S6:输出T及w,结束。 T为最小树,w为T的权。这个算
法叫Kruskal算法(避圈法)
START
E的权排序w1≤w2≤…≤wm w←0,T←φ,k←1,t←0
t=n-1?
Y
N
T’←T∪{ek}
T’成圈? N
END
Y
T←T+ {ek},
k←k+1 w←w+wk,
t←t+1,k←k+1
LINGO软件求解最短路问题示例

西安邮电大学现代邮政学院Xi'an post and telecommunications university modern post CollegeLINGO软件求解最短路问题最短路问题最短路问题:给定赋权有向图D=(V,A),最短路问题就是要在所有从v s到v t的路中,求一条权最小的路,最短路的权简称为从v s到v t的距离。
应用:可以直接应用于解决生产实际的许多问题,如管道铺设、线路安排、厂区布局、设备更新等,还经常被作为一个基本工具,用于解决其它的优化问题。
例 题下图,给定一个线路网络,两点之间连线上的数字表示两点间的距离,求一条从A到G的铺管线路,使总距离最短。
AB 1B 2C 1C 2C 3C 4D 1D 2D 3E 1E 2E 3F 1F 2G538761366835338422123335526643LINGO输入程序设:A为顶点城市1,B 1为2,B 2为3,C 1为4,C 2为5,C 3为6,C 4为7,D 1为8,D 2为9,D 3为10,E 1为11,E 2为12,E 3为13,F 1为14,F 2为15,G为16。
12345678910111213141516MODEL :[1]SETS :! We have a network of 16 cities. We want to find the length of the shortest route from city 1 to city 16. ;! Here is our primitive set of sixteen cities, where F(i) represents the shortest path distance from city i to the last city;[2]CITIES/1..16/:F;! The derived set ROADS lists the roads that exist between the cities (note: not all city pairs are directly linked by a road, and roads are assumed to be one way.);[3]ROADS(CITIES,CITIES) /[4]1,2 1,3 2,4 2,5 2,6 3,5 3,6 3,7 4,8 4,9 5,8 5,9 6,9 6,10 7,9 7,10[5]8,11 8,12 9,12 9,13 10,12 10,13 11,14 11,15 12,14 12,15 13,14 13,15[6]14,16 15,16 /:D;! D(i,j) is the distance from city i to j;[7]ENDSETS [8]DATA :! Here are the distance that correspond to the above links;[9]D=[10]5 3 1 3 6 8 7 6 6 8 3 5 3 3 8 4[11]2 2 1 2 3 3 3 5 5 2 6 6[12]4 3;[13]ENDDATA! If you are already in City 16,then the cost to travel to city 16 is 0;[14]F(@SIZE (CITIES))=0;!The shortest distance from City 1 to City 16 is the minimum over all cities j reachable from i of the sum of the distance from i to j plus the minimal distance from j to City 16;[15]@FOR (CITIES(i)|i#LT#@SIZE (CITIES):[16]F(i)=@MIN (ROADS(i,j):D(i,j)+F(j)));END集合段数据段运算式LINGO软件求解结果Variable ValueF( 1) 18.00000F( 2) 13.00000F( 3) 16.00000F( 4) 13.00000F( 5) 10.00000F( 6) 9.000000 F( 7) 12.00000F( 8) 7.000000 F( 9) 6.000000 F( 10) 8.000000 F( 11) 7.000000 F( 12) 5.000000 F( 13) 9.000000 F( 14) 4.000000 F( 15) 3.000000 F( 16) 0.000000Variable ValueD( 1, 2) 5.000000D( 1, 3) 3.000000D( 2, 4) 1.000000D( 2, 5) 3.000000D( 2, 6) 6.000000D( 3, 5) 8.000000D( 3, 6) 7.000000D( 3, 7) 6.000000D( 4, 8) 6.000000D( 4, 9) 8.000000D( 5, 8) 3.000000D( 5, 9) 5.000000D( 6, 9) 3.000000D( 6, 10) 3.000000D( 7, 9) 8.000000D( 7, 10) 4.000000D( 8, 11) 2.000000D( 8, 12) 2.000000D( 9, 12) 1.000000D( 9, 13) 2.000000D( 10, 12) 3.000000D( 10, 13) 3.000000D( 11, 14) 3.000000D( 11, 15) 5.000000D( 12, 14) 5.000000D( 12, 15) 2.000000D( 13, 14) 6.000000D( 13, 15) 6.000000D( 14, 16) 4.000000D( 15, 16) 3.000000点1到最后一个点(点16)的最短路的长度(距离)为18。
《最短路问题》课件

3 最短路问题的历史
渊源
最短路问题最早由荷兰 数学家 Edsger Dijkstra 在 1956 年提出。
最短路问题的定义
图论中的最短路问 题指什么?
在无向连通图或有向连通图 中,从某一起点到其余各顶 点的最短路径。
什么是路径长度?
路径长度是指路径上边或弧 的权值之和。
什么是无环图?
无环图指不存在环的图,可 以用拓扑排序求解最短路。
《最短路问题》PPT课件
欢迎来到最短路问题的世界。在本课件中,我们将介绍四种最短路算法及其 应用,并分析它们的优缺点。
问题背景
1 什么是最短路问题? 2 为什么需要解决最
短路问题?
最短路问题是计算从源 节点到目标节点的最短 路径的问题。它是图论 中的一个经典算法问题。
很多实际问题都涉及到 最短路径的计算,比如 电网、交通、通信等领 域。
Floyd-Warshall算法解决的是所有点对之间 的最短路径问题,可以处理有向图或负边权 图。
Bellman-Ford算法
Bellman-Ford算法解决的是有向图中含有负 权边的单源最短路径问题。
A*算法
A*算法综合了贪心和广度优先搜索,在启发 函数的帮助下,可以高效解决带权图上的单 源最短路径问题。
算法示例
1
Step 1
假设我们要求从 A 点到其他各点的最
Step 2
2
短路径。
首先初始化 A 点到其他各点的距离为
无穷大,A 点到自身的距离为 0。
3
Step 3
找到 A 点的直接邻居,更新其距离值。
Step 4
4
重复 Step 3,直到所有节点的距离值 都已经更新。
总结
最小树问题

6.3.1 狄克斯特拉算法 (Dijkstra algorithm, 1959) 计算两节点之间或一个节点到所有节点之间的最短路 令 dij 表示 vi vj 的直接距离(两点之间有边),若两点之间 没有边,则令 dij = ,若两点之间是有向边,则 dji = ; 令 dii = 0,s 表示始点,t 表示终点 • 对每个节点,用两种标号:T和P,表示从始点到该节点的距 离,P是最短距离(权),为永久标号,T是目前路径的距离,是 临时标号。 • 通过不断改进T值,当其最小时,将其改为P标号。 • 开始时,令始点有P=0的P标号,其它节点为T=+ .
•(3)Kruskal 算法:将图中所有边 v1 按权值从小到大排列,依次选 1 所剩最小的边加入边集 T,只 v8 要不和前面加入的边构成回路, 5 直到 T 中有 n1 条边,则 T 是最小生成树
v7
4
v2
1
v3
2
4 5
1
3
4
1
v4 5 v5
v0 2 3 v6 2 4
图的矩阵表示
将图的几何形状转化为代数矩阵形式,可大 大方便计算机对图的处理与运算。 1、无权图的矩阵表示:
6.2.3 最小生成树
v5 9 v6 17 10 8 7 11 v4 16 v3 9.5 v2 v1 10
12 7 19.5
10 16 11 10 17 10 9.5 19.5 16 9.5 7 12 7 8 7 11 10 8 9 17 19.5 12 7 9
寻找连通图支撑树的方法有“破圈法”。就是从图中 任取一个圈,去掉一条边。再对剩下的图重复以上步 骤,直到不含圈时为止,这样就得到一个支撑树。 例4 用破圈法求出下图的一个支撑树。 v2 e1 v1 e2 v3 e3 e4 e7 e8 e6 v5
最小树问题VS最短路问题

2
i 1 j 1 8 8
a67
x12 x13 x24 x34 3; x34 x36 x47 x67 3; x47 x45 x78 x58 3; x x x x x x 5; 12 13 24 47 36 67 st x x x x x x 5; 36 34 45 58 78 67 x12 x13 x36 x67 x78 x58 x45 x24 7; x 7; ij ij xij 8; j=1ٛ 8) 0或1;(i=1ٛ
最小树问题 • 已知有六个城市,它们之间 要 架设电话线,要求任意两个城 市均可以互相通话,并且电话 线的总长度最短
最短路问题(SPP-Shortest Path Problem)
• 一名货柜车司机奉命在最短的时间内将一 车货物从甲地运往乙地. 从甲地到乙地的公 路网纵横交错,因此有多种行车路线,这 名司机应选择哪条线路呢? • 假设货柜车的运行速度是恒定的,那么这 一问题相当于需要找到一条从甲地到乙地 6 B D 的最短路. 6 5
A 7 C 4至v7点的最短路问题归结为求解整数规划问题。 1
v2
v5 v4 2 3 3 4 v6 4 v7
最短路问题
• 城市中的管道铺设,线路安排,工 厂布局,设备更新,选址问题
min Z aij xij
i 1 j 1 7 7
9
v1
5 v3
2 8
8
1, 最短路径弧(i, j ); 解:设xij 0, 否则
7
x12 x13 1; x12 x 23 x 24 x 25; x13 x 23 x34 x36; x 24 x34 x 45 x 46; st x 25 x 45 x65 x57; x36 x 46 x65 x 67; x57 x67 1; xij 0或1, (i 1…7;j=1
最短路问题实验PPT学习教案

(4) 若 S φ,转 2,否则,停止. 用上述算法求出的 l(v) 就是 u0 到 v 的最短路的权,从 v 的父亲标记
z(v) 追溯到 u0 , 就得到 u0 到 v 的最短路的路线.
第3页/共27页
l(ui )
u1 u2 u3 u4 u5 u6 u7
u8
最后标记: l(v)
z (v)
02
17
u1 u1
u1
u6
3
6 9 12
u2
u5
u4
u5
u2
u5
u1
u4
u6
u8
u3
u7
第6页/共27页
w=[ ];
function [l,z]=Dijkstra(W) n = size (W,1); for i = 1 :n l(i)=W(1,i); z(i)=1; end i=1; while i<=n for j =1 :n
对每个顶点,定义两个标记( l(v) , z(v) ),其中: l(v) :表从顶点 u0 到 v 的一条路的权. z(v) :v 的父亲点,用以确定最短路的路线
算法的过程就是在每一步改进这两个标记,使最终 l(v) 为从顶点
u0 到 v 的最短路的权. S:具有永久标号的顶点集
输入: G 的带权邻接矩阵 w(u, v)
第16页/共27页
一 、 可 化 为 最短路 问题的 多阶段 决策问 题
最短路的应用
二、 选 址 问 题 1、 中 心 问 题 2、 重 心 问 题
第17页/共27页
例:企业要制定一台重要设备 更新的五年计划,目标是使总 费用(购置费用和维修费用之 和)为最小。此设备在各年初 价格及使用期中所需维修数据 如下:
利用LinGo求解几种有向图最短路问题

(Fujian Communication Technology College Basic Courses Department, Fuzhou Fujian 350007)
Abstract: In this paper, there are several shortest paths to the weighted graph using Lingo software path length and the solution, and analyzed with a simple solution Lingo place and how to empower a directed graph of the negative rights. Provides a good way to solve this kind of this problem.
CAI Ze- huan,LI Xiang- fu
(Xiangfan Vocational and Technical College, Xiangfan Hubei 441050, China)
Abstract: This paper presents methods to achieve training standards for the effective connection with the needs of employers from five aspects, which is on the basis of vocational education in the training standards and the employer needs the existence of dislocation.
路的优点在于,程序书写简单易懂,容易掌握,答案 直观明了,比传统解题节约不少时间。Lingo不仅仅 在线性规划解题方面有其独特的优越性,在图论解 题中也有其可取之处,简便易懂的程序取得意想不 到的效果。
4.3 图论中最优树问题的Lingo求解

图论中最优树问题的Lingo求解树连通且不含圈的无向图称为树.常用T表示。
树中的边称为树枝,树中度为1的顶点称为树叶图1 树的示例在许多实际问题中,如在许多城市间建立公路网、输电网或通信网络,都可以归结为赋权图的最优树问题。
如在一个城市中,对若干个居民点要供应自来水,已经预算出连接各点间管道的造价,要求给出一个总造价最小的铺设方案。
图论中最优树的的求解通常有两种算法:Kruskal算法(或避圈法)和Prim算法(破圈法). 这里我们给出利用LINGO求解最优树的方法。
总线性规划模型为:问题1 某有10个城镇见下图,它们之间的距离见表1。
城镇1处有一条河流,现需要从各城镇之间铺设管道,使城镇1处的水可以输送到各城镇,求铺设管道最少的设计方式。
表1 10个地区之间的距离(单位:公里)地区12345678910 10859121412161722 28091516811181422 359079117121217 4915703171071515 5121693081061515 6148111780914816 7121171010908611 81618127614801111 917141225158611010 102222171515161111100该问题实际上是求从点1出发的最优树问题。
Lingo实现程序为:! 最优树的Lingo程序; model:sets:point/1..10/:u;link(point,point):d,x; endsetsdata:d=0,8,5,9,12,14,12,16,17,22, 8,0,9,15,16,8,11,18,14,22, 5,9,0,7,9,11,7,12,12,17, 9,15,7,0,3,17,10,7,15,15,12,16,9,3,0,8,10,6,15,15,14,8,11,17,8,0,9,14,8,16,12,11,7,10,10,9,0,8,6,11,16,18,12,7,6,14,8,0,11,11,17,14,12,25,15,8,6,11,0,10,22,22,17,15,15,16,11,11,10,0; @text()=@writefor(link(i,j)|x(i,j) #GT#0:'x(',i,',',j,')=',x(i,j),' ');enddatamin=@sum(link(i,j)|i#ne#j:d(i,j)*x(i,j));n=@size(point);@sum(point(j)|j#gt#1:x(1,j))>=1;@for(point(i)|i#ne#1:@sum(point(j)|j#ne#i:x(j,i))=1); @for(link(i,j):@bin(x(i,j)));@for(link(i,j)|i#ne#j:u(i)-u(j)+n*x(i,j)<=n-1); !不构成圈;end结果为minZ=60x(1,2)=1 x(1,3)=1 x(3,4)=1 x(4,5)=1x(9,6)=1 x(3,7)=1 x(7,9)=1 x(5,8)=1x(9,10)=1故最优树(最佳铺设管道方式)见图.谢谢!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)最短路问题 假设有向图有 n 个顶点。现需要求从顶 点 V1 到顶点 Vn 的最短路。设决策变量为 xij ,当 xij 1,说明弧 (Vi,Vj)位于顶点 V1 到顶点 Vn 的最短路上;否则 xij 0 ,则求 V1 到 Vn 的最短路的数学模型为:
n
xij
1, j 2,3,...,n,i
j
i1
s.t. n x1j 1,
j2
uu1j
0,1ui uk xkj
n1,i 2,3,...,n. (n2)(1 xkj ) (n3)xjk
,k
1,...,
Байду номын сангаас
n,
j
2,...,n,
j
k
min=@sum(link:dist*x);
u(1)=0;
@for(link:@bin(x));
roads(cities, cities)/
A,B1 A,B2 B1,C1 B1,C2 B1,C3 B2,C1 B2,C2
B2,C3
C1,D C2,D C3,D/: w, x; endsets
min
w ij xij
(V i ,V j ) E
data: w = 2 4 3 3 1 2 3 1 1 3 4; enddata n=@size(cities);
2.000000
0.000000
2.000000
0.000000
3.000000
0.000000
4.000000
0.000000
5.000000
0.000000
X( 1, 2) X( 2, 3) X( 2, 4) X( 4, 5) X( 5, 6) X( 6, 7)
1.000000 1.000000 1.000000 1.000000 1.000000 1.000000
例题 1-1 在下图中,用点表示城市,现有 A,B1,B2, C1,C2,C3,D 共 7 个城市,点与点之间的连线表示 城市间有道路相连,连线旁的数字表示道路的长度。 现计划从城市 A 到称市 D 铺设一条天然气管道,请设 计出最小价格管道铺设方案。
sets:
cities/A, B1, B2, C1, C2, C3, D/;
@for(city(k)|k #gt# 1:u(k)>=1;u(k)<=n-1-(n-2)*x(1,k););
Variable
Value N
U( 2) U( 3) U( 4) U( 5) U( 6) U( 7)
Reduced Cost
7.000000
0.000000
1.000000
0.000000
@sum(roads(i,j): x(i,j)) = @sum(roads(j,i): x(j,i)));
@sum(roads(i,j)|i #eq# 1 : x(i,j))=1;
(2)最小生成树问题
设无向图是连通的,且互不包有圈,则称该图为树。如果 有向图中任何一点都可由某一个顶点 V1 到达,则称V1 为图 G 的根。如果有向图 G 有根。且关于它的基础图是树,则称 G 为有向树。
min
wij xij
(Vi ,V j )E
(P1)
1, i 1
n
s.t. xij
n x ji 1, i n
j 1 (Vi ,V j )E
j 1 (V j ,Vi )E
0, i 1, n
xij 0,(Vi ,Vj ) E
其中 E 为有向图的所有弧的集合, wij 为弧(Vi,Vj)的权.
解:节点 1 表示树根,点 i 与 j 的距离用 cij 表示,当两个 节点之间没有线路相通时,两点之间的距离用很大的数 M
表示。引入 0-1 变量 xij : xij 1(i j) 表示从 i 到 j 的边在
架设线路中, xij 0(i j) 表示该边不在线路中,则架线
方案可以归结为求上述赋权图的最小生成树。数学模型可 表示为[5]:
若G' 是包含 G 的全部顶点的子图,它又是树,则称G' 的生
成树。若图 G(V , E) 是一个连通赋权图,T 是 G 的一颗生成树,
T 的每条边所赋权的和称为树 T 的权,称具有最小权的生成
v 树为 G 的最小生成树。
1
v2
v3 v4
v5 v6
例1-2 假设某电力公司在7个村庄之间架设电线, 各村庄之间的距离如下图所示,试求出使电线总长度最 小的架线方案。
@for(city(k)|k #GT# 1:@sum(city(i)|i #ne# k:x(i,k))=1;
@for(city(j)|j #gt# 1 # and # j #ne# k:u(j)>=u(k)+x(k,j)-(n-2)*(1-
x(k,j))+(n-3)*x(j,k);););
@sum(city(j)|j # GT # 1:x(1,j))>=1;
nn
minz
cij xij
i1 j1
n
xij 1, j 2,3,...,n,i j
i1
s.t. n x1j 1,
j2
u1 uj
0,1 ui uk xkj
n1,i 2,3,...,n. (n2)(1xkj )(n3)xjk,k
1,...,n,
j
2,...,n,
j
k
model:
sets:
1, i 1
n
s .t .
xij
n
x ji
1,
i
n
j1 (V i ,V j ) E
j1 (V j ,V i ) E
0, i 1, n
min=@sum(roads: w*x);
xij 0, (Vi ,V j ) E
@for(cities(i) | i #ne# 1 #and# i #ne# n:
city /1..7/:u;
link(city,city):dist,x; endsets n=@size(city);
nn
minz cijxij i1 j1
data: dist=0 3 4 7 100 100 100
3 0 3 2 4 100 100 4 3 0 100 5 7 100 7 2 100 0 2 100 6 100 4 5 2 0 1 4 100 100 7 100 1 0 2 100 100 100 6 4 2 0; enddata
3.000000 3.000000 2.000000 2.000000 1.000000 2.000000
从上述求解报告得到最优架设线路 为1-2-3,2-4-5-6-7,总长度为13。