互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
来源:互联网 发布:java论坛网站建设 编辑:程序博客网 时间:2024/04/27 03:07
把周末写了一半的东西继续补齐了,实现了完美的一天。
我们知道的一个事实就是IP地址实在太多了,根本就不可能统一的管理起来,无论从数据平面还是从控制/管理平面上说都是这样。所以,IP协议被设计出来就是可扩展的。对于IP路由来讲,路由计算是逐跳进行的,当然也支持“源路由”选项,源路由就是说数据在出发前就已经把路线规划好了,逐跳路由是IP路由的标准形式,也就是说,IP数据包是在路上即时规划路线的。
我比较喜欢IP路由是因为这也是我旅行的方式,我喜欢旅行,但是我不喜欢事先订酒店,事先规划路线,导航等,我的方式是在路上看路牌前行,到了临时停下的地方之后背着行囊找住处,然后走到哪算哪,这是一种说走就走且没有目的地的游荡...当然,IP数据包是有目的地的。
下面的示意图给出了Dijkstra算法正确性的简单证明,详细完备的数学证明可以参照这个思路:
我们知道的一个事实就是IP地址实在太多了,根本就不可能统一的管理起来,无论从数据平面还是从控制/管理平面上说都是这样。所以,IP协议被设计出来就是可扩展的。对于IP路由来讲,路由计算是逐跳进行的,当然也支持“源路由”选项,源路由就是说数据在出发前就已经把路线规划好了,逐跳路由是IP路由的标准形式,也就是说,IP数据包是在路上即时规划路线的。
我比较喜欢IP路由是因为这也是我旅行的方式,我喜欢旅行,但是我不喜欢事先订酒店,事先规划路线,导航等,我的方式是在路上看路牌前行,到了临时停下的地方之后背着行囊找住处,然后走到哪算哪,这是一种说走就走且没有目的地的游荡...当然,IP数据包是有目的地的。
逐跳全局最优化
IP路由是在每一台路由器上逐跳路由的,那么就产生了一个问题,偌大一个互联网,该怎么相信这么多逐跳路由拼接起来的一条完整的路径确实是最优化的呢?答案显然是确定的,问题是怎么证明它。路由算法
书上讲,路由算法基本分为距离矢量算法和链路状态算法,各自的协议代表作就是RIP和OSPF(我就是靠着这两个找到的第一份工作),确实是这样,但是从这些算法的正确性的证明过程中,你就会发现,确实是“逐跳的最优化路由真的就是全局的最优化路由”。本文中我仅仅给出基于链路状态路由协议的Dijkstra算法的证明,因为全网每台设备的链路状态数据库都是相同的,所以它是很好理解的。Dijkstra算法正确性证明
首先要给出Dijkstra算法正确性的证明,才能进行后续的。毕竟,Dijkstra算法本身只是指导了step by step的操作步骤,并没没能证明这么折腾一圈得到的最短路径树中的每一条路径确实是最短的。而要想证明逐跳全局最优化原则,需要这个事实。下面的示意图给出了Dijkstra算法正确性的简单证明,详细完备的数学证明可以参照这个思路:
逐跳全局最优化的问题
下面的示意图点名了逐跳全局最优化的问题所在:逐跳全局最优化的证明
下面的示意图给出了逐跳全局最优化的简单证明,证明方式多种多样,我这里给出的仅仅是其中一种:附:Dijkstra算法的贪心模型
如果我们在地上倒上一杯水,观察水摊开渗透的痕迹,就会理解Dijkstra算法,它确实是不证自明的。大自然是懒惰的,总是用最省力的方式行事,水分子在落地那个点开始,在崎岖不平的地上由于重力(暂时不考虑其它分子力)沿着一定的路径到达一系列点,这些路径一定是最短路径。我们可以把地面的崎岖程度视为路径的权值,这不就和Dijkstra算法模型一模一样吗? 0 0
- 互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
- Dijkstra最短路径算法的优化
- 全局最短路径搜索算法 Dijkstra
- 单源有权图的最短路径 Dijkstra算法(证明不能解决负权边)7.1.2
- [最短路]使用优先队列优化的Dijkstra算法
- 详解Dijkstra算法(含数学证明和优化)
- 最短路算法 堆优化 dijkstra+heap
- IP路由查找的“最长匹配原则”
- 【计算机网络实验三】路由的dijkstra算法
- Dijkstra 算法 -方法、算法、代码和正确性的证明
- 堆优化的Dijkstra算法
- dijkstra最短路径算法和普里姆最小生成树算法优化的关键
- [ZZ]最短路的算法---Dijkstra算法
- 最短路径之 Dijkstra的优化
- HDOJ 3790 最短路径问题 (dijkstra算法的优化,优先队列)
- POJ 3268 Silver Cow Party 最短路—dijkstra算法的优化。
- 介绍一个全局最优化的方法:随机游走算法(Random Walk)
- 最短路径Dijkstra算法-优先队列优化
- Solr搜索的排序打分规则探讨
- [LeetCode]3Sum
- 程序员,你适合做一个项目经理吗?
- ocx 控件注册 爆出 “逐用户重定向” 的错误
- 数字转中文金额无限位数终极算法(验证程序,数组连接,固定数组变长)
- 互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
- JDK安装与环境变量配置
- R语言学习笔记(一)
- HIFB开发流程
- SVN分支与合并透析
- Java 并发与线程池应用
- private 与构造函数
- java中volatile关键字的含义
- Android 获取输入法高度