图与网络模型及方法学习心得

上传人:飞*** 文档编号:3156839 上传时间:2017-07-30 格式:DOC 页数:3 大小:46KB
返回 下载 相关 举报
图与网络模型及方法学习心得_第1页
第1页 / 共3页
图与网络模型及方法学习心得_第2页
第2页 / 共3页
图与网络模型及方法学习心得_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《图与网络模型及方法学习心得》由会员分享,可在线阅读,更多相关《图与网络模型及方法学习心得(3页珍藏版)》请在金锄头文库上搜索。

1、图与网络模型及方法学习心得摘要:图论起源于 18 世纪。第一篇图论论文是瑞士数学家欧拉于 1736 年发表的哥尼斯堡的七座桥。1847 年,克西霍夫为了给出电网络方程而引进了“树”的概念。1857 年,凯莱在计算烷烃的同分异构体时,也发现了“树”。哈密尔顿于 1859 年提出“周游世界”游戏,用图论的术语,就是如何找出一个连通图中的生成圈。近几十年来,计算机技术和科学的飞速发展,大大促进了凸轮的研究和应用,凸轮的理论和方法已经渗透到物理、化学、通信科学、建筑学、运筹学、生物遗传学、心理学、经济学、社会学等学科中。图论中所谓的“图”是指某类具体事物和这些事物之间的联系。如果我们用点来表示这些具体

2、的事物,用连接两点的线段(直的或曲的)表示两个事物的特定的联系,就得到了描述这个“图”的几何形象。图论为任何一个包含了二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。哥尼斯堡七桥问题就是一个典型的例子。在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来,问题是要从这块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。当然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。欧拉为了解决这个问题,采用了建立数学模型的方法。他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”、七条“线”的“图”。问

3、题成为从任一点出发一笔画出七条线再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。正文:在寒假中,学习了图论这一章以后,对于此类问题的解决方法就是构造一个模型图,再根据图来完成题目的要求。如 page40 的例题 4.1,某超市在六个城市 C1.C6 中有分公司,从 Ci 到Cj 的直接航程票价记在下述矩阵的(i,j)位置上。请帮助该公司设计一张城市 C1 到其他城市间的票价最便宜的路线图。用矩阵a nn( n 为顶点个数) 存放各边权的邻接矩阵, 行向量 pb 、 index1 、 index

4、2 、d 分别用来存放 P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分量pb(i) = 10 当第当第 ii 顶点已标号顶点未标号 ;index2 (i) 存放始点到第 i 点最短通路中第 i 顶点前一顶点的序号; d(i) 存放由始点到第 i 点最短通路的值。求第一个城市到其它城市的最短路径的 Matlab 程序如下:clc,cleara=zeros(6);a(1,2)=50;a(1,4)=40;a(1,5)=25;a(1,6)=10;a(2,3)=15;a(2,4)=20;a(2,6)=25;a(3,4)=10;a(3,5)=20;a(4,5)=10;a(4,6)=25;a

5、(5,6)=55;a=a+a;a(find(a=0)=inf;pb(1:length(a)=0;pb(1)=1;index1=1;index2=ones(1,length(a);d(1:length(a)=inf;d(1)=0;temp=1;while sum(pb)length(a)tb=find(pb=0);d(tb)=min(d(tb),d(temp)+a(temp,tb);tmpb=find(d(tb)=min(d(tb);temp=tb(tmpb(1);pb(temp)=1;index1=index1,temp;temp2=find(d(index1)=d(temp)-a(temp,

6、index1);index2(temp)=index1(temp2(1);endd, index1, index2我们编写的从起点 sb 到终点 db 通用的 Dijkstra 标号算法程序如下:function mydistance,mypath=mydijkstra(a,sb,db);% 输入: a邻接矩阵(aij) 是指 i 到 j 之间的距离,可以是有向的% sb起点的标号, db终点的标号% 输出: mydistance最短路的距离, mypath最短路的路径n=size(a,1); visited(1:n) = 0;distance(1:n) = inf; % 保存起点到各顶点的最

7、短距离distance(sb) = 0; parent(1:n) = 0;for i = 1: n-1temp=distance;id1=find(visited=1); %查找已经标号的点temp(id1)=inf; %已标号点的距离换成无穷t, u = min(temp); %找标号值最小的顶点visited(u) = 1; %标记已经标号的顶点id2=find(visited=0); %查找未标号的顶点for v = id2if a(u, v) + distance(u) distance(v)distance(v) = distance(u) + a(u, v); %修改标号值parent(v) = u;endendendmypath = ;if parent(db) = 0 %如果存在路!t = db; mypath = db;while t = sbp = parent(t);mypath = p mypath;t = p;endendmydistance = distance(db);return

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号