图论论文_Floyd算法的应用
迪杰斯特拉和弗洛伊德算法

迪杰斯特拉和弗洛伊德算法迪杰斯特拉(Dijkstra)算法和弗洛伊德(Floyd)算法是图论中两种著名的算法,用于求解带权图中的最短路径问题。
下面将详细介绍这两种算法的原理和应用。
一、迪杰斯特拉算法迪杰斯特拉算法是由荷兰计算机科学家艾兹赫尔·迪杰斯特拉于1956年提出的,用于解决单源最短路径问题。
单源最短路径问题指的是从一个顶点出发,求到所有其他顶点的最短路径。
该算法基于贪心策略,逐步确定起始点到其他顶点的最短路径。
迪杰斯特拉算法的基本思路如下:1.初始化:给定一个起始顶点,将该顶点到其他顶点的最短路径初始化为无穷大。
2.选择当前最短路径长度最小的顶点A,将A标记为已访问。
3.更新最短路径:遍历A的邻接顶点B,如果经过A到达B的路径长度小于当前B的最短路径长度,则更新最短路径长度。
4.选择下一个最短路径长度最小的未访问顶点,重复步骤3。
5.重复步骤4,直到所有顶点都被标记为已访问。
迪杰斯特拉算法可以用来解决带权有向图或无向图的最短路径问题。
该算法时间复杂度为O(V^2),其中V为顶点的数量。
二、弗洛伊德算法弗洛伊德算法是由美国计算机科学家罗伯特·弗洛伊德于1962年提出的,用于解决多源最短路径问题。
多源最短路径问题指的是任意两个顶点之间的最短路径。
弗洛伊德算法使用动态规划的思想,通过递推关系式来求解最短路径。
弗洛伊德算法的基本思路如下:1.初始化:给定一个包含所有顶点之间边的邻接矩阵,将所有不可达的边长度设置为无穷大。
2.递推求解:遍历所有顶点i和j,如果经过顶点k到达顶点j的路径长度比当前路径长度小,则更新最短路径长度。
3.递推更新:选择下一个顶点k,重复步骤2,直到所有顶点都被选过。
弗洛伊德算法可以用来解决带权有向图或无向图的最短路径问题。
该算法时间复杂度为O(V^3),其中V为顶点的数量。
三、迪杰斯特拉算法与弗洛伊德算法的比较1.效率:迪杰斯特拉算法适用于解决单源最短路径问题,效率比较高,时间复杂度为O(V^2);而弗洛伊德算法适用于解决多源最短路径问题,效率较低,时间复杂度为O(V^3)。
阅读下列要求每对顶点之间的最短路径的floyd算法

阅读下列要求每对顶点之间的最短路径的floyd算法1. 引言在图论和网络分析中,寻找每对顶点之间的最短路径是一项重要的任务。
而 Floyd 算法作为一种经典的解决方法,被广泛应用于各个领域。
本文将对 Floyd 算法进行深入探讨,并介绍其原理、实现过程以及实际应用。
2. 原理Floyd 算法的核心思想是动态规划。
通过遍历每一个顶点,不断更新每对顶点之间的最短路径的长度,从而逐步求解出整个图中每对顶点之间的最短路径。
该算法的时间复杂度为 O(n^3),适用于任意有向图和带权图的最短路径求解。
3. 实现过程3.1 初始化我们需要初始化一个二维数组dist[][],用于记录每对顶点之间的最短路径长度。
初始化时,dist[i][j]表示顶点 i 到顶点 j 的直接距离,如果两个顶点之间不存在直接路径,则dist[i][j]的值为无穷大。
3.2 算法步骤步骤 1: 遍历每一个顶点 k在每一轮遍历中,我们选择顶点 k 作为中转点,然后更新dist[i][j]的值。
具体更新规则如下:dist[i][j] = min(dist[i][j], dist[i][k] + dist[k][j])这一步骤实质上是在考虑是否通过顶点 k 能够获得更短的路径长度。
步骤 2: 优化在经过 n 轮遍历后,我们就可以得到每对顶点之间的最短路径长度。
需要注意的是,如果图中存在负权边,则 Floyd 算法不适用,因为负权边会导致路径无限缩短。
如果存在负权环,则无法求解最短路径。
4. 示例分析为了更好地理解 Floyd 算法的实现过程,我们通过一个简单的示例来具体说明。
假设我们有一个带权有向图,以邻接矩阵的形式表示如下:0 2 inf 1inf 0 8 infinf inf 0 5inf inf inf 0其中,inf 表示两个顶点之间不存在直接路径。
按照 Floyd 算法的步骤,我们逐步更新每对顶点之间的最短路径长度,最终得到如下结果:0 2 10 1inf 0 8 9inf inf 0 5inf inf inf 0这样,我们就成功地求解出了图中每对顶点之间的最短路径。
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算法求解邻接矩阵的最短距离矩阵

