当前位置: 首页 > wzjs >正文

广东贸易网站开发百度网络营销app

广东贸易网站开发,百度网络营销app,领地网怎么编辑个人网站,百度云 做视频网站例 8.5.2 利用弗洛伊德算法,对图 8.5.5 中左侧的带权有向图求最短路径,给出每一对顶点之间的最短路径及其路径长度在求解过程中的变化。 图 8.5.5 带权图和邻接矩阵 【解】 根据图 8.5.5 中的带权有向图,可得所对应的邻接矩阵 g g g &#…

例 8.5.2 利用弗洛伊德算法,对图 8.5.5 中左侧的带权有向图求最短路径,给出每一对顶点之间的最短路径及其路径长度在求解过程中的变化。

在这里插入图片描述

图 8.5.5 带权图和邻接矩阵

【解】

根据图 8.5.5 中的带权有向图,可得所对应的邻接矩阵 g g g ,如图 8.5.5 右侧图所示。

根据弗洛伊德算法,所对应的 4 × 4 4\times 4 4×4 的矩阵序列是: A − 1 , A 0 , A 1 , A 2 , A 3 ( n = 4 ) \pmb{A}_{-1},\pmb{A}_0,\pmb{A}_1,\pmb{A}_2,\pmb{A}_3~(n=4) A1,A0,A1,A2,A3 (n=4)

(1) A − 1 \pmb{A}_{-1} A1 ,不经过任何中间结点,任何两个顶点之间的距离,即为邻接矩阵
A − 1 = g = [ 0 1 ∞ 4 ∞ 0 9 2 3 5 0 8 ∞ ∞ 6 0 ] \begin{split} \pmb{A}_{-1}=g=\begin{bmatrix}0&1&\infty&4\\\infty&0&9&2\\3&5&0&8\\\infty&\infty&6&0 \end{bmatrix} \end{split} A1=g= 031059064280
用矩阵 path − 1 \text{path}_{-1} path1 保存此时的最短路径,注意,此时意味着两个顶点之间是否有直接地、不经过中间顶点的路径。如果顶点 i i i 和顶点 j j j 之间有路径,则 p a t h − 1 [ i ] [ j ] = i \pmb{path}_{-1}[i][j]=i path1[i][j]=i ,否则 p a t h − 1 [ i ] [ j ] = − 1 \pmb{path}_{-1}[i][j]=-1 path1[i][j]=1

  • 元素 A − 1 [ 0 ] [ 0 ] \pmb{A}_{-1}[0][0] A1[0][0] (下标按照图 3 右侧的邻接矩阵方式表示),说明顶点 0 到顶点 0 没有路径,则 p a t h − 1 [ 0 ] [ 0 ] = − 1 \pmb{path}_{-1}[0][0]=-1 path1[0][0]=1
  • 元素 A − 1 [ 0 ] [ 1 ] = 1 \pmb{A}_{-1}[0][1]=1 A1[0][1]=1 ,说明顶点 0 到顶点 1 的路径权值是 1 ,有路径,则 p a t h − 1 [ 0 ] [ 1 ] = 0 \pmb{path}_{-1}[0][1]=0 path1[0][1]=0
  • 元素 A − 1 [ 0 ] [ 2 ] = ∞ \pmb{A}_{-1}[0][2]=\infty A1[0][2]= ,说明顶点 0 到顶点 2 没有路径,则 p a t h − 1 [ 0 ] [ 2 ] = − 1 \pmb{path}_{-1}[0][2] =-1 path1[0][2]=1
  • ⋯ \cdots

