深入理解噴泉碼------噴泉碼度分佈生成流程

引言

       在上篇文章中我們講到了LT碼的編譯碼算法流程,這次我們着重來講度分佈生成流程,編譯碼算法是教會你怎麼用,但如果你想理解LT碼的核心原理,那麼你一定要對度分佈的生成有一點直觀的感覺。OK,這篇文章會盡量的從簡單的角度來引導你思考爲什麼要怎麼去設計度分佈,度分佈的設計的理念和意義在哪裏。但是本文並不會告訴你爲什麼最終選擇了這樣一個度分佈(好吧,其實可能Luby也是拍腦袋想出來的,他的靈感來自於水的紋波諧振的過程,呃...所以說大佬真的是大佬),下面開始我們的正題。

思考

       如果我們想要設計一個數字噴泉的算法,我們應該怎麼做呢?最容易想到的,就是我每次隨機發送一個原始數據包嘛,反正我一直髮,接收端接收到足夠多的數據包,也肯定能恢復出原始數據的。是的,這就是數字噴泉的含義,但我們也能明顯的感受到,這麼發的冗餘度太高了,要接收很多很多包才能恢復原始數據。根據香農第二定律我們知道,肯定有碼字能逼近香農限的,那我們如何去設計這個碼子讓他既能貼近香農限,又可以擁有數字噴泉的能力呢?OK,稍微回憶下我們的LT碼編譯碼過程,如果不瞭解LT碼的編譯碼過程的,請看我的上一篇博文,下面我們開始對LT碼的度分佈設計進行分析。

LT碼的度分佈設計

       回憶LT碼的編譯碼過程,我們以度數來表示一個編碼包中所包含的原始數據包數量,根據我們剛纔的分析,我們需要LT碼能夠達到條件(1):接受方能夠在接收到儘可能少的數據包的情況下成功恢復出源數據,儘可能的逼近香農限,提高信道利用率。反映在噴泉碼的編碼算法上,就是每次編碼產生的編碼包應該儘量多包含一些源數據的信息,也就是生成編碼包時選取的度數應該儘可能的大。同時,度數高也就意味着要進行的異或預算次數高,算法複雜度高,爲了讓這個碼字實用性更強,那麼意味着我們要滿足條件(2):在能夠成功譯碼的條件下,度數儘可能的小,以保障較小的譯碼開銷。

       對於極端條件下的條件(1),,每一個編碼數據包爲所有原始數據包做異或的結果,但在這種情況下,數據是無法完成譯碼的。而對於極端條件下的條件(2)呢?就是我們在思考部分提出的最簡單的數字噴泉算法了,我們對這個方法進行數學建模,可以將其抽象爲統計概率論中的一個經典問題——投球問題,投球問題的具體描述爲:假設獨立地把n個球扔到k個筐中,球扔到每一個筐中的概率均爲1/k,求每個筐中至少有一個球的概率。對應到LT碼上,原始數據的每一個分片就是盒子,當每個被編上序號的盒子都至少有一個對應編號的球的時候,則代表此時的原始數據是可以成功譯碼的,當k 相對較大時,在扔了n個球后,某個盒子仍爲空盒子的概率爲:

                                                                        

       則此時不存在空盒子的概率爲:

                                                                              

       我們定義譯碼失敗的概率爲\delta,則有:

                                                                        

       可得

                                                                      

       可以看到,在條件(2)的思路下當\delta較小時, n 的值會非常大,所以,單獨考慮條件(1)或條件(2)的編碼方式實用性很差,而在實際情況的度分佈設計是在這兩個條件下不斷折中的過程。

       Luby提出了兩種儘可能讓所需的編碼符號數和總的符號模二加次數達到最少的度分佈,理想孤波分佈(Ideal Solition distribution)和魯棒孤波分佈(Robust Solition distribution),這兩種分佈的設計都是從孤波分佈中得到的啓發,這種分佈的特點是紋波的擴散和折射處於完全平衡的狀態,形象的來說,就像石子投入到湖中產生的漣漪。而在LT碼中,考慮BP譯碼算法,每次會選取一個度數爲1的數據包開始譯碼,這個度數爲1 的數據包就類似於頭入水中的石頭,產生的紋波就是與這個數據包相關聯的其它源數據分片,隨着譯碼過程的進行,不斷會譯碼出新的源數據分片,根據這些新的分片又可以產生新的紋波,每進行一次
譯碼,紋波的振幅就會減小,當一個紋波對應的所有源數據分片均可譯時,這個紋波就會消失。一個良好的LT碼度分佈,紋波的產生速率應該和其處理速率相等。

結語

       文章到這裏基本就說完了,本文想闡明的是LT碼設計的原則,思路,以及核心目的。至於爲什麼最終魯棒孤波分佈達到了特別好的效果,我想這就是大佬們的積累和靈感迸發出的火花吧,當然你也可以根據度分佈的原則來創造自己的良好度分佈,但是,這真的不是一個很容易的過程。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章