文章编号: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最短路径算法在配送中心选址中的应用

Fig. 1 Logistics network
d
(1) ij
( 0) = min d ij , d i(10) + d
{
}
(0) 到 v j (编号 j)有边相连,则 d ij 等于该边边权,否
以 v1 作为中间点的路径中最短路长度.
(0) ( 0) 则 d ij =8 而 d ii =0.由图 1 写出其初始带权邻接
胡桔州 Floyd 最短路径算法在配送中心选址中的应用
383
常用点代表事物,用连接两点的边表示相应两个事 物间具有某种特定关系. 在配送中心的选址问题中, 点表示可供选择的配送中心,而其间的连线(边) 则表示物流费用.这种由顶点、边和某些数量指标 组成的图,是客观世界的多层次、多结构、多序列 在人脑中的一种反映,能形象、清晰地描述空间中 的位置关系,可以定量处理许多问题.例如,由于 约束条件(指系统或系统环境中那些由于种种原因 而不能改变的因素)的限制,配送中心选址的注意 力只能放在特定的区域,同时运输费用与运输距离 呈非线性关系,所以,运用图论中的有关理论和方 法解决配送中心选址问题具有一定的实际意义.
( 0) ( 0) 24 , d 21 ( 0) (0) 25 , d 21
( 0) (0) 34 , d 31 ( 0) ( 0) 35 , d 31 ( 0) (0 ) 45 , d 41
( 0) + d14
(0 ) + d15 (0 ) + d14 ( 0) + d15 ( 0) + d15
} }= min{∞,9 + 3} = 12 }= min{7,9 + ∞} = 7 }= min{2, ∞ + 3} = 2 }= min{4, ∞ + ∞} = 4 }= min{∞,3 + ∞} = ∞
v 弗洛伊德算法

v 弗洛伊德算法弗洛伊德算法(Floyd’s algorithm),又称为插点法,是一种通过动态规划求解最短路径问题的算法。
该算法在图论中有着广泛的应用,能够快速求解出两点之间的最短路径。
本文将为大家介绍弗洛伊德算法的原理以及实际应用。
1. 算法原理弗洛伊德算法的核心思想是利用中间点来更新起点到终点的距离。
假设图中任意两点之间的距离都为$d[i][j]$,则我们假设存在一个中间点$k$,可以将起点$i$和终点$j$之间的最短路径分成两部分,即起点到中间点的路径$d[i][k]$和中间点到终点的路径$d[k][j]$。
所以我们可以得到如下的状态转移方程:$$d[i][j]=\min(d[i][j],d[i][k]+d[k][j])$$通过不断地更新所有点之间的最短路径,我们最终可以得到所有节点之间的最短路径。
2. 算法实现弗洛伊德算法的实现中,最重要的一步就是更新状态转移方程。
具体来说,我们需要使用三层循环嵌套遍历所有点,将当前节点到所有其他节点的最短距离更新一遍即可。
下面就是使用 Python 语言实现弗洛伊德算法的代码片段:```pythonn = len(graph)for k in range(n):for i in range(n):for j in range(n):graph[i][j] = min(graph[i][j], graph[i][k] +graph[k][j])```在这段代码中,$graph$是一个$n \times n$的矩阵,表示所有节点之间的距离。
其中$n$是节点的数量。
3. 算法应用弗洛伊德算法的主要应用是求解带权图中各个节点之间的最短路径。
在实际生活中,我们可以将节点看作是城市,将距离看作是两个城市之间的道路距离。
这样,就可以使用弗洛伊德算法来计算任意两座城市之间的最短路程,帮助人们规划出更加便捷的旅行路线。
另外,在计算机网络中,弗洛伊德算法也被广泛应用于路由协议的设计中。
dijkstra 标号法 floyd

