维特比算法的java实现_维特比算法通俗明白
維特比算法說白了就是動態規劃實現最短路徑,只要知道“動態規劃可以降低復雜度”這一點就能輕松理解維特比算法維特比算法是一個特殊但應用最廣的動態規劃算法,利用動態規劃,可以解決任何一個圖中的最短路徑問題。而維特比算法是針對一個特殊的圖——籬笆網絡的有向圖(Lattice )的最短路徑問題而提出的。 它之所以重要,是因為凡是使用隱含馬爾可夫模型描述的問題都可以用它
維特比算法說白了就是動態計劃實現最短路徑,只要知道“動態計劃可以降低復雜度”這一點就能輕松明白維特比算法
維特比算法是一個特殊但應用最廣的動態計劃算法,行使動態計劃,可以解決任何一個圖中的最短路徑問題。而維特比算法是針對一個特殊的圖——籬笆網絡的有向圖(Lattice )的最短路徑問題而提出的。 它之所以主要,是由于通常使用隱含馬爾可夫模子形貌的問題都可以用它來解碼,包羅今天的數字通信、語音識別、機器翻譯、拼音轉漢字、分詞等。——《數學之美》 ps 多處摘錄此書,不再贅述。
籬笆網絡有向圖的特點是統一列節點有多個,而且和上一列節點交織地連接起來。統一列節點代表統一個時間點上差別的狀態的并列,也許由于這種一列一列整齊的節點和交織的邊很像籬笆而得名。
假設上圖每一列劃分有n1……nn個節點,若是不使用動態的話,那么盤算復雜度就是O(n1*n2……nn)。
維特比算法在分詞中的應用
很久之前寫的東西,有不少謬誤。維特比算法應該特指定義在柵格網絡上的動態規劃算法,其在分詞中的應用請參考維特比算法。在維特比算法通俗理解中,記錄了我對維特比算法的粗淺理解,這里結合Ansj中文分詞的源碼,記錄一下維特比算法在分詞中的應用。原子分詞Ansj分詞的第一步是原子切分,所謂原子切分就是將一個句子拆成所有可能的單詞,比如“商品和服務”就會被拆成:始##始
機器學習 分類
而維特比算法的精髓就是,既然知道到第i列所有節點Xi{j=123…}的最短路徑,那么到第i+1列節點的最短路徑就即是到第i列j個節點的最短路徑+第i列j個節點到第i+1列各個節點的距離的最小值。
這是一句大白話,所謂中文偽碼。
剖析一下復雜度,假設整個籬笆有向圖中每一列節點最多有D個(也就是圖的寬度為D),而且圖一共有N列,那么,每次盤算至多盤算D*D次(從i列的D個節點中挑一個盤算到i+1列D個節點的距離)。至多盤算N次。那么復雜度驟減為O(ND2),遠遠小于窮舉O(DN)。
若是你需要一段開箱即用的維特比算法代碼,請參考《通用維特比算法的Java實現》。
本站聲明:此內容來源于碼農場,若有侵權,請聯系我們,我們將及時處理。
總結
以上是生活随笔為你收集整理的维特比算法的java实现_维特比算法通俗明白的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 国外java、IT技术网站汇总
 - 下一篇: R:parse函数和eval函数解析字符