目录

一、引入图论

二、图的基本概念与数据结构

1.基本概念

2.图与网络结构

1.邻接矩阵表示法

2.稀疏矩阵表示法

三、最短路径问题

1、迪杰斯特拉(Dijkstra)算法

2、贝尔曼-福特(Bellman-Ford)算法

3、弗洛伊德(Floyd)算法


一、引入图论

图论起源于18世纪,近几十年来,计算机技术与科学的飞速发展,大大促进了图论的研究与应用,图论的理论和方法已经渗透到物理、化学、通信科学、建筑学、运筹学、生物遗传学、心理学、经济学、社会学等学科中。
        图论所谓的“图”是指某类具体事物和这些事物之间的联系。如果用点表示这些具体事物,用连接两点的线段(直的或者曲的)表示这两个事物的特定的联系,就得到了描述这个“图”的几何形象。图论为任何一个包含了一种二元关系的离散系统提供了一个数学模型,借助于图论的概念、理论和方法,可以对该模型求解。哥尼斯堡七桥问题就是一个典型的例子。在哥尼斯堡有七座桥将普莱格尔河中的两个岛及岛与河岸联结起来,问题是要从这四块陆地中的任何一块开始通过每一座桥正好一次,再回到起点。

当然可以通过试验去尝试解决这个问题,但该城居民的任何尝试均未成功。欧拉为了解决这个问题,采用了建立数学模型的方法。他将每一块陆地用一个点来代替,将每一座桥用连接相应两点的一条线来代替,从而得到一个有四个“点”、七条“线”的“图”。问题成为从任一点出发一笔画出七条线再回到起点。欧拉考察了一般一笔画的结构特点,给出了一笔画的一个判定法则,得到了“不可能走通”的结果,不但彻底解决了这个问题,而且开创了图论研究的先河。


二、图的基本概念与数据结构

1.基本概念

直观地讲,对于平面上的n个点,把其中的一些点对用曲线或直线连接起来,不考虑点的位置与连线曲直长短,这样形成的一个关系结构就是一个图。记成G=(V,E),V是以上述点为元素的顶点集,E是以上述连线为元素的边集。
        各条边都加上方向的图称为有向图,否则称为“无向图”。如果有的边有方向,有的边无方向,则称为混合图。
        任两顶点间最多有一条边,且每条边的两个端点皆不重合的图,称为简单图
        如果图的两顶点间有边相连,则称此两顶点相邻,每一对顶点都相邻的图称为完全图,否则称为非完全图,完全图记为K|v|。

2.图与网络结构

1.邻接矩阵表示法

2.稀疏矩阵表示法


三、最短路径问题

数模新版视频课程第8讲.图论最短路径问题_数学建模学习交流的博客-CSDN博客数模新版视频课程第8讲.图论最短路径问题https://blog.csdn.net/qq_32589267/article/details/99701702?spm=1001.2014.3001.5502

1、迪杰斯特拉(Dijkstra)算法

【不想整理了】

2、贝尔曼-福特(Bellman-Ford)算法

【不想整理了】

3、弗洛伊德(Floyd)算法

function [dist,path] = Floyd_algorithm(D)
%% 该函数用于求解一个权重邻接矩阵任意两个节点之间的最短路径
% 输入:
%        D是权重邻接矩阵
% 输出:
%        dist是最短距离矩阵,其元素dist_ij表示表示i,j两个节点的最短距离
%        path是路径矩阵,其元素path_ij表示起点为i,终点为j的两个节点之间的最短路径要经过的节点n = size(D,1);  % 计算节点的个数% 初始化dist矩阵
dist = D;% 下面我们来初始化path矩阵
path = zeros(n);
for j = 1:npath(:,j) = j;   % 将第j列的元素变为j
end
for i = 1:npath(i,i) = -1;  % 将主对角线元素变为-1
end% 下面开始三个循环
for k=1:n    % 中间节点k从1- n 循环for i=1:n     % 起始节点i从1- n 循环for j=1:n    % 终点节点j从1-n 循环if dist(i,j)>dist(i,k)+dist(k,j)  % 如果i,j两个节点间的最短距离大于i和k的最短距离+k和j的最短距离dist(i,j)=dist(i,k)+dist(k,j);  % 那么我们就令这两个较短的距离之和取代i,j两点之间的最短距离path(i,j)=path(i,k);   % 起点为i,终点为j的两个节点之间的最短路径要经过的节点更新为path(i,k)% 注意,上面一行语句不能写成path(i,j) = k; 这是网上很多地方都容易犯的错误,在PPT11页中会告诉大家为什么不能这么写endendend
endend% %清风代码