dijkstra 标号法floyd全文共四篇示例,供读者参考第一篇示例:Dijkstra算法和Floyd算法是两种最经典的图论算法,用来解决最短路径问题。
它们分别有着独特的算法思想和实现方式,在不同的场景中表现出各自的优势。
本文将介绍Dijkstra算法和Floyd算法的基本原理和应用,以及它们之间的区别和优缺点。
让我们来了解一下Dijkstra算法。
Dijkstra算法是由荷兰计算机科学家艾兹赫·迪克斯特拉于1956年提出的,用来解决单源最短路径问题。
所谓单源最短路径问题,就是给定一个带权有向图G=(V, E),其中V为顶点集合,E为边集合,每条边的权值为正数,以及一个源点s,求出从源点s到图中其他所有顶点的最短路径。
Dijkstra算法的基本思想是以源点为中心,逐步找出源点到其他各顶点的最短路径。
具体步骤如下:1. 创建一个集合S,用来存放已确定最短路径的顶点,初始时将源点加入其中;2. 初始化一个数组dist,用来记录从源点到各顶点的最短距离,初始时将源点到自身的距离设为0,其余顶点的距离设为无穷大;3. 重复以下步骤直到集合S包含所有顶点:a. 从dist中找出当前距禓源点最近的顶点u,将其加入集合S;b. 更新以u为起点的边的权值,更新dist数组中相应的距禓;4. 得到源点到其他各顶点的最短路径。
Dijkstra算法的时间复杂度为O(V^2),其中V为顶点数,这主要取决于选取最短路径顶点的方式。
当使用最小堆或斐波那契堆优化时,时间复杂度可以降至O(E+VlogV)。
1. 初始化一个二维数组dist,用来记录任意两顶点之间的最短路径距禓,初始时将dist[i][j]设为顶点i到顶点j的直接距禓,如果i和j 之间没有直接边,则设为无穷大;2. 重复以下步骤直到二维数组dist不再更新:a. 遍历所有顶点对(i, j),尝试以顶点k为中转点,更新dist[i][j]的值;3. 得到任意两顶点之间的最短路径。
弗洛伊德算法实用技巧

