LIN讲义GO在图论中的应用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
精品
LINGO在图论中的应用
图是一种直观形象地描述已知信息的方 式,它使事物之间的关系简洁明了,是分 析问题的有用工具,很多实际问题可以用 图来描述。
一、图的基本概念
图论是以图为研究对象的数学分支,在图论 中,图由一些点和点之间的连线所组成.
称图中的点为顶点(节点),称连接顶点的 没有方向的线段为边,称有方向的线段为弧.所 有线段都没有方向的图称为无向图,所有线段都 有方向的图称为有向图,既有边也有弧的图称为 混合图.
点与边相连接称为关联,与边e关联的顶点称 为该边的端点,与同一条边关联的两个顶点称为 相邻顶点,与同一个顶点关联的边称为相邻边.
具有相同顶点的边称为平行边,两个端点重合 的边称为环.在无向图中,没有环和平行边的图 称为简单图,任意一对顶点都有一条边相连的简 单图称为完全图.任意两个顶点之间有且只有一 条弧相连的有向图称为竞赛图.
N是终点,1是起点, j是与i相联,上一步考察过, 且与终点相通、f(j)为已知的点。
编写LINGO程序如下: model: sets: cities/A,B,C,D,E,F,G/: FL; !定义7个城市; roads(cities,cities)/
A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/: W, P; !定义哪些城市之间有路相联,W为里程,P用 来存放最短路的路径; endsets
WAB+ f(B)=2+4=6 WAC+ f(C)=4+3=7 故A到G的最短路是上述两者的最小值6,可以 写成f(A)=min{WAj+f(j)}=6,j是上一步考察过的两 个点B,C,现在已经到了起点,结束运算,从A到 G的最短路为6。 上述算法可以简写成
f(i)m j {W iinjf(j),}iN1, ,2,1 f(N )0
j1
所有从其它顶点到达该顶点的弧中必然也有一条
弧在最短路上,因而必有:
n
X ji 1
f(B)=min{WBj+f(j)}=4,j是上一步考察过的三个点D,E,F; 同理f(C)=min{WCj+f(j)},而
WCD+ f(D)=2+1=3
WCE+ f(E)=3+3=6
Baidu Nhomakorabea
故F(C)=3;
WCF+ f(F)=1+4=5
第一阶段,出发点只有一个A,从A出发分别经 过B,C,至终点G的里程分别为:
可以用动态规划的方法来求最短路问题,下面 举例说明其算法原理。
2.算法原理
举例:
3
D
1
2
B
3
A
1
E
G
2
3
4
C3
4
1
F
图中A,B,...,G表示7个城市,连线表示城市之间 有道路相通,连线旁的数字表示道路的长度Wij, 现要从城市A到G找出一条最短路线。
该问题有三个阶段,第一阶段从A到B或C,第 二阶段到D,E或F,第三阶段到终点G,我们从终 点向前倒过来找。
无圈的连通图称为树,如果一棵树T包含了图G 的所有顶点,称T为G的生成树.
如果图G的每条边e都对应一个实数C(e),称C(e) 为该边e的权,称图G为赋权图.通常称赋权的有 向图为网络.
二、最短路问题
1.动态规划法
(1)问题的描述
给定N个点Pi(i=1,2,...,n)组成集合{Pi},集合中任 一点Pi到另一点Pj的距离用Wij表示,如果Pi到Pj没 有 弧 联 结 ( 无 通 路 ) , 则 规 定 Wij=+∞ , 又 规 定 , Wii=0 (i=1,2,...,n),指定一个终点PN,要求从Pi点出 发到PN的最短路线。
在图中,两个顶点u和v之间由顶点和边构成的 交错序列(使u和v相通)称为链(通道),没有 重复边的通道称为迹,起点与终点重合的通道称 为闭通道,不重合的称为开通道,没有重复顶点 (必然边也不重复)的开通道称为路,起点与终 点重合的路称为圈(回路).如果顶点u和v之间 存在通道,称u和v是连通的,任意两个顶点都连 通的图称为连通图.
程序中的语句roads(cities,cities)/ A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/: W, P; 定义 的集合称为稀疏集合,本例中cities有7个成员,但 是并非每个城市到其它6个城市都有路相通,只有 部分城市之间有路,故定义衍生集合roads时用列 举法列出有路相通的每对城市 。
一步是i --> j,否则就不是。由此,我们就可方便的确 定出最短路径;
@for(roads(i,j): P(i,j)=@if(FL(i) #eq# W(i,j)+FL(j),1,0));
end
部分计算结果: FL(A) 6 FL(B) 4 FL(C) 3 FL(D) 1 FL(E) 3 FL(F) 4 FL(G) 0 最短路线为 A B D G 以上计算程序是通用程序,对其它图,只需在 此程序基础上对数据作一些修改即可。
2.0-1规划法
用0-1规划法也能求解最短路问题,其思路如 下.
设起点为1,终点为n.引入0-1型决策变量Xij, 如果弧(i , j)在最短路上,则Xij=1,否则Xij=0.
对于除了起点1和终点n以外的任意一个顶点i,
如果,
说明从i出发的所有弧中必然有一条弧
n
在最短路X 上ij 1,也就是说最短路经过该顶点,此时
data: W=2 4 3 3 1 2 3 1 1 3 4;
enddata N=@SIZE(CITIES); FL(N)=0; !终点的F值为0; @for(cities(i) | i #lt# N: FL(i)=@min(roads(i,j):W(i,j)+FL(j)));
!递推计算各城市F值; !显然,如果P(i,j)=1,则点i到点n的最短路径的第
第 三 阶 段 , 从 D,E,F 到 G 的 最 短 路 分 别 为 1,3,4 , 记 为 f(D)=1,f(E)=3,f(F)=4;
第二阶段,与D,E,F有连线的出发点为B和C,从B出发 分别经过D,E,F,至终点G的里程分别为:
WBD+ f(D)=3+1=4
WBE+ f(E)=3+3=6
WBF+ f(F)=1+4=5 故B到G的最短路是上述三者的最小值(4),可以写成
LINGO在图论中的应用
图是一种直观形象地描述已知信息的方 式,它使事物之间的关系简洁明了,是分 析问题的有用工具,很多实际问题可以用 图来描述。
一、图的基本概念
图论是以图为研究对象的数学分支,在图论 中,图由一些点和点之间的连线所组成.
称图中的点为顶点(节点),称连接顶点的 没有方向的线段为边,称有方向的线段为弧.所 有线段都没有方向的图称为无向图,所有线段都 有方向的图称为有向图,既有边也有弧的图称为 混合图.
点与边相连接称为关联,与边e关联的顶点称 为该边的端点,与同一条边关联的两个顶点称为 相邻顶点,与同一个顶点关联的边称为相邻边.
具有相同顶点的边称为平行边,两个端点重合 的边称为环.在无向图中,没有环和平行边的图 称为简单图,任意一对顶点都有一条边相连的简 单图称为完全图.任意两个顶点之间有且只有一 条弧相连的有向图称为竞赛图.
N是终点,1是起点, j是与i相联,上一步考察过, 且与终点相通、f(j)为已知的点。
编写LINGO程序如下: model: sets: cities/A,B,C,D,E,F,G/: FL; !定义7个城市; roads(cities,cities)/
A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/: W, P; !定义哪些城市之间有路相联,W为里程,P用 来存放最短路的路径; endsets
WAB+ f(B)=2+4=6 WAC+ f(C)=4+3=7 故A到G的最短路是上述两者的最小值6,可以 写成f(A)=min{WAj+f(j)}=6,j是上一步考察过的两 个点B,C,现在已经到了起点,结束运算,从A到 G的最短路为6。 上述算法可以简写成
f(i)m j {W iinjf(j),}iN1, ,2,1 f(N )0
j1
所有从其它顶点到达该顶点的弧中必然也有一条
弧在最短路上,因而必有:
n
X ji 1
f(B)=min{WBj+f(j)}=4,j是上一步考察过的三个点D,E,F; 同理f(C)=min{WCj+f(j)},而
WCD+ f(D)=2+1=3
WCE+ f(E)=3+3=6
Baidu Nhomakorabea
故F(C)=3;
WCF+ f(F)=1+4=5
第一阶段,出发点只有一个A,从A出发分别经 过B,C,至终点G的里程分别为:
可以用动态规划的方法来求最短路问题,下面 举例说明其算法原理。
2.算法原理
举例:
3
D
1
2
B
3
A
1
E
G
2
3
4
C3
4
1
F
图中A,B,...,G表示7个城市,连线表示城市之间 有道路相通,连线旁的数字表示道路的长度Wij, 现要从城市A到G找出一条最短路线。
该问题有三个阶段,第一阶段从A到B或C,第 二阶段到D,E或F,第三阶段到终点G,我们从终 点向前倒过来找。
无圈的连通图称为树,如果一棵树T包含了图G 的所有顶点,称T为G的生成树.
如果图G的每条边e都对应一个实数C(e),称C(e) 为该边e的权,称图G为赋权图.通常称赋权的有 向图为网络.
二、最短路问题
1.动态规划法
(1)问题的描述
给定N个点Pi(i=1,2,...,n)组成集合{Pi},集合中任 一点Pi到另一点Pj的距离用Wij表示,如果Pi到Pj没 有 弧 联 结 ( 无 通 路 ) , 则 规 定 Wij=+∞ , 又 规 定 , Wii=0 (i=1,2,...,n),指定一个终点PN,要求从Pi点出 发到PN的最短路线。
在图中,两个顶点u和v之间由顶点和边构成的 交错序列(使u和v相通)称为链(通道),没有 重复边的通道称为迹,起点与终点重合的通道称 为闭通道,不重合的称为开通道,没有重复顶点 (必然边也不重复)的开通道称为路,起点与终 点重合的路称为圈(回路).如果顶点u和v之间 存在通道,称u和v是连通的,任意两个顶点都连 通的图称为连通图.
程序中的语句roads(cities,cities)/ A,B A,C B,D B,E B,F C,D C,E C,F D,G E,G F,G/: W, P; 定义 的集合称为稀疏集合,本例中cities有7个成员,但 是并非每个城市到其它6个城市都有路相通,只有 部分城市之间有路,故定义衍生集合roads时用列 举法列出有路相通的每对城市 。
一步是i --> j,否则就不是。由此,我们就可方便的确 定出最短路径;
@for(roads(i,j): P(i,j)=@if(FL(i) #eq# W(i,j)+FL(j),1,0));
end
部分计算结果: FL(A) 6 FL(B) 4 FL(C) 3 FL(D) 1 FL(E) 3 FL(F) 4 FL(G) 0 最短路线为 A B D G 以上计算程序是通用程序,对其它图,只需在 此程序基础上对数据作一些修改即可。
2.0-1规划法
用0-1规划法也能求解最短路问题,其思路如 下.
设起点为1,终点为n.引入0-1型决策变量Xij, 如果弧(i , j)在最短路上,则Xij=1,否则Xij=0.
对于除了起点1和终点n以外的任意一个顶点i,
如果,
说明从i出发的所有弧中必然有一条弧
n
在最短路X 上ij 1,也就是说最短路经过该顶点,此时
data: W=2 4 3 3 1 2 3 1 1 3 4;
enddata N=@SIZE(CITIES); FL(N)=0; !终点的F值为0; @for(cities(i) | i #lt# N: FL(i)=@min(roads(i,j):W(i,j)+FL(j)));
!递推计算各城市F值; !显然,如果P(i,j)=1,则点i到点n的最短路径的第
第 三 阶 段 , 从 D,E,F 到 G 的 最 短 路 分 别 为 1,3,4 , 记 为 f(D)=1,f(E)=3,f(F)=4;
第二阶段,与D,E,F有连线的出发点为B和C,从B出发 分别经过D,E,F,至终点G的里程分别为:
WBD+ f(D)=3+1=4
WBE+ f(E)=3+3=6
WBF+ f(F)=1+4=5 故B到G的最短路是上述三者的最小值(4),可以写成