数学建模floyd算法最短路算法详解

合集下载

最短路问题Dijkstra_Floyd_算法

最短路问题Dijkstra_Floyd_算法

K=3 +1=4 ∵ min{u6,u7,u8,u9}
=min{10,9,12,} =9= u7
∴ 点v7得永久标号, 7=5 ,
X2={v1,v4 ,v3 , v2, v5,v7},X2={v6 ,v8 ,v9},
在vj∈X5中,临时标号不变。 K=4 +1=5 ∵ min{u6,u8,u9}=min{10,12,} =10= u6
K=0 ∵ min{u2,u3,u4,u5,u6,u7,u8,u9}
=min{6,3,1,,,,,}
=1= u4 6
v2
3
1
v5
4
2
v9
6 3
4
v1
1
2
v3
2
6
3 10 2
v8
v4
10
∴ 点v4得永久标号, 4=1 ,X1={v1,v4}, X1={v2,v3, v5,v6 ,v7,v8 ,v9}, 在所有vj∈X1中, ∵ u6= ,u4+w46=1+10=11, 即 u4+w46< u6 ∴ 修改临时标号u6= 11 ,6=4 ,其余标号不变。
6
1 2 6 10
v5
4 3 10 2
2 6
v9
3
v1
1
3
v3
2
从v1到v8:
v4
v6
v7
4
v8
P1=(v1,v2,v5,v8)
费用 6+1+6=13
P2=(v1,v3,v4, v6, v7, v8) 费用 3+2+10+2+4=21
P3= …… 从v1到v8的旅行路线 从v1到v8的路。 最短路问题中,不考虑有向环、并行弧。

Floyd算法(各对顶点之间的最短距离)

Floyd算法(各对顶点之间的最短距离)

Floyd算法(各对顶点之间的最短距离)Floyd算法(各对顶点之间的最短距离)在上篇文章中议论到了如何求算单源最短路径,因此要想求各对顶点之间的距离,只需循环求算n次即可。

还有另外一种办法来求算各对顶点之间的最短距离,就是Floyd算法,因为其算法过程比Dijksa更简单理解,并且代码更简洁,因此当求算各对顶点之间的最短距离常采纳Floyd算法。

一.Floyd算法假设从i到j的最短路径上要经过若干个顶点,这些中间顶点中最大的顶点编号为k,最小的顶点为t,因此要求算dist[i][j]的最小值,那么只需要求算dist[i][s]+dist[s][j](t =s =k)的全部值,并取其中最小者即可。

因此可以设置一个中间顶点k(0 =k n)分离插入到每队顶点(i,j)之中,并更新dist[i][j]的值。

当n个顶点插入到每队顶点之中,求解便结束了。

其实Floyd算法实质上是一个动态规划算法。

