图论(一)

基本概念理论

  • 无向图
    一个无向图(undirected graph)G 是由一个非空有限集合V (G)和V (G)中某些元素的 无 序 对 集 合 E(G) 构 成 的 二 元 组 , 记 为 G = (V (G),E(G)) 。其 中
    ( ) { , , , } 1 2 n V G = v v L v 称为图G 的顶点集(vertex set)或节点集(node set), V(G)中的每一个元素 v (i 1,2, ,n) i = L 称为该图的一个顶点(vertex)或节点(node);( ) { , , , } 1 2 m E G = e e L e 称为图G 的边集(edge set),E(G)中的每一个元素 k e (即V(G)中某两个元素 i j v ,v 的无序对) 记为 ( , ) k i j e = v v 或 k i j j i e = v v = v v (k =1,2,L,m),被称为该图的一条从i v 到j v 的边(edge)。
  • 简单图
    如果一个图既没有环也没有两条边连接同一对顶点。
  • 有向图
    与无向图相对应
  • 完全图
    每一对不同顶点都有一条边相连的简单图
  • 二部图
    主要解决匹配指派问题
  • 邻接矩阵
  • 关联矩阵
  • 弧表表示法
  • 邻接表表示法

树的相关问题下一篇再进行相关的讨论

最短路径

  • 迪克斯特拉算法

本算法解决最短路径问题其基本原理解释参考算法原理

matlab运用迪克拉斯算法的时候,通用模板函数需要自己进行编辑,并不是特别的方便在对下图表示的路径问题进行求解的时候
在这里插入图片描述我们编写的MATLAB代码如下,这也是书中的代码:

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(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;

很明显,这个算法如果这样去跑的话,并不是特别方便,好在MATLAB还有专门对图论问题进行解决处理的模块,而且这个模块的可视化效果也是不错的。

clc, clear
a(1,2)=2;a(1,3)=8;a(1,4)=1;
a(2,3)=1;a(2,3)=6;a(2,5)=1;
a(3,4)=7;a(3,5)=5;a(3,6)=1;a(3,7)=2;
a(4,7)=9;
a(5,6)=3;a(5,8)=2;a(5,9)=9;
a(6,7)=4;a(6,9)=6;
a(7,9)=3;a(7,10)=1;
a(8,9)=7;a(8,11)=9;
a(9,10)=1;a(9,11)=2;
a(10,11)=4;
a=a';   %matlab工具箱要求数据是下三角矩阵
[i,j,v]=find(a);
b=sparse(i,j,v,11,11) %构造稀疏矩阵
[x,y,z]=graphshortestpath(b,1,11,'Directed',false) % Directed是标志图为有向或无向的属性,该图是无向图,对应的属性值为false,或0

在本例中,可以看出,如果运用此模块进行解决的话,只需要构建稀疏矩阵就可以了,实现上来讲还是很方便的。

  • Floyd算法

对于最短路径问题的解决,不仅有迪特斯克拉算法这一种,Floyd算法也是解决此问题的经典算法,不过对于我们解决数学建模问题而言,只需要掌握一种求解算法就可以了,本处只进行算法原理的说明,其实该算法的原理还是比较简单的
算法原理
除了上述问题,还有很重要的一点就是要学会用MATLAB来做图论的可视化,这一点很重要,可视化的话可以参照此可视化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值