維特比算法學習

前言:作為堂堂數(shù)學系的學生,竟然很多算法都不會。表示對自己很失望,今天學習了一下維特比算法,發(fā)現(xiàn)很簡單,而且隱約中感覺大學應該學過,回到宿舍回顧一下。

那么什么是維特比算法呢?

其實它屬于動態(tài)規(guī)劃的領域。下面舉一個簡單的例子進行介紹:

1,從城市A到城市C要經過中間的很多B城市點(B1到B20),而每個城市點又有幾個可能經過的節(jié)點(比如B2有B21、B22到B210)。也就是說從A到C,每一列必經過一點,如下圖:

2,問題是:在每條路徑長度已知的情況下,如果找到最短的路徑?

3,常規(guī)方法:計算沒一條可能的路徑的長度,其計算量為10的21次方,

4,采用viterbi算法:

4.1)原理:

上圖是截圖自吳軍博士的《數(shù)學之美》第二版的第26章。

通俗來說就是:

? ? ? ? 1,假如A到C的最短路線是A-B33-C,那么“A到B33的最短路線”跟“A到C的最短路線”重合。否則就可以用“A到B33的最短路線”來替換“A到C的最短路線”中的那一段了。

? ? ? ? 2,如果知道了“A到 B3的每一個子節(jié)點 的最短路線”(圖中共有10條),那么:“A到C的最短路線”必定經過其中一條。

5,上面4中是思路,這里講一下具體的實現(xiàn)。

先算出A到B1的每一個節(jié)點的最短路徑,(計算量為10);【得到10條最短路徑】

然后計算在這10條路徑,分別到B2的每一個節(jié)點的最短路徑,(計算量為10*10);【得到10條最短路徑】

同上,到B3、B4、B3、B4、……B19、B20、C 的每一個節(jié)點的最短路徑。

至此,得到全局最短路徑??偟挠嬎懔繛椋?0+10*10*19+10=1920。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • 《機械制圖》10%(50+30=80) 單項選擇題 Q-B1-E-001 L 基本幅面不能滿足需要而采用加長幅面時...
    開源時代閱讀 4,364評論 1 1
  • 目錄 但還是愛,深藏于心 前情回顧 06 Sam的家和家人 秋天該很好,你若尚在場。--《春夏秋冬》張國榮 當媽媽...
    盛靳閱讀 477評論 0 0

友情鏈接更多精彩內容