代码实现: /*每对顶点之间最短路径Floyd 2011.8.27*/ iludeiostream include stack define M 100define N 100using namespace std;typef struct node{ int matrix[N][M]; //邻接矩阵 int n; //顶点数 int e; //边数 }MGraph; vo FloydPath(MGraph g,intdist[N][M],int path[N][M]){ int i,j,k; for(i=0;i g.n;i++)for(j=0;j g.n;j++) { if(g.matrix[i][j] 0){ dist[i][j]=g.matrix[i][j]; path[i][j]=i; } ee { if(i!=j) { dist[i][j]=INT_MAX; path[i][j]=-1; } else { dist[i][j]=0; path[i][j]=i; } } } for(k=0;k g.n;k++) //中间插入点(注重理解k为什么只能在最外层) for(i=0;i g.n;i++) for(j=0;jg.n;j++) { if((dist[i][k] 0 dist[i][k] INT_MAX) //防止加法溢出 (dist[k][j] 0 dist[k][j] INT_MAX) dist[i][k]+dist[k][j] dist[i][j]) { dist[i][j]=dist[i][k]+dist[k][j];path[i][j]=path[k][j]; //path[i][j]记录从i到j的最短路径上j 的前一个顶点 } } }void showPath(int path[N][M],int s,int t) //打印出最短路径 { stack int st; int v=t; while(t!=s) { st.push(t);第1页共2页。

Floyd算法

Floyd算法

Floyd算法Floyd算法是一种经典的图论算法,用于求解带权有向图中任意两个顶点之间的最短路径问题。

该算法由美国数学家罗伯特·弗洛伊德(Robert Floyd)于1962年提出,因此得名为Floyd算法。

Floyd算法是一种动态规划算法,它采用了“分治”的思想,将问题分解为更小的子问题,然后逐步解决子问题,最终得到解决整个问题的结果。

本文将从算法的背景、基本思想、实现方法及优缺点等方面对Floyd 算法进行详细阐述和分析。

一、算法的背景在讲Floyd算法之前,我们先来了解一下最短路径问题。

顾名思义,最短路径问题就是在给定图中找到两个给定节点之间的一条最短路径,也就是路径上各边权值之和最小的路径。

这个问题在现实生活中有很多应用,比如网络路由、地图路径规划、航线安排等等。

在数学和计算机科学领域中,我们可以通过图论的方法来描述和解决这个问题。

一般来说,给定一张带权有向图G=(V, E),其中V表示节点的集合,E表示边的集合。

每条边E(i,j)的权重为w(i,j),表示从节点i到节点j的距离或成本。

那么最短路径问题就是在图中找到从节点s到节点t的一条最短路径P,并且P上的边权之和最小。

最初求解的思路是按照类似深度优先搜索的方式,逐个遍历所有路径,然后依次比较它们的距离,找到最短路径。

但这种方式显然是不可行的,因为它的时间复杂度非常高。

所以,我们需要设计一种更高效的算法,以求得最短路径问题的最优解。

二、算法的基本思想Floyd算法就是一种高效地解决最短路径问题的方法。

它采用了“动态规划”的思想,通过逐步求解子问题,最终得到完整的最短路径。

而解决子问题的方式则是采用了“分治”的思想,将问题分解为更小的子问题,然后逐步解决。

具体地说,Floyd算法采用了“中转节点”的概念,我们可以将问题转化为这样一个子问题:对于每个节点i和节点j,假设我们已经知道了它们之间的最短路径长度为d[i][j],那么考虑一下节点k作为中转节点,它可以为i和j之间的路径P提供一个“中转服务”,将P拆分为两条路径:i-->k和k-->j。

floyd算法求解邻接矩阵的最短距离矩阵

floyd算法求解邻接矩阵的最短距离矩阵

文章编号:001主题:探讨floyd算法求解邻接矩阵的最短距离矩阵在计算机算法中,图论一直是一个重要的研究领域。

而其中,最短路径算法一直是图论中的热门话题之一。

在众多的最短路径算法中,floyd算法因其简洁高效的特点而备受青睐。

本文将深入探讨floyd算法在求解邻接矩阵的最短距离矩阵中的应用,并分析其实现原理及优缺点。

一、floyd算法简介Floyd算法是一种用于寻找加权图中顶点之间最短路径的动态规划算法。

它的基本思想是每次引入一个新的顶点,看看这个新顶点能不能对原来两个顶点之间的距离产生改变,如果可能,就进行更新。

通过多次迭代,最终得到所有顶点之间的最短路径。

二、floyd算法的实现步骤1. 初始化邻接矩阵在使用floyd算法求解最短路径时,首先需要初始化邻接矩阵。

邻接矩阵的每个元素代表图中两个顶点之间的距禋,如果两个顶点之间没有直接连接,则距离设为无穷大。

如果两个顶点直接相连,则距离设为两个顶点之间的权值。

2. 动态规划求解最短路径接下来,利用动态规划的思想,通过逐渐引入新的顶点,不断更新已有的最短路径。

具体做法是,对于每对顶点i和j,检查它们之间是否存在顶点k,使得从i到j的最短路径可以经过顶点k。

如果存在这样的顶点k,那么更新i到j的最短路径为i到k和k到j的距离之间的较小值。

3. 递推过程重复上述步骤,通过逐渐引入新的顶点k,直到遍历完所有顶点,就可以得到最终的最短距离矩阵。

三、floyd算法的优缺点1. 优点floyd算法可以求解任意两点之间的最短路径,且适用于有向图和无向图。

并且可以方便地求出最短路径的具体路径。

算法简单易懂,实现起来也比较容易。

2. 缺点floyd算法的时间复杂度较高,为O(n^3),当n较大时,计算量会非常庞大。

另外,在处理稀疏图时,可能会造成大量的计算浪费,因为floyd算法会对所有的顶点对进行遍历,而对于稀疏图来说,很多顶点对之间并不存在直接连接的边。

四、个人观点和理解在实际应用中,floyd算法通常适用于节点数量不是特别大,但边的数量非常大或者需要求解任意两点之间最短路径的情况。

Floyd算法详解

Floyd算法详解

求最短路径算法总结分类:数据结构标签:floyd算法it部分内容参考All-Pairs 的最短路径问题:所有点对之间的最短路径Dijkstra算法是求单源最短路径的,那如果求图中所有点对的最短路径的话则有以下两种解法:解法一:以图中的每个顶点作为源点,调用Dijkstra算法,时间复杂度为O(n3);解法二:Floyd(弗洛伊德算法)更简洁,算法复杂度仍为O(n3)。

n正如大多数教材中所讲到的,求单源点无负边最短路径用Dijkstra,而求所有点最短路径用Floyd。

确实,我们将用到Floyd算法,但是,并不是说所有情况下Floyd都是最佳选择。

对于没有学过Floyd的人来说,在掌握了Dijkstra之后遇到All-Pairs最短路径问题的第一反应可能会是:计算所有点的单源点最短路径,不就可以得到所有点的最短路径了吗。

简单得描述一下算法就是执行n次Dijkstra算法。

Floyd可以说是Warshall算法的扩展了,三个for循环便可以解决一个复杂的问题,应该说是十分经典的。

从它的三层循环可以看出,它的复杂度是n3,除了在第二层for中加点判断可以略微提高效率,几乎没有其他办法再减少它的复杂度。

比较两种算法,不难得出以下的结论:对于稀疏的图,采用n次Dijkstra比较出色,对于茂密的图,可以使用Floyd算法。

另外,Floyd可以处理带负边的图。

下面对Floyd算法进行介绍:Floyd算法的基本思想:可以将问题分解,先找出最短的距离,然后在考虑如何找出对应的行进路线。

如何找出最短路径呢,这里还是用到动态规划的知识,对于任何一个城市而言,i到j的最短距离不外乎存在经过i与j之间的k和不经过k两种可能,所以可以令k=1,2,3,...,n(n是城市的数目),在检查d(ij)与d(ik)+d(kj)的值;在此d(ik)与d(kj)分别是目前为止所知道的i到k 与k到j的最短距离,因此d(ik)+d(kj)就是i到j经过k的最短距离。

Floyd算法详解

Floyd算法详解

Floyd算法详解Floyd-WarshallFloyd算法,是⼀种著名的多源最短路算法。

核⼼思想:⽤邻接矩阵存储图,核⼼代码为三重循环,第⼀层枚举中间点k,⼆三层分别枚举起始点i与⽬标点j。

然后判断经过中间点k后,i与j间的路程是否会减⼩。

如果是,就更新i,j之间的最短路。

for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(e[i][j]>e[i][k]+e[k][j])e[i][j]=e[i][k]+e[k][j];需要注意的是,为了保证更新成功,需要将e数组初始化为⽆穷⼤。

同时为了防⽌程序做⽆意义的到⾃⼰的最短路,将每个节点到本⾝的距离初始化为0。

算法复杂度:该算法的空间复杂度为n^2(不算优秀,但勉强接受),时间复杂度O(n^3)(呵呵)。

完整代码:#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int inf=99999999;int n,m,x,y,z,s;int dis[1001][1001];int main(){scanf("%d%d%d",&n,&m,&s);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i!=j) dis[i][j]=inf;else dis[i][j]=0;for(int i=1;i<=m;i++){scanf("%d%d%d",&x,&y,&z);dis[x][y]=dis[y][x]=z;}for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(dis[i][k]+dis[k][j]<dis[i][j])dis[i][j]=dis[i][k]+dis[k][j];for(int i=1;i<=n;i++)printf("%d ",dis[s][i]);return0;}算法优化:for(int k = 1; k <= n; k++)for(int i = 1; i <= n; i++)for(int j = 1; j <= i; j++)dis[i][j] = min(dis[i][j], dis[i][k]+dis[k][j]),dis[j][i] = dis[i][j];这⾥利⽤了矩阵的对称性,只更新⼀半矩阵即可。

【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?

【最短路径Floyd算法详解推导过程】看完这篇,你还能不懂Floyd算法?还不会?

【最短路径Floyd 算法详解推导过程】看完这篇,你还能不懂Floyd 算法?还不会?简介Floyd-Warshall 算法(Floyd-Warshall algorithm ),是⼀种利⽤动态规划的思想寻找给定的加权图中多源点之间最短路径的算法,与Dijkstra 算法类似。

该算法名称以创始⼈之⼀、1978年图灵奖获得者、简单的说就是解决任意两点间的最短路径的⼀种算法,可以正确处理有向图或负权的最短路径问题,同时也被⽤于计算有向图的传递闭包。

Floyd-Warshall 算法的时间复杂度为O(N3),空间复杂度为O(N2)。

解决最短路径问题有⼏个出名的算法:1.dijkstra 算法,最经典的单源最短路径算法2.bellman-ford 算法,允许负权边的单源最短路径算法3.spfa,其实是bellman-ford+队列优化,其实和bfs 的关系更密⼀点4.floyd 算法,经典的多源最短路径算法今天先说说FloydFloyd 算法详解描述a )如图:存在【0,1,2,3】 4个点,两点之间的距离就是边上的数字,如果两点之间,没有边相连,则⽆法到达,为⽆穷⼤。