%code1.m
% 首先将图转换为权重邻接矩阵D
n = 5;  %一共五个节点
D = ones(n) ./ zeros(n);  % 全部元素初始化为Inf
for i = 1:nD(i,i) = 0;  % 主对角线元素为0
end
D(1,2) = 3;
D(1,3) = 8;
D(1,5) = -4;
D(2,5) = 7;
D(2,4) = 1;
D(3,2) = 4;
D(4,3) = -5;
D(5,4) = 6;
D(4,1) = 2;%% 调用Floyd_algorithm函数求解
[dist,path] = Floyd_algorithm(D)print_path(path,dist,1,5)
print_path(path,dist,1,4)
print_path(path,dist,3,1)clc
disp('下面我们打印任意两点之间的最短距离:')
print_all_path(D)% %清风视频文件

function [] = print_path(path,dist,i,j)
%% 该函数的作用是打印从i到j经过的最短路径
% 输入:
%        path是使用floyd算法求出来的路径矩阵
%        dist是使用floyd算法求出来的最短距离矩阵
%        i是起始节点的编号
%        j是终点节点的编号
% 输出:无if i == jwarning('起点和终点相同,请检查后重新输入')  % 在屏幕中提示警告信息return;  % 不运行下面的语句,直接退出函数
end
if path(i,j) == j   % 如果path(i,j) = j,则有两种可能:
% (1)如果dist(i,j) 为 Inf , 则说明从i到j没有路径可以到达if dist(i,j) == Infdisp(['从',num2str(i),'到',num2str(j),'没有路径可以到达'])
% (2)如果dist(i,j) 不为 Inf , 则说明从i到j可直接到达,且为最短路径elsedisp(['从',num2str(i),'到',num2str(j),'的最短路径为'])disp([num2str(i),' ---> ',num2str(j)])disp(['最短距离为',num2str(dist(i,j))])end
else  % 如果path(i,j) ~= j,则说明中间经过了其他节点:k = path(i,j);result = [num2str(i),' ---> '];  % 初始化要打印的这个字符串while k ~= j  % 只要k不等于j, 就一直循环下去result = [result , num2str(k) , ' ---> ' ];  % i先走到k这个节点处k = path(k,j);endresult = [result , num2str(k)];disp(['从',num2str(i),'到',num2str(j),'的最短路径为'])disp(result)disp(['最短距离为',num2str(dist(i,j))])
endend% % 清风数学建模学习交流

function [] = print_all_path(D)
%% 该函数的作用是求解一个权重邻接矩阵任意两个节点之间的最短路径,并打印所有的结果出来
% 输入:
%        D是权重邻接矩阵
% 输出:无[dist,path] = Floyd_algorithm(D);   % 调用之前的Floyd_algorithm函数
n = size(D,1);
if n == 1warning('请输入至少两阶以上的权重邻接矩阵')   % 在屏幕中提示警告信息return;   % 不运行下面的语句,直接退出函数
endfor i = 1:nfor j = 1:nif i ~= j  % 不等号用~=表示print_path(path,dist,i,j);   % 调用之前的print_path函数disp('-------------------------------------------')disp('  ')endend
endend% % 清风数学建模课程


摘抄【仅作为自己回忆笔记】:

1、【课本】司守奎 《数学建模算法与应用》 第二版

2、清风数学建模课程。

