LINGO在图论中的应用.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LINGO在图论中的应用

第2章 LINGO在图论和 网络模型中的应用 图是一种直观形象地描述已知信息的方式,它使事物之间的关系简洁明了,是分析问题的有用工具,很多实际问题可以用图来描述。 一、图的基本概念 图论是以图为研究对象的数学分支,在图论中,图由一些点和点之间的连线所组成. 称图中的点为顶点(节点),称连接顶点的没有方向的线段为边,称有方向的线段为弧.所有线段都没有方向的图称为无向图,所有线段都有方向的图称为有向图,既有边也有弧的图称为混合图. 点与边相连接称为关联,与边e关联的顶点称为该边的端点,与同一条边关联的两个顶点称为相邻顶点,与同一个顶点关联的边称为相邻边. 具有相同顶点的边称为平行边,两个端点重合的边称为环.在无向图中,没有环和平行边的图称为简单图,任意一对顶点都有一条边相连的简单图称为完全图.任意两个顶点之间有且只有一条弧相连的有向图称为竞赛图. 在图中,两个顶点u和v之间由顶点和边构成的交错序列(使u和v相通)称为链(通道),没有重复边的通道称为迹,起点与终点重合的通道称为闭通道,不重合的称为开通道,没有重复顶点(必然边也不重复)的开通道称为路,起点与终点重合的路称为圈(回路).如果顶点u和v之间存在通道,称u和v是连通的,任意两个顶点都连通的图称为连通图. 无圈的连通图称为树,如果一棵树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的最短路线。 可以用动态规划的方法来求最短路问题,下面举例说明其算法原理。 2.算法原理 举例: 图中A,B,...,G表示7个城市,连线表示城市之间有道路相通,连线旁的数字表示道路的长度Wij,现要从城市A到G找出一条最短路线。 该问题有三个阶段,第一阶段从A到B或C,第二阶段到D,E或F,第三阶段到终点G,我们从终点向前倒过来找。 第三阶段,从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),可以写成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 WCF+ f(F)=1+4=5 故F(C)=3; 第一阶段,出发点只有一个A,从A出发分别经过B,C,至终点G的里程分别为: 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。 上述算法可以简写成 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 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的最短路径的第一步是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)

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档