b )要让任意两点(例如从顶点a 点到顶点b )之间的路程变短,只能引⼊第三个点(顶点k ),并通过这个顶点k 中转即a->k->b ,才可能缩短原来从顶点a 点到顶点b 的路程。

那么这个中转的顶点k 是0~n中的哪个点呢?算法过程准备1)如图 0->1距离为5,0->2不可达,距离为∞,0->3距离为7……依次可将图转化为邻接矩阵(主对⾓线,也就是⾃⾝到⾃⾝,我们规定距离为0,不可达为⽆穷⼤),如图矩阵⽤于存放任意⼀对顶点之间的最短路径权值。

2)再创建⼀个⼆维数组Path 路径数组,⽤于存放任意⼀对顶点之间的最短路径。

每个单元格的内容表⽰从i 点到j 点途经的顶点。

(初始还未开始查找,默认-1)开始查找1)列举所有的路径(⾃⼰到⾃⼰不算)即为:0 -> 1 , 0 -> 2 , 0 -> 3 ,1 -> 0 , 1 ->2 , 1 ->3 ,2 -> 0 , 1 -> 1 , 1 -> 3######转化成⼆元数组即为:{0,1},{0,2},{0,3},{1,0},{1,2},{1,3},{2,0},{2,1},{2,3},{3,0},{3,1},{3,2}2)选择编号为0的点为中间点{0,1},{0,2},{0,3},{1,0},{1,2},{1,3},{2,0},{2,1},{2,3},{3,0},{3,1},{3,2}从上⾯中⼆元组集合的第⼀个元素开始,循环执⾏以下过程:1. ⽤i,j两个变量分别指向⼆元组⾥的两个元素,⽐如{0,1}这个⼆元组,i指向0;j指向12. 判断 (A[ i ][ 0 ]+A[ 0 ][ j ] ) < A[ i ][ j ] (即判断 i -> j,i点到j点的距离是否⼩于从0点中转的距离),如果false,则判断下⼀组⼆元数组。