用上述方法,即可得到矩阵 p a t h − 1 \pmb{path}_{-1} path1 。具体实现的时候,可以按照行号观察 A − 1 \pmb{A}_{-1} A1 ,在某一行中,其元素非 0 0 0 或者非 ∞ \infty ,则说明该行号到所对应列有路径,那么对应到 p a t h − 1 \pmb{path}_{-1} path1 中的相应位置元素即为 A − 1 \pmb{A}_{-1} A1 中的该行的行号;否则为 − 1 -1 1 。所以得到矩阵 p a t h − 1 \pmb{path}_{-1} path1 如下:
p a t h − 1 = [ − 1 0 − 1 0 − 1 − 1 1 1 2 2 − 1 2 − 1 − 1 3 − 1 ] \pmb{path}_{-1}=\begin{bmatrix}-1&0&-1&0\\-1&-1&1&1\\2&2&-1&2\\-1&-1&3&-1\end{bmatrix} path1= 1121012111130121
(2) A 0 \pmb{A}_0 A0 ,以顶点 0 为中间点,任何两个顶点之间的最短距离,即 A 0 [ i , j ] = min ⁡ ( A − 1 [ i , j ] , A − 1 [ i , 0 ] ) + A − 1 [ 0 , j ] ) \pmb{A}_0[i,j]=\min(\pmb{A}_{-1}[i,j],\pmb{A}_{-1}[i,0])+\pmb{A}_{-1}[0,j]) A0[i,j]=min(A1[i,j],A1[i,0])+A1[0,j])
A 0 [ 0 , 0 ] = 0 A 0 [ 0 , 1 ] = min ⁡ ( A − 1 [ 0 , 1 ] , A − 1 [ 0 , 0 ] + A − 1 [ 0 , 1 ] ) = 1 A 0 [ 0 , 2 ] = min ⁡ ( A − 1 [ 0 , 2 ] , A − 1 [ 0 , 0 ] + A − 1 [ 0 , 2 ] ) = ∞ ⋮ A 0 [ 2 , 1 ] = min ⁡ ( A − 1 [ 2 , 1 ] , A − 1 [ 2 , 0 ] + A − 1 [ 0 , 1 ] ) = 4 ⋮ \begin{split} &\pmb{A}_0[0,0] = 0 \\&\pmb{A}_0[0,1]=\min(\pmb{A}_{-1}[0,1],\pmb{A}_{-1}[0,0]+\pmb{A}_{-1}[0,1])=1 \\&\pmb{A}_0[0,2]=\min(\pmb{A}_{-1}[0,2],\pmb{A}_{-1}[0,0]+\pmb{A}_{-1}[0,2])=\infty \\&~\vdots \\&\pmb{A}_0[2,1]=\min(\pmb{A}_{-1}[2,1],\pmb{A}_{-1}[2,0]+\pmb{A}_{-1}[0,1])=4 \\&~\vdots \end{split} A0[0,0]=0A0[0,1]=min(A1[0,1],A1[0,0]+A1[0,1])=1A0[0,2]=min(A1[0,2],A1[0,0]+A1[0,2])= A0[2,1]=min(A1[2,1],A1[2,0]+A1[0,1])=4 
最终得到 A 0 \pmb{A}_0 A0 如下:
A 0 = [ 0 1 ∞ 4 ∞ 0 9 2 3 4 0 7 ∞ ∞ 6 0 ] \pmb{A}_0=\begin{bmatrix}0&1&\infty&4\\\infty&0&9&2\\3&4&0&7\\\infty&\infty&6&0\end{bmatrix} A0= 031049064270
如果 A 0 [ i , j ] = A 1 [ i , j ] \pmb{A}_0[i,j]=\pmb{A}_1[i,j] A0[i,j]=A1[i,j] ,则说明路径没有调整,即 p a t h 0 [ i , j ] = p a t h − 1 [ i , j ] \pmb{path}_0[i,j]=\pmb{path}_{-1}[i,j] path0[i,j]=path1[i,j]

否则,路径已经调整,即:经过顶点 k k k 的路径较短,则 A k [ i ] [ j ] = A k − 1 [ i ] [ k ] + A k − 1 [ k ] [ j ] \pmb{A}_k[i][j]=\pmb{A}_{k-1}[i][k]+\pmb{A}_{k-1}[k][j] Ak[i][j]=Ak1[i][k]+Ak1[k][j] path k [ i ] [ j ] = a = path k − 1 [ k ] [ j ] \text{path}_k[i][j]=a=\text{path}_{k-1}[k][j] pathk[i][j]=a=pathk1[k][j] ,所以有: p a t h 0 [ i , j ] = p a t h − 1 [ 0 , j ] \pmb{path}_0[i,j]=\pmb{path}_{-1}[0,j] path0[i,j]=path1[0,j]

