图论模型简介.doc

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

图论模型简介 一、图及其矩阵表示 1、起源:哥尼斯堡七桥问题: 欧拉为了解决这个问题,建立数学模型:陆地——点,桥——边,得到一个有四个“点”,七条“边”的“图”。问题转化为能否从任一点出发一笔画出七条边再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画判定法则:图是连通的,且每个顶点都与偶数条边相关联(这种图称为欧拉图)。由此可以得出结论:七桥问题无解。 2、基本概念: 图(graph):由顶点和边(又称线,边的两端必须是顶点)组成的一个结构。 邻接:一条边的两个端点称是邻接的;关联:边与其两端的顶点称是关联的。 无向图(graph):边无方向的图;有向图(digraph):边有方向的图。 路(path):由相邻边组成的序列,其中中间顶点互不相同。 圈(cycle):首、尾顶点相同的路,即闭路。 连通图(connected graph):图中任意两顶点间都存在路的图。 树(tree):无圈连通图 完全图(complete graph):任意两个顶点之间都有边相连的无向图,记为Kn。 竞赛图(tournament):由完全图给每条边定向而得到的有向图。 二部图(bipartite graph):图的顶点分成两部分,只有不同部分顶点之间才有边相连。 图G的子图H(subgraph):H是一个图,H的顶点(边)是图G的顶点(边)。 网络(Network):边上赋了权的有向图。 3、图的矩阵表示 无向图 有向图 4、著名的图论问题 例1 最短路问题(shortest path problem) 出租车司机要从城市甲地到乙地,在纵横交错的路中如何选择一条最短的路线? 例2 最小生成树问题(minimum-weight spanning tree problem) 为了给小山村的居民送电,每户立了一根电杆,怎样连接可使连线最短? 例3 中国邮递员问题(chinese postman problem) 一名邮递员负责投递某个街区的邮件。如何为他设计一条最短的投递路线? (二部图的)最优匹配问题(optimum matching) 在赋权二部图中找一个权最大(最小)的匹配。 例5 旅行推销员问题(traveling salesman problem-TSP) 一名推销员准备前往若干城市推销产品。如何为他设计一条最短的旅行路线? 例6 网络流问题(network flow problem) 如何在一个有发点和收点的网络中确定具有最大容量的流。 二、求最短路的迪克斯特拉(Dijkstra)算法 基本思想是按距由近到远的顺序,依次确定到的各顶点的最短路和距离。为避免重复并保留每一步的计算信息,采用标号算法。 Dijkstra算法如下: STEP1:,,,,; STEP2:(), - , , 计算,记达到这个最小值的一个顶点为,令; STEP3:若,停止;否则,转STEP2。 例 求右图中从顶点u1到其它各 点的最短路及相应的路径. 求解过程列表如下: 顶点 前驱点 序号 1 2 3 4 5 6 7 8 1 1 6 1 2 5 3 5 1 0 ( ( ( ( ( ( ( 2 2 8 1 ( ( ( ( 3 2 8 ( ( 10 ( 4 8 3 ( 10 ( 5 8 6 10 12 6 7 10 12 7 9 12 8 12 例1 某公司在六个城市中有分公司,从到的直接航程票价记在下述矩阵的位置上。(表示无直接航路),请帮助该公司设计一张城市到其它城市间的票价最便宜的路线图。 解 第一个城市到其它城市的最短路径的Matlab程序如下: clear; clc; M=10000; a(1,:)=[0,50,M,40,25,10]; a(2,:)=[zeros(1,2),15,20,M,25]; a(3,:)=[zeros(1,3),10,20,M]; a(4,:)=[zeros(1,4),10,25]; a(5,:)=[zeros(1,5),55]; a(6,:)=zeros(1,6); a=a+a; pb(1:length(a))=0;pb(1)=1; % 永久标号点 index1=1; % 标记确定为永久标记的次序 index2=ones(1,length(a)); % 标记最短路上各点的先驱

文档评论(0)

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

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

1亿VIP精品文档

相关文档