互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明
把周末寫了一半的東西繼續(xù)補(bǔ)齊了,實(shí)現(xiàn)了完美的一天。
我們知道的一個(gè)事實(shí)就是IP地址實(shí)在太多了,根本就不可能統(tǒng)一的管理起來(lái),無(wú)論從數(shù)據(jù)平面還 是從控制/管理平面上說(shuō)都是這樣。所以,IP協(xié)議被設(shè)計(jì)出來(lái)就是可擴(kuò)展的。對(duì)于IP路由來(lái)講,路由計(jì)算是逐跳進(jìn)行的,當(dāng)然也支持“源路由”選項(xiàng),源路由就 是說(shuō)數(shù)據(jù)在出發(fā)前就已經(jīng)把路線規(guī)劃好了,逐跳路由是IP路由的標(biāo)準(zhǔn)形式,也就是說(shuō),IP數(shù)據(jù)包是在路上即時(shí)規(guī)劃路線的。
?????? 我比較喜歡IP路由是因?yàn)檫@也是我旅行的方式,我喜歡旅行,但是我不喜歡事先訂酒店,事先規(guī)劃路線,導(dǎo)航等,我的方式是在路上看路牌前行,到了臨時(shí)停下的 地方之后背著行囊找住處,然后走到哪算哪,這是一種說(shuō)走就走且沒有目的地的游蕩...當(dāng)然,IP數(shù)據(jù)包是有目的地的。
逐跳全局最優(yōu)化
IP路由是在每一臺(tái)路由器上逐跳路由的,那么就產(chǎn)生了一個(gè)問(wèn)題,偌大一個(gè)互聯(lián)網(wǎng),該怎么相信這么多逐跳路由拼接起來(lái)的一條完整的路徑確實(shí)是最優(yōu)化的呢?答案顯然是確定的,問(wèn)題是怎么證明它。
路由算法
書 上講,路由算法基本分為距離矢量算法和鏈路狀態(tài)算法,各自的協(xié)議代表作就是RIP和OSPF(我就是靠著這兩個(gè)找到的第一份工作),確實(shí)是這樣,但是從這 些算法的正確性的證明過(guò)程中,你就會(huì)發(fā)現(xiàn),確實(shí)是“逐跳的最優(yōu)化路由真的就是全局的最優(yōu)化路由”。本文中我僅僅給出基于鏈路狀態(tài)路由協(xié)議的 Dijkstra算法的證明,因?yàn)槿W(wǎng)每臺(tái)設(shè)備的鏈路狀態(tài)數(shù)據(jù)庫(kù)都是相同的,所以它是很好理解的。
Dijkstra算法正確性證明
首先要給出Dijkstra算法正確性的證明,才能進(jìn)行后續(xù)的。畢竟,Dijkstra算法本身只是指導(dǎo)了step by step的操作步驟,并沒沒能證明這么折騰一圈得到的最短路徑樹中的每一條路徑確實(shí)是最短的。而要想證明逐跳全局最優(yōu)化原則,需要這個(gè)事實(shí)。
?????? 下面的示意圖給出了Dijkstra算法正確性的簡(jiǎn)單證明,詳細(xì)完備的數(shù)學(xué)證明可以參照這個(gè)思路:
逐跳全局最優(yōu)化的問(wèn)題
下面的示意圖點(diǎn)名了逐跳全局最優(yōu)化的問(wèn)題所在:
逐跳全局最優(yōu)化的證明
下面的示意圖給出了逐跳全局最優(yōu)化的簡(jiǎn)單證明,證明方式多種多樣,我這里給出的僅僅是其中一種:
附:Dijkstra算法的貪心模型
如 果我們?cè)诘厣系股弦槐?#xff0c;觀察水?dāng)傞_***的痕跡,就會(huì)理解Dijkstra算法,它確實(shí)是不證自明的。大自然是懶惰的,總是用最省力的方式行事,水分子在 落地那個(gè)點(diǎn)開始,在崎嶇不平的地上由于重力(暫時(shí)不考慮其它分子力)沿著一定的路徑到達(dá)一系列點(diǎn),這些路徑一定是最短路徑。我們可以把地面的崎嶇程度視為 路徑的權(quán)值,這不就和Dijkstra算法模型一模一樣嗎?
轉(zhuǎn)載于:https://blog.51cto.com/dog250/1627419
總結(jié)
以上是生活随笔為你收集整理的互联网IP路由的逐跳全局最优化原则-Dijkstra算法证明的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: NLP应该如何学、如何教?斯坦福大学大牛
- 下一篇: 苏宁MOCK测试桩服务建设实践