由以上规则,可得矩阵 p a t h \pmb{path} path
p a t h 0 = [ − 1 0 − 1 0 − 1 − 1 1 1 2 0 − 1 0 − 1 − 1 3 − 1 ] \pmb{path}_{0}=\begin{bmatrix}-1&0&-1&0\\-1&-1&1&1\\2&0&-1&0\\-1&-1&3&-1\end{bmatrix} path0= 1121010111130101
(3) A 1 \pmb{A}_1 A1 ,以顶点 1 为中间点,任何两点之间的最短距离,即 A 1 [ i , j ] = min ⁡ ( A 0 [ i , j ] , A 0 [ i , 1 ] + A 0 [ 1 , j ] ) \pmb{A}_1[i,j]=\min(\pmb{A}_0[i,j],\pmb{A}_0[i,1]+\pmb{A}_0[1,j]) A1[i,j]=min(A0[i,j],A0[i,1]+A0[1,j])
A 1 [ 0 , 0 ] = 0 A 1 [ 0 , 1 ] = min ⁡ ( A 0 [ 0 , 1 ] , A 0 [ 0 , 1 ] + A 0 [ 1 , 1 ] ) = 1 A 1 [ 0 , 2 ] = min ⁡ ( A 0 [ 0 , 2 ] , A 0 [ 0 , 1 ] + A 0 [ 1 , 2 ] ) = 10 A 1 [ 0 , 3 ] = min ⁡ ( A 0 [ 0 , 3 ] , A 0 [ 0 , 1 ] + A 0 [ 1 , 3 ] ) = 3 A 1 [ 1 , 0 ] = min ⁡ ( A 0 [ 1 , 0 ] , A 0 [ 1 , 1 ] + A 0 [ 1 , 0 ] ) = ∞ ⋮ \begin{split} &\pmb{A}_1[0,0]=0 \\&\pmb{A}_1[0,1]=\min(\pmb{A}_0[0,1],\pmb{A}_0[0,1]+\pmb{A}_0[1,1])=1 \\&\pmb{A}_1[0,2]=\min(\pmb{A}_0[0,2],\pmb{A}_0[0,1]+\pmb{A}_0[1,2])=10 \\&\pmb{A}_1[0,3]=\min(\pmb{A}_0[0,3],\pmb{A}_0[0,1]+\pmb{A}_0[1,3])=3 \\&\pmb{A}_1[1,0]=\min(\pmb{A}_0[1,0],\pmb{A}_0[1,1]+\pmb{A}_0[1,0])=\infty \\~&\vdots \end{split}  A1[0,0]=0A1[0,1]=min(A0[0,1],A0[0,1]+A0[1,1])=1A1[0,2]=min(A0[0,2],A0[0,1]+A0[1,2])=10A1[0,3]=min(A0[0,3],A0[0,1]+A0[1,3])=3A1[1,0]=min(A0[1,0],A0[1,1]+A0[1,0])=
最终得到:
A 1 = [ 0 1 10 3 ∞ 0 9 2 3 4 0 6 ∞ ∞ 6 0 ] \pmb{A}_1=\begin{bmatrix}0&1&10&3\\\infty&0&9&2\\3&4&0&6\\\infty&\infty&6&0\end{bmatrix} A1= 03104109063260
比较 A 1 \pmb{A}_1 A1 A 0 \pmb{A}_0 A0 ,若相等,则 p a t h 1 [ i , j ] = p a t h 0 [ i , j ] \pmb{path}_1[i,j]=\pmb{path}_0[i,j] path1[i,j]=path0[i,j] ,否则 p a t h 1 [ i , j ] = p a t h 0 [ 1 , j ] \pmb{path}_1[i,j]=\pmb{path}_0[1,j] path1[i,j]=path0[1,j] ,由此得到:
p a t h 1 = [ − 1 0 1 1 − 1 − 1 1 1 2 0 − 1 1 − 1 − 1 3 − 1 ] \pmb{path}_1=\begin{bmatrix}-1&0&1&1\\-1&-1&1&1\\2&0&-1&1\\-1&-1&3&-1\end{bmatrix} path1= 1121010111131111
依照上述方法,继续计算 A 2 , A 3 \pmb{A}_2,\pmb{A}_3 A2,A3 ,最终得到:
A 3 = [ 0 1 9 3 11 0 8 2 3 4 0 6 9 10 6 0 ] p a t h 3 = [ − 1 0 3 1 2 − 1 3 1 2 0 − 1 1 2 0 3 − 1 ] \begin{split} &\pmb{A}_3=\begin{bmatrix}0&1&9&3\\11&0&8&2\\3&4&0&6\\9&10&6&0\end{bmatrix} \\&\pmb{path}_3=\begin{bmatrix}-1&0&3&1\\2&-1&3&1\\2&0&-1&1\\2&0&3&-1\end{bmatrix} \end{split} A3= 011391041098063260 path3= 1222010033131111
A 3 [ i , j ] \pmb{A}_3[i,j] A3[i,j] 可以得出每一对顶点之间的最短距离,由 p a t h 3 [ i , j ] \pmb{path}_3[i,j] path3[i,j] 能找出对应着该对顶点之间的路径。

