首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
编程语言
> 详细
互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
时间:
2015-04-01 20:04:51
阅读:
221
评论:
0
收藏:
0
[点我收藏+]
标签:
把周末写了一半的东西继续补齐了,实现了完美的一天。
我们知道的一个事实就是IP地址实在太多了,根本就不可能统一的管理起来,无论从数据平面还是从控制/管理平面上说都是这样。所以,IP协议被设计出来就是可扩展的。对于IP路由来讲,路由计算是逐跳进行的,当然也支持“源路由”选项,源路由就是说数据在出发前就已经把路线规划好了,逐跳路由是IP路由的标准形式,也就是说,IP数据包是在路上即时规划路线的。
我比较喜欢IP路由是因为这也是我旅行的方式,我喜欢旅行,但是我不喜欢事先订酒店,事先规划路线,导航等,我的方式是在路上看路牌前行,到了临时停下的地方之后背着行囊找住处,然后走到哪算哪,这是一种说走就走且没有目的地的游荡...当然,IP数据包是有目的地的。
逐跳全局最优化
IP路由是在每一台路由器上逐跳路由的,那么就产生了一个问题,偌大一个互联网,该怎么相信这么多逐跳路由拼接起来的一条完整的路径确实是最优化的呢?答案显然是确定的,问题是怎么证明它。
路由算法
书上讲,路由算法基本分为距离矢量算法和链路状态算法,各自的协议代表作就是RIP和OSPF(我就是靠着这两个找到的第一份工作),确实是这样,但是从这些算法的正确性的证明过程中,你就会发现,确实是“逐跳的最优化路由真的就是全局的最优化路由”。本文中我仅仅给出基于链路状态路由协议的Dijkstra算法的证明,因为全网每台设备的链路状态数据库都是相同的,所以它是很好理解的。
Dijkstra算法正确性证明
首先要给出Dijkstra算法正确性的证明,才能进行后续的。毕竟,Dijkstra算法本身只是指导了step by step的操作步骤,并没没能证明这么折腾一圈得到的最短路径树中的每一条路径确实是最短的。而要想证明逐跳全局最优化原则,需要这个事实。
下面的示意图给出了Dijkstra算法正确性的简单证明,详细完备的数学证明可以参照这个思路:
逐跳全局最优化的问题
下面的示意图点名了逐跳全局最优化的问题所在:
逐跳全局最优化的证明
下面的示意图给出了逐跳全局最优化的简单证明,证明方式多种多样,我这里给出的仅仅是其中一种:
附:Dijkstra算法的贪心模型
如果我们在地上倒上一杯水,观察水摊开渗透的痕迹,就会理解Dijkstra算法,它确实是不证自明的。大自然是懒惰的,总是用最省力的方式行事,水分子在落地那个点开始,在崎岖不平的地上由于重力(暂时不考虑其它分子力)沿着一定的路径到达一系列点,这些路径一定是最短路径。我们可以把地面的崎岖程度视为路径的权值,这不就和Dijkstra算法模型一模一样吗?
互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
标签:
原文地址:http://blog.csdn.net/dog250/article/details/44810755
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
Spring Cloud 从入门到精通(一)Nacos 服务中心初探
2021-07-29
基础的排序算法
2021-07-29
SpringBoot|常用配置介绍
2021-07-29
关于 .NET 与 JAVA 在 JIT 编译上的一些差异
2021-07-29
C语言常用函数-toupper()将字符转换为大写英文字母函数
2021-07-29
《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)
2021-07-28
4-1 YAML配置文件 注入 JavaBean中
2021-07-28
【python】 用来将对象持久化的 pickle 模块
2021-07-28
马拉车算法
2021-07-28
用Python进行冒泡排序
2021-07-28
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!