弗洛伊德算法实用技巧弗洛伊德算法(Floyd's Algorithm),又称为最短路径算法,是一种用于求解图中各顶点之间最短路径的算法。
它以其简洁高效的特点而被广泛应用于图论和网络优化领域。
本文将介绍弗洛伊德算法的原理及其在实际问题中的应用技巧。
一、弗洛伊德算法原理弗洛伊德算法的核心思想是采用动态规划的方法,通过逐步更新每一对顶点之间的最短路径长度,直到得到所有顶点之间的最短路径。
具体步骤如下:1. 初始化最短路径矩阵:以邻接矩阵的形式表示图的边权重,初始化一个大小为n×n的矩阵D,其中n为顶点个数。
若顶点i和顶点j之间存在边,则D[i][j]的值为边的权重;若不存在边,则D[i][j]的值为一个较大的数(如∞)。
2. 进行顶点中转:对于每一对顶点i和j,以顶点k作为中转点,更新D[i][j]的值,使其等于D[i][k] + D[k][j]和D[i][j]中的较小值。
即,若通过顶点k的路径更短,则更新D[i][j]的值。
3. 重复进行中转:依次选择每一个顶点作为中转点,进行步骤2的操作。
当所有顶点均作为中转点完成一次中转后,得到的矩阵D即为最终的最短路径矩阵。
二、弗洛伊德算法应用技巧1. 求解最短路径:弗洛伊德算法可以用于求解有向图或无向图中任意两点之间的最短路径。
通过获取最短路径矩阵D,即可得到任意一对顶点之间的最短路径长度。
2. 检测负权回路:在求解最短路径的过程中,若在最终的最短路径矩阵D中存在D[i][i]为负数的情况,则说明图中存在负权回路,即图中存在一个环路,其权重之和为负数。
该特性可用于识别图中是否存在负权回路。
3. 网络拓扑排序:弗洛伊德算法可以用于进行网络拓扑排序。
在求解最短路径的过程中,通过检测矩阵中的负权回路,可以得到顶点的拓扑排序结果。
拓扑排序用于评估任务执行的顺序,从而实现任务的优化调度。
4. 交通网络优化:弗洛伊德算法可以用于优化交通网络的设计。
通过将道路或路径作为图中的边,顶点表示城市或路口,权重表示通行距离或时间,利用最短路径矩阵D,可以评估不同路径的通行效率,从而优化道路规划和交通流量调度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目Floyd算法在旅游线路制定问题中的应用学院姓名学号2010 年11 月摘要随着日益增长的精神文化需求,旅游已经逐渐成为人们假期生活中不可缺少的一部分。
但是旅游的高费用和经济条件还有时间的限制也制约着人们的旅行计划。
尤其是对于我们这种初到某城市的学生游客,旅行路线的制定就成为了一个重要的问题。
如何在有限时间内经济实惠地制定自己的旅行计划需要我们用有效的数学手段来解决。
通过对《图论》这门课程的学习,发现各种最短路径的算法都能够很好的解决实际生活中的问题,例如Dijkstra算法、Floyd算法、Bellman-Ford算法等等。
本文主要介绍了Floyd算法的原理,以重庆市周边旅游景点为背景,选取了几个计划之内的旅游景点为假设模型,希望通过Floyd 算法获得任意两景点之间的最短路径来制定旅游路线,中间路过的景点也是我们计划之内的。
关键词:Floyd算法最短路径假设模型距离估算最小权重绪论在18世纪30年代。
一个非常有趣的问题引起了欧洲数学家的浓厚兴趣,这个问题要求遍历普鲁士的哥尼斯堡七桥中的每一座桥恰好一次后回到出发点。
欧拉证明了这是不可能完成的。
此后,欧拉发表了著名的论文《依据几何位置的解题方法》,这是图论领域的第一篇论文,标志着图论的诞生。
图论的真正发展始于20世纪五六十年代之间。
是一门既古老又年轻的学科,图论极有趣味性,严格来讲它是组合数学的一个重要分支。
虽然图论只是研究点和线的学问。
但其应用领域十分广阔。
不仅局限于数学和计算机学科,还涵盖了社会学、交通管理,电信领域等等。
总的来说,图论这门学科具有以下特点:图论蕴含了丰富的思想,漂亮的图形和巧妙的证明;涉及的问题多且广泛,问题外表简单朴素,本质上却十分复杂深刻;解决问题的方法千变万化,非常灵活,常常是一种问题一种解法。
由以上三个特点可以看出。
图论与其他的数学分支不同,它不像群论、拓扑等学科那样有一套完整的理论体系和解决问题的系统方法。
而且图论所研究的内容非常广泛,例如图的连通性、遍历性。
图的计数。
图的着色、图的极值问题。
图的可平面性等等。
最短路问题是图论应用的基本问题,很多实际问题,如线路的布设、运输安排、运输网络最小费用等问题,都可以通过建立最短路问题模型来求解。
最短路问题一般是在加权图中讨论,最短路径不仅仅是指一般意义上的距离最短,诸如时间、费用都可以被引申为最短路径,相应的最短路径问题就成了最快路径问题、最低费用问题等。
1 背景介绍重庆是中华人民共和国四个直辖市之一,地处中国西南。
是中国重要的中心城市之一,历史悠久,国务院公布的第二批国家历史文化名城之一。
因为重庆的地理环境,重庆多山多雾,故又有雾都、山城的别名。
重庆也是旅游胜地,周边大大小小的旅游景点数不胜数。
例如大足石刻、钓鱼城、丰都、小田溪巴王墓群、金佛山、歌乐山等等。
对于我们这些初到重庆的学生游客来说,由于对当地理环境并不熟悉,而且时间有限。
我们希望在有限的十一或是五一假期内,找到最短的最经济的旅游线路,进行一次重庆周边旅行。
所以,如何制定旅游线路就是一个很重要的问题。
通过对《图论》这门课程的学习,我们知道最短路径也是图论中的一个重要的应用问题。
其中涉及到的各种算法在日常生活中得到了广泛的应用。
Floyd算法就是任意两点间最短路径的经典算法。
2 Floyd 算法描述2.1 最短路径问题在图G 中的每一条边,可赋以一个实数()w e ,称为e 的权,G 连同它边上的权称为赋权图,赋权图经常出现在图论的应用中。
例如在友谊图中,权可以表示友谊深度;在通信图中,权可以表示各种通讯线路的建造或维修费用。
若H 是赋权图的一个子图,则H 的权()w H 是指它的各边的权和。
许多最优化问题相当于要在一个赋权图中找出某类具有最小(或最大)权的子图,其中之一就是最短路问题:就是要在一个赋权图的两个指定顶点o u 和o v 之间找出一条具有最小权的路。
最短路作为图与网络技术研究中的一个经典问题一直在工程规划、地理信息系统、通信和军事运筹学等领域有着十分广泛的应用。
顶点对之间的最短路径是指:对于给定的有向网(,)GV E =,要对G 中任意一对顶点有序对,()V WV W ≠,找出V 到W 的最短距离和W 到V 的最短距离。
目前,关于最短路问题的研究已有较多结果,传统的最短路算法主要有Floyd 算法和Dijkstra 算法等。
其中,Dijkstra 算法求解任意顶点对之间最短距离的方法是:轮流以每一个顶点为源点,重复执行算法n 次,即可求得每一对顶点之间的最短路径,总的时间复杂度为3()o n ,Floyd 提出了另外一个求图中任意两顶点之间最短路径的算法,虽然其时间复杂度也是3()o n ,但其算法的形式更简单,易于理解和编程。
2.2 Floyd 算法描述对于图G ,如果(,)w i j 表示i 和j 之间的可实现的距离,那么(,)w i j 表示端i和j 之间的最短距离当且仅当对于任意的i, j, k ,有(,)(,)(,)w i j w i k w k j ≤+。
该算法用矩阵形式来表示,并进行系统化的计算,通过迭代来消除不满足上述定理的情况,对于n 个端,一给定边长ij d 的图,顺序计算各个n n ⨯的W 阵和R 阵,前者代表径长,后者代表转接路由。
其步骤如下:F :置(0)(0[]ijij W w =其中和 0(0)[]ijR r =其中1F :已得(1)k W-和(1)k R - 阵,求()k W和()k R 阵中的元素如下2F :k<n ,重复1F ;k =n ,终止。
由上述步骤可见,(1)()k k WW-→是计算经k v 转接时是否能缩短经常,如有缩短,更改ij w 并在R 阵中记下转接的端。
最后算得()n W 和()n R ,就得到了最短径长和转接路由。
,,0iji j iji j d v v w v v i j ⎧⎪=∞ ⎨⎪=⎩有边无边(0)(0)(0)ij ijij w jr w i j <∞⎧= ⎨=∞ =⎩或()(1)(1)(1)m in [,]k k k k ijij ikkjw w w w ---=+(1)()(1)(1)(1),,k k k ijij ij kijk k k ikij ij r w w r r w w ----⎧ =⎪=⎨ <⎪⎩若若3 Floyd算法用于解决旅行线路问题3.1 旅行线路模型假设初到重庆邮电大学,同学们对重庆这个历史悠久且极具特色的中国中心城市充满了好奇,在节假日的时候都计划着去重庆市周边的旅游景点进行短期旅行。
由于我们对重庆市的地理环境消费水平等并不是特别了解,制定旅行线路就成为了一个很重要的问题,由于假期时间有限,我们希望能够在备选目的地景点中,能够找到任何两个景点之间的最短路,且中途经过的节点也是备选景点中的景点。
于是选择重庆周边的各个景点为对象如图3-1所示,我们可以选择图示的任何几个景点来生成一个考察对象图,图中粗线条所连接生成的图为文章中考察的图,命名为G。
图3-1 重庆市周边旅游景点图图中选择的备选景点分别为:大足石刻、钓鱼城、丰都、小田溪巴王墓群、金佛山、歌乐山、重庆市中心。
这七个景点依次编号为1-7,且如图所示粗线表示连接端点的边分别命名为1v -7v 。
于是我们生成了考察对象图G ,如图3-2所示。
通过考察各个景点之间的实际距离(公里数),1e -10e 的公里数分别为:78.6km ,293.2km ,175.6km ,176.1km ,129.2km ,17.9km ,79.8km ,236.9km ,124.7km ,20.2km 。
我们以最短距离20.2为基准作归一化处理得到近似1e -10e 的值分别为: 4,14,9,9,6,1,4,12,6,1。
假设模型中,用这些归一化的值分别代表各个边的权值,构成加权图G 如图3-2所示。
图3-2 由七个景点生成的图G3.2 用Floyd 算法计算任意两景点之间的最短路径现在我们以上述生成的图G 为考察对象,根据算法流程,设W 阵和R 阵分别代表径长和转接路由。
那么计算结果如下:1v 2v 3v 4v 5v 6v 7v 1e 2e 3e 4e 5e 6e 7e 8e 9e 10e(0)041 40144 1409909129066 1601 412610W∞∞∞∞⎡⎤⎢⎥∞∞∞⎢⎥⎢⎥∞∞∞∞⎢⎥=∞∞∞⎢⎥⎢⎥∞∞∞⎢⎥∞∞∞⎢⎥⎢⎥∞∞⎣⎦(0)0200060103000702040000030507000406710005070204560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(1)0414014(5)414099091290661(5)601412610W∞∞∞∞⎡⎤⎢⎥∞∞⎢⎥⎢⎥∞∞∞∞⎢⎥=∞∞∞⎢⎥⎢⎥∞∞∞⎢⎥∞∞⎢⎥⎢⎥∞∞⎣⎦(1)020006010300(1)70204000003050700040671(1)005070204560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(2)04(18)1(8)401454(18)1409(19)(18)90912906615(19)601(8)4(18)12610W∞∞⎡⎤⎢⎥∞∞⎢⎥⎢⎥∞⎢⎥=∞∞∞⎢⎥⎢⎥∞∞∞⎢⎥∞⎢⎥⎢⎥⎣⎦(2)02(2)006(2)1030017(2)2040(2)(2)0030507000406711(2)0507(2)2(2)4560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(3)0418(27)18 4014(23)54 1814091918 (27)(23)909(28)129066 1519(28)601 841812610W∞⎡⎤⎢⎥∞⎢⎥⎢⎥∞⎢⎥=⎢⎥⎢⎥∞∞∞⎢⎥⎢⎥⎢⎥⎣⎦(3)022(3)062103(3)0172204022(3)(3)305(3)70004067112(3)5072224560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(4)041827(36)18 401423(32)54 181409(18)1918 27239092812 (36)(32)(18)9066 151928601 841812610W⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(4)0223(4)621033(4)172204(4)223330537(4)(4)(4)406711235072224560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(5)041827361840142332541814091819182723909(15)1236321890661519(15)601841812610W⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(5)02234621033417220442233305(5)74444067112(5)5072224560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(6)0418(16)(7)1(2)4014(20)(11)54181409181918(16)(20)9091512(7)(11)189066151915601(2)41812610W⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(6)022(6)(6)6(6)103(6)(6)172204422(6)(6)30557(6)(6)440671125507(6)224560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(7)0418(14)712 4014(16)(10)54 181409181918 (14)(16)909(13)12 7(10)189066 1519(13)601 241812610W⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦(7)022(7)666103(7)(7)172204422(7)(7)305(7)76(7)44067112(7)5076224560R⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦经过7轮迭代,我们得到了最终的W 和R 阵,分别包含了径长信息和路由信息。