例如: A 3 [ 1 , 2 ] = 8 \pmb{A}_3[1,2]=8 A3[1,2]=8 ,即顶点 1 到顶点 2 的最短路径长度是 8。对应的路径: p a t h 3 [ 1 , 2 ] = 3 \pmb{path}_3[1,2]=3 path3[1,2]=3 ,即顶点 2 的前驱是顶点 3,即路径 < 3 , 2 > <3,2> <3,2> 。由于是从顶点 1 出发,顶点 3 是中间点。而从 1 → 3 1\to3 13 的路径: p a t h 3 [ 1 , 3 ] = 1 \pmb{path}_3[1,3]=1 path3[1,3]=1 ,即顶点 3 的前驱是 1。故从 1 → 2 1\to2 12 的路径是 < 1 , 3 , 2 > <1,3,2> <1,3,2> ,这条路径最短,长度是 8。

http://www.dtcms.com/wzjs/216974.html

相关文章:

  • 怎么登陆公司网站的后台青岛新闻最新消息
  • 中小企业做网站百度竞价排名展示方式
  • 平阳手机网站制作常见的网络推广方式
  • 网站建设面谈销售话术南京seo报价
  • 网站客服的调研工作怎么做做广告推广哪个平台好
  • 263企业邮箱登录口天津外贸seo推广
  • 烟台建设工程施工图审查系统网站网站设计论文
  • 有没有那种帮人做ppt的网站如何建立网站的步骤
  • 青岛胶东建设国际机场网站手机版谷歌浏览器入口
  • 湖南张家界建设局网站网站链接分析工具
  • 个人可以建设头条网站吗seo排名优化价格
  • 学校网站建设多少钱百度推广一天烧多少钱
  • 工信部网站备案的需要幕布下载百度免费
  • 35公司做的网站漏洞短链接在线生成免费
  • 设计教育教学活动的注意事项google seo
  • 福建省网络公司排名企业站seo案例分析
  • 深圳网站制作的公司有哪些品牌网络推广方案
  • 做网站价格中国今天最新军事新闻
  • 注册个网站要多少钱网络广告发布
  • 南昌seo关键词排名苏州seo整站优化
  • 图片网站建设色盲测试图片
  • wordpress建站环境北京网站建设公司优势
  • 怎么创建网站免费的网络运营怎么学
  • 涛飞网站建设干净无广告的搜索引擎
  • 有什么好看的网站资源网站关键字优化公司
  • 科技设计网站微信群发软件
  • 宝安营销型网站设计惠州seo按天付费
  • 福州网站建设哪家公司好什么是网络营销平台
  • 做家政服务类网站的要求百度排行榜明星
  • 淄博网站制作设计公司网络推广一般都干啥