收藏 分销(赏)

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

上传人:pc****0 文档编号:9443437 上传时间:2025-03-26 格式:DOC 页数:3 大小:46KB 下载积分:10 金币
下载 相关 举报
图与网络模型及方法学习心得.doc_第1页
第1页 / 共3页
图与网络模型及方法学习心得.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
图与网络模型及方法学习心得 摘要:图论起源于18世纪。第一篇图论论文是瑞士数学家欧拉于1736年发表的《哥尼斯堡的七座桥》。1847年,克西霍夫为了给出电网络方程而引进了“树”的概念。1857年,凯莱在计算烷烃的同分异构体时,也发现了“树”。哈密尔顿于1859年提出“周游世界”游戏,用图论的术语,就是如何找出一个连通图中的生成圈。近几十年来,计算机技术和科学的飞速发展,大大促进了凸轮的研究和应用,凸轮的理论和方法已经渗透到物理、化学、通信科学、建筑学、运筹学、生物遗传学、心理学、经济学、社会学等学科中。 图论中所谓的“图”是指某类具体事物和这些事物之间的联系。如果我们用点来表示这些具体的事物,用连接两点的线段(直的或曲的)表示两个事物的特定的联系,就得到了描述这个“图”的几何形象。图论为任何一个包含了二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。哥尼斯堡七桥问题就是一个典型的例子。在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来,问题是要从这块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。 当然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。欧拉为了解决这个问题,采用了建立数学模型的方法。他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”、七条“线”的“图”。问题成为从任一点出发一笔画出七条线再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。 正文:在寒假中,学习了图论这一章以后,对于此类问题的解决方法就是构造一个模型图,再根据图来完成题目的要求。 如page40的例题4.1,某超市在六个城市C1...C6中有分公司,从Ci到Cj的直接航程票价记在下述矩阵的(i,j)位置上。请帮助该公司设计一张城市C1到其他城市间的票价最便宜的路线图。 用矩阵 a n×n( n 为顶点个数) 存放各边权的邻接矩阵, 行向量 pb 、 index1 、 index2 、 d 分别用来存放 P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值。其中分 量 pb(i) = ⎩⎨⎧10 当第当第ii顶点已标号顶点未标号 ; index2 (i) 存放始点到第 i 点最短通路中第 i 顶点前一顶点的序号; d(i) 存放由始点到第 i 点最短通路的值。 求第一个城市到其它城市的最短路径的 Matlab 程序如下: clc,clear a=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,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,index1)); index2(temp)=index1(temp2(1)); end d, 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; % 保存起点到各顶点的最短距离 distance(sb) = 0; parent(1:n) = 0; for i = 1: n-1 temp=distance; id1=find(visited==1); %查找已经标号的点 temp(id1)=inf; %已标号点的距离换成无穷 [t, u] = min(temp); %找标号值最小的顶点 visited(u) = 1; %标记已经标号的顶点 id2=find(visited==0); %查找未标号的顶点 for v = id2 if a(u, v) + distance(u) < distance(v) distance(v) = distance(u) + a(u, v); %修改标号值 parent(v) = u; end end end mypath = []; if parent(db) ~= 0 %如果存在路! t = db; mypath = [db]; while t ~= sb p = parent(t); mypath = [p mypath]; t = p; end end mydistance = distance(db); return
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 应用文书 > 心得体会

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服