算法12--最短路径--弗洛伊德(Floyd)算法

算法12--最短路径--弗洛伊德(Floyd)算法

D(2) [i][j] = min{D(1) [i][j], D(1) [i][2]+D(1) [2][j]}
6
0123
V2 8 V3
8
0 1 1920 43 0
3
4 52
ADA(((-32101)))==
8
11021 0 98 2 3 45 0 687
1 2
9
V0
V1
8
8
90 110 6 0 3
12
5.算法实现
• 图用邻接矩阵存储 • edge[ ][ ]存放最短路径长度 • path[i][j]是从Vi到Vj的最短路径上Vj前一顶点序号
void floyd ( ){
for ( int i = 0; i < n; i++ ) //矩阵dist与path初始化
for ( int j = 0; j < n; j++ ) { //置A(-1)
例题:
6 A4 3 11
C
初始:
0 6
4 0
11 2
3 0 B
路径: BA CA
AB AC BC
2 0 4 11
加入A: 6 0 2 37 0
AB AC
路径: BA
BC
CA CAB
04 6 加入B: 6 0 2
37 0
AB ABC
路径: BA
BC
CA CAB
04 6 加入C: 5 0 2
37 0
AB ABC
8
0092 3 45 0 687
1 2
9
V0
V1
8
8
0160 3
1
以D(0)为基础,以V1为中间顶点,求从Vi,到Vj的最短
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
end end for k=1:n
for i=1:n for j=1:n if d(i,k)+d(k,j)<d(i,j) d(i,j)=d(i,k)+d(k,j); r(i,j)=k; end end
end end
自定义floyd函数
例 1 求下图中加权图的任意两点间的距离与路径.
clear; w=[0,9,inf,3,inf;9,0,2,inf,7;inf,2, 0,2,4;3,inf,2,0,inf;inf,7,4,inf,0]; [d,r]=floyd(w)
m =132 78 70 92 70 106 130 ans =70
实验八、最佳灾情巡视路线(节选部分)
实验内容: 求出下图中O到其它各点的最短路线(要求求
出最短路线及其最短距离) (节选了教材上337面图中的16个点:即15、
16、17、18、20、21、22、23、25、26、I、K、M、 N、O、P等16个点)
m1=0; for j=1:7
m1=m1+q(j)*d(i,j); end m(i)=m1; end m min(m)
d = 0 3.0000 5.0000 8.0000 7.0000 7.0000 8.5000 3.0000 0 2.0000 5.0000 4.0000 4.0000 5.5000 5.0000 2.0000 0 3.0000 2.0000 6.0000 7.5000 8.0000 5.0000 3.0000 0 1.0000 5.0000 6.5000 7.0000 4.0000 2.0000 1.0000 0 4.0000 5.5000 7.0000 4.0000 6.0000 5.0000 4.0000 0 1.5000 8.5000 5.5000 7.5000 6.5000 5.5000 1.5000 0
w=[0,3,inf,inf,inf,inf,inf;3,0,2,inf,1.8,2.5,inf;inf,2,0,6,2,inf,inf;inf,inf,
6,0,3,inf,inf;inf,1.8,2,3,0,4,inf;inf,2.5,inf,inf,4,0,1.5;inf,inf,inf,inf,inf,1
(d
( ij
)
)

,其中
d
( ij
)

min{
d
( ij
1)
,
d
( i
1)
d(j 1) }
d
( ij
)
是从
vi

vj
的只允许以
v1、v2、…、v
作为中间点的路径中最短路
的D(长)度即.是即距是离从矩阵vi 到. vj 中间可插入任何顶点的路径中最短路的长,因此
算法原理—— 求路径矩阵的方法
.5,0];
[d,r]=floyd(w) S=max(d’) %求矩阵各列的最大值
s=min(S)
0 3 5 10 7 5.5 7 3 0 2 7 4 2.5 4

5
2
0
5
2
4.5
6

D 10 7 5 0 3 7 8.5

7
4
2
3
0
4
5.5

5.5 2.5 4.5 7 4 0 1.5
(1)用 Floyd 算法求出距离矩阵 D= (dij ) .
(2) 计算在各点vi 设立服务设施的
最大服务距离S (vi ) .
S (vi
)

max{d
1 j
ij
}
i 1,2,
(3)求出顶点vk
,使 S(vk
)

min{S
1i
(vi
)}
则vk 就是要求的建立消防站的地点.此点称为图的中心点. clear;
对所有 i,j,若 d(i,k)+d(k,j)<d(i,j),则 d(i,j) d(i,k)+d(k,j), r(i,j) k
(3) 若 k= ,停止.否则 k k+1,转(2).
function [d,r]=floyd(w) n=length(w); for i=1:n
for j=1:n d(i,j)=w(i,j); r(i,j)=j;

7
4
6
8.5 5.5 1.5
0

S(v1)=10, S(v2)=7, S(v3)=6, S(v4)=8.5, S(v5)=7, S(v6)=7, S(v7)=8.5
S(v3)=6,故应将消防站设在v3处。
选址问题--重心问题
例 3 某矿区有七个矿点,如图所示.已知各矿点每天的产矿量
q(v j )(标在图的各顶点上).现要从这七个矿点选一个来建造矿厂.问
最短路算法
任意一对顶点之间的最短路算法:Floyd算法
(一)算法的基本思想
(二)算法原理 1、求距离矩阵的方法 2、求路径矩阵的方法 3、查找最短路路径的方法
(三)算法步骤
算法的基本思想
直接在图的带权邻接矩阵中用插入顶点的方法
依次构造出 个矩阵 最后得到的矩阵 D(
D(1)、 D(2)、… 、D( ),使
r51 =4.由 v4 向 v5 追朔:r54 3, r53 3 ; 由 v4 向 v1 追朔:r41 1 所以从 v5 到 v1 的最短路径为:5 3 4 1.
选址问题--中心问题
例 2 某城市要建立一个消防站,为该市所属的七个区服务, 如图所示.问应设在那个区,才能使它至最远区的路径最短.
}vi

vj
的只允许以
v1 作为中间点的路径中最短路的长度.
(2)D(2)=
(d
(2) ij
)
,其中
d
(2) ij

min{
d (1) ij
,
d
(1)
i2
d
(1) 2j
}
d (2) ij
是从
vi

vj
的只允许以
v1

v2
作为中间点的路径中最短路的长度.


)D(
)=
然后用同样的方法再分头查找.若:
(1)向点 i 追朔得:rip(1 )

p2
r,
( ) ip 2

p3 ,…,rip(k )

pk
(2) 向点
j
追朔得:
r ( ) p1 j

q1
r,
( ) q1 j
q2
,…,
r ( qm
) j

j
则由点i到j的最短路的路径为: i, pk ,, p2 , p1,q1, q2 ,, qm , j
i
pk
p3 p2 p1
q1
q2
qm
j
算法步骤
Floyd 算法:求任意两点间的最短路.
D(i,j):i 到 j 的距离. R(i,j):i 到 j 之间的插入点. 输入: 带权邻接矩阵 w(i,j)
(1) 赋初值:
对所有 i,j, d(i,j) w(i,j), r(i,j) j, k 1
(2) 更新 d(i,j), r(i,j)
应选在哪个矿点,才能使各矿点所产的矿运到选矿厂所在地的总运力 (千吨公里)最小.
(1)求距离阵 D= (dij ) .
(2) 计算各顶点作为选矿厂的总运力m(vi )

m(vi ) q(v j ) dij
i 1,2,
j 1
(3)
求vk
使 m(vk
)

min
1i
{m(vi
0 7 5 3 9 7 0 2 4 6
1 4 4 4 4 4 2 3 3 3
D


5
2
0
2
4 ,
R


4
2
3
4
5

3 4 2 0 6
1 3 3 4 3

9
6
4
6
0


4
3
3
3
5

d51 9 ,故从 v5 到 v1 的最短路为9.
若d
(k ij
1)

d (k 1) ik

d
(k kj
1)
否则
即当vk被插入任何两点间的最短路 径时,被记录在R(k)中,依次求 R() 时求得 D(,) 可由R() 来查找任何点对 之间最短路的路径.
算法原理—— 查找最短路路径的方法
若 rij( ) p1,则点 p1 是点 i 到点 j 的最短路的中间点.
)成为图的距离矩阵,同时也
求出插入点矩阵以便得到两点间的最短路径.
算法原理—— 求距离矩阵的方法
把带权邻接矩阵 W 作为距离矩阵的初值,即 D(0)=(di(j0) ) =W
(1)D(1)=
(d
(1) ij
)

,其中d
(1) ij

min{
d
(0) ij
,
d (0) i1

d (0) 1j
)}
,v则k
就是选矿厂应设之矿
点.此点称为图 G 的重心或中位点.
clear; w=[0,3,inf,inf,inf,inf,inf;3,0,2,inf,inf,4,inf;inf,2,0,6,2,inf,inf;inf,inf, 6,0,1,inf,inf;inf,inf,2,1,0,4,inf;inf,4,inf,inf,4,0,1.5;inf,inf,inf,inf,inf, 1.5,0]; [d,r]=floyd(w) q=[3,2,7,1,6,1,4]; for i=1:7
相关文档
最新文档