Floyd算法及其MATLAB实现

本文介绍了Floyd算法,用于求解网络最短路问题。通过理论准备阐述了网络弧集、权矩阵和算法的基本思想及步骤,并提供了一个MATLAB程序实现的例子,讨论了最短路径的特性和负权回路的影响。
摘要由CSDN通过智能技术生成

一、最短路问题
1、定义
  • P ( u , v ) P(u,v) P(u,v)是网络加权图中从结点 u u u v v v的路径,该路径上的边权之和称为该路径的权,记为 W ( P ) W(P) W(P)。从结点 u u u v v v的路径中边权最之和小者 P ∗ ( u , v ) P^*(u,v) P(u,v)称为 u u u v v v的最短路径。
2、用途
  • 最短路问题(short-path problem)是网络理论解决的典型问题之一,其基本内容是:若网络中的每条边都有一个数值(长度、成本、时间等),则找出两结点(通常是源结点和阱结点)之间总权和最小的路径就是最短路问题。该问题可用来解决管路铺设、线路安装、厂区布局和设备更新等实际问题。
3、常用算法
  • 最短路问题常用的算法有Floyd算法、Dijkstra算法、SPFA算法等。本文主要介绍网络最短路问题的Floyd算法及其MATLAB实现。
二、理论准备
1、网络弧集和权矩阵

为了论述方便,本文借助下图,介绍网络弧集 E E E和网络权矩阵 W W W的概念。
网络图
(上述网络图上标的数字为各段弧的权值,该图左侧为无向网络图,右侧为有向网络图。)
对于上述无向网络图而言,网络弧集 E 1 = [ ( v 1 , v 2 ) , ( v 1 , v 4 ) , ( v 2 , v 1 ) , ( v 2 , v 4 ) , ( v 2 , v 3 ) , ( v 3 , v 2 ) , ( v 3 , v 4 ) , ( v 4 , v 1 ) , ( v 4 , v 2 ) , ( v 4 , v 3 ) ] E_1=[(v_1,v_2),(v_1,v_4),(v_2,v_1),(v_2,v_4),(v_2,v_3),\\(v_3,v_2),(v_3,v_4),(v_4,v_1),(v_4,v_2),(v_4,v_3)] E1=[(v1,v2),(v1,v4),(v2,v1),(v2,v4),(v2,v3),(v3,v2),(v3,v4),(v4,v1),(v4,v2),(v4,v3)]
对于上述有向网络图而言,网络弧集 E 2 = [ ( v 1 , v 2 ) , ( v 1 , v 4 ) , ( v 2 , v 3 ) , ( v 2 , v 4 ) , ( v 3 , v 4 ) ] E_2=[(v_1,v_2),(v_1,v_4),(v_2,v_3),(v_2,v_4),(v_3,v_4)] E2=[(v1,v2),(v1,v4),(v2,v3),(v2,v4),(v3,v4)]
由此可见,集合 E E E就是网络图的所有弧集合。
网络权矩阵 W = ( W i j ) n × n W=(W_{ij})_{n×n} W=(Wij)n×n,其中,
( v i , v j ) ∈ E (v_i,v_j)∈ E (vi

  • 59
    点赞
  • 271
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值