【数学建模】图与网络 提纲 & matlab代码
来源:互联网 发布:合肥软件培训机构 编辑:程序博客网 时间:2024/05/22 15:18
表示方法
- 邻接矩阵(adjacency matrix)
- 关联矩阵
- 弧表
- 星形
最短路径
Dijkstra
从一点到各个顶点的最短路径
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 、index1 、index2 、d 分别用来存放%P 标号信息、标号顶点顺序、标号顶点索引、最短通路的值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));%记录该点上一个位子endd, index1, index2
Floyd算法
每对顶点之间的最短路径(可用多次Dijkstra实现)
clear;clc;n=6; a=zeros(n);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'; M=max(max(a))*n^2; %M为充分大的正实数a=a+((a==0)-eye(n))*M;path=zeros(n);for k=1:nfor i=1:nfor j=1:nif a(i,j)>a(i,k)+a(k,j)a(i,j)=a(i,k)+a(k,j);path(i,j)=k;endendendenda, path
最小生成树
Prim
找最小边 pv,其中 p∈ P,v∈V ? P
clc;clear;a=zeros(7);a(1,2)=50; a(1,3)=60;a(2,4)=65; a(2,5)=40;a(3,4)=52;a(3,7)=45;a(4,5)=50; a(4,6)=30;a(4,7)=42;a(5,6)=70;a=a+a';a(find(a==0))=inf;result=[];p=1;tb=2:length(a);while length(result)~=length(a)-1temp=a(p,tb);temp=temp(:);d=min(temp);[jb,kb]=find(a(p,tb)==d);j=p(jb(1));k=tb(kb(1));result=[result,[j;k;d]];p=[p,k];tb(find(tb==k))=[];endresult
Kruskal
找不构成圈的最短边
clc;clear;a(1,2)=50; a(1,3)=60; a(2,4)=65; a(2,5)=40;a(3,4)=52;a(3,7)=45; a(4,5)=50; a(4,6)=30;a(4,7)=42; a(5,6)=70;[i,j,b]=find(a);data=[i';j';b'];index=data(1:2,:);loop=max(size(a))-1;result=[];while length(result)<looptemp=min(data(3,:));flag=find(data(3,:)==temp);flag=flag(1);v1=data(1,flag);v2=data(2,flag);if index(1,flag)~=index(2,flag)result=[result,data(:,flag)];endindex(find(index==v2))=v1;data(:,flag)=[];index(:,flag)=[];endresult
匹配问题
人员分配问题
匈牙利算法
这里的概念是可增广轨
http://www.cnblogs.com/qiufeihai/archive/2012/01/11/2319800.html
最优分配问题(增加权重)
库恩-曼克莱斯算法
Euler 图&Hamilton 图
邮递员问题
Euler图:Fleury 算法
非Euler图:对连接奇数个边的顶点处理,求他们的完美对集。
kpp问题
旅行商(TSP)问题
改良圈算法
最大流问题
Ford-Fulkerson 算法
整流定理
多源多汇->单源单汇
最小割
标号法
最小流问题
迭代法
统筹方法
计划评审方法(program evaluation and review technique, PERT)&关键路线法(critical path method, CPM)
从最大流开始用LINGO比较多感觉可能最好是要学一下……
阅读全文
0 0
- 【数学建模】图与网络 提纲 & matlab代码
- Matlab与数学建模
- MATLAB数学实践与建模
- 数学建模--图与网络(1)
- 数学建模--图与网络(2)
- [数学建模]线性规划与matlab解法
- 【数学建模】MATLAB数值积分与微分
- 【数学建模】现代优化算法部分提纲
- MATLAB数学建模资料
- Matlab--数学建模
- MATLAB数学建模02
- 数学建模:MATLAB R2016b下载与安装教程
- MATLAB数学建模(7)-聚类分析
- 利用MATLAB进行数学建模
- matlab 数学建模 图像处理
- 数学建模常用Matlab/Lingo/c代码总结系列——Matlab图形绘制函数汇总
- 数学建模中十大算法实现步骤与代码
- 【MATLAB · 代码】数学建模(一)层次分析法使用的代码
- python大牛的博客,没事多去看
- 项目入门经验杂记
- CodeForces
- Caffe Knowledge about Softmax and fine tuning
- php+apache+mysql自定义安装
- 【数学建模】图与网络 提纲 & matlab代码
- 奶牛集会
- OGNL
- 谈JavaScript中的变量和数据类型
- Numpy学习教程
- 异步任务,开启网络的dialog , 解析网络上的json
- 程序员百度云资源
- 在docker内部创建和启动新的docker
- 2-10逻辑卷管理LVM