[数学建模]图论之最短路径问题相关推荐

  1. 数学建模图论算法学习总结

    数学建模图论算法学习总结 图论基本知识 B站视频: https://www.bilibili.com/video/av18374161/?p=35 https://www.bilibili.com/v ...

  2. 数学建模 图论最短路径问题

    1.图的基本概念 图论中的图(Graph)是由若干给定的点及连接两点的线 所构成的图形,这种图形通常用来描述某些事物之间的某种 特定关系,用点代表事物,用连接两点的线表示相应两个事 物间具有这种关系. ...

  3. Python小白的数学建模课-17.条件最短路径算法

    条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...

  4. Python小白的数学建模课-15.图论的基本概念

    图论中所说的图,不是图形图像或地图,而是指由顶点和边所构成的图形结构. 图论不仅与拓扑学.计算机数据结构和算法密切相关,而且正在成为机器学习的关键技术. 本系列结合数学建模的应用需求,来介绍 Netw ...

  5. Python小白的数学建模课-22.插值方法

    Python小白的数学建模课-22.插值方法 插值.拟合.回归和预测,都是数学建模中经常提到的概念,也经常被混淆. 插值,是在离散数据的基础上补插连续函数,使得插值函数通过全部给定的离散数据点,多用于 ...

  6. A6.2021年全国数学建模竞赛C题分析-生产企业原材料的订购与运输

    Python小白的数学建模课-A6.2021年全国数学建模竞赛 C题分析. 2021全国大学生数学建模 赛题将于9月9日18时公布. 『Python小白的数学建模课 @ Youcans』带你从数模小白 ...

  7. A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析)

    A5.2021年全国数学建模竞赛B题-赛题分析与评阅要点(乙醇偶合制备C4烯烃分析),本文转载竞赛赛题.评阅要点,进行赛题解读和分析. 评阅要点为竞赛组委会官方公布,完整体现了解题思路. 本文首发于 ...

  8. A4.2021年全国数学建模竞赛A题-赛题分析与评阅要点(FAST主动反射面的形状调节)

    Python小白的数学建模课-A4.2021年全国数学建模竞赛A题(FAST主动反射面的形状调节),本文转载竞赛赛题.评阅要点,进行赛题解读和分析. 评阅要点为竞赛组委会官方公布,完整体现了解题思路. ...

  9. Python小白的数学建模课-23.数据拟合全集

    拟合是用一个连续函数(曲线)靠近给定的离散数据,使其与给定的数据相吻合. 数据拟合的算法相对比较简单,但调用不同工具和方法时的函数定义和参数设置有所差异,往往使小白感到困惑. 本文基于 Scipy 工 ...

最新文章

  1. 报名 | 首期AI Time PhD:听清北师兄分享前沿研究成果!
  2. CSharpGL(5)解析3DS文件并用CSharpGL渲染
  3. mysql 自关联的子孙查询,Mysql自连接查询实例详解
  4. 更新失败无法连接更新服务器未响应,逆水寒客户端更新失败_长时间停滞未响应相关问题解答[图]...
  5. c++中的类型转换--reinterpret_cast
  6. YbtOJ#912-神秘语言【结论,欧拉定理】
  7. PL/SQL Developer连接Oracle 11g在Win8 64位系统下乱码
  8. github仓库建立及配置教程新手教程
  9. 重磅:《Python可以这样学》正式出版
  10. 怎么提供专利技术交底书
  11. 全国计算机等级考试wps视频,全国计算机等级考试一级WPS-Office
  12. 年会抽奖程序:200行HTML+JavaScript写个桌面程序
  13. 患癌女子为生女儿放弃治疗 圆母亲梦后离世
  14. 最近很火!一名移动互联网员工写给老婆的信
  15. 鸿蒙系统就是个垃圾系统,华为鸿蒙系统是什么?鸿蒙系统和安卓系统有什么区别?...
  16. 计算机读不了硬盘分区,电脑开机后读不到硬盘怎么办
  17. 译——项目管理铁三角(The Iron Triangle of project management)
  18. 对标西湖大学,年薪60万博士后招聘来了
  19. 西工大-软件学院-2021复试-面试题目
  20. latex中的三种字体格式

热门文章

  1. 移动视频开发让我们把会议室装进口袋里
  2. 选购一台计算机得出三条建议,5000元的预算,买组装电脑还是笔记本电脑?我给你三个建议!...
  3. 游戏系统开发笔记(九)——构建战斗系统
  4. 使用poi读取Excel中的数据到数据库
  5. 海贼王关于团队的概念
  6. 共享充电宝行业面临狼来了,新进入者疑似滥用垄断权力
  7. adc量化单位_什么是量化单位
  8. PowerPC uboot交叉编译环境搭建说明
  9. 苏嵌//季宇晨//2018.7.10
  10. 应用下载需警惕,“猜你妹”病毒潜伏应用市场伺机刷流氓应用