第四章 空時籬柵碼之搜尋演算法
4.3 應用於空時籬柵碼搜尋之維特比演算法
當我們選定一組籬柵空時碼編碼器時,我們要針對所有可能information bits 產生出來的 coded symbols,兩兩做距離比較;此部分,目的是為了簡化比較時的複雜度。Viterbi algorithm 是降低 ML algorithm 的一種方法,我們將運用 trellis 的特性,用 Viterbi algorithm 爭取時間,來快速獲得結果。方法如下:
Step 1:
選定一組籬柵空時碼時,我們隨即可以製造所對應的trellis。
Step 2:
於時間t,從 State 0 出發,輸入一組 information bits X 至籬柵空時碼編碼器,在籬柵上,
對應一條path,獲得一組 coded symbol 的組合。例如: information bits=(0000000),從 state0 出發,得到的 path 如下(實線表示)
不失其一般性,產生error 的 codes 為
{ } ˆ X
,在某一時間{ } ˆ X
於State 0 開始與X 分離,注 意這裡所定義的{ } ˆ X
為一個集合,代表所有的error codes 都是在 State 0 開始與X
有分歧。如下圖所示:
{ } ˆ X
用虛線表示,X 用實線表示。Step 3:
經過constraint length 時間過後,
{ } ˆ X
裡存在與X 相交會,並存在與 X 的歐式距離很小 的error codes,如上圖一。此外,在比較的過程中,我們盡可能避免不必要的”兩兩比較”。使用 VA,即可達到我們的需求。在此計算距離時,皆是計算
{ } ˆ X
與 X 的距離。如下圖所示:
2 4
2
圖(三) 圖(四)
圖(二)
圖(一)
經由上面幾個簡單的步驟,很快就可以找到STTC 的最小 trace,不必將全部的 coded symbol 做兩兩比較。在執行 Viterbi 的過程中,我們必須注意下列準則:
在
t
時間從state 0 發散,在 t+1、t+2...時,不需再計算從 state 0 發散出去的 branch,因為這個動作與在時間t 從 state 0 發散的作用相同,將會得到相同的結果。如下圖,
列舉一個不必要的例子:
我們期望發散出去的 path
{ } ˆ X
,能夠盡快與 X 再結合,這樣才能盡快計算出最短距 離。所以當{ } ˆ X
與 X 結合在一起的時候,就可以決定可能的最小距離。尚未結合在 一起的path,儘管此 path 比目前暫存的最小距離短,但不能用它來決定最小距離。因為後續延伸的branch 仍有可能影響結果。以下面的例子,來觀察:
在t=3 時,與X 結合的 branch 中,最小的為 8;state 1、state 2、state3 的 survivor
8 4 6
6 12 8
8
= 1
t t = 2 t = 3 t = 4
redundancy!!10 8 4 4 10 6
6 12 8
8 6 6 2
4 2
4
4
與X 距離分別為 4、6、6,以上三個值,皆小於目前最小的 trace→8,但我們不可 將這些值(例如:4),誤以為是最小的 trace。一切的值要在與X 結合後,才能做決 定;例如本來在t=3 的所有 survivor path,在 t=4 與X 結合後,皆大於或等於 8,假 如在t=3 即決定最小 trace 為 4,就會出錯。一定要與X 結合之後,才能決定最小 trace 的原因,是由於我們預先知道 STTC 的編碼方式,在籬柵中最後勢必走到 all zero state,碼與碼間,在籬柵上所代表的路徑一定會有交會重疊的時候,假如還沒有與 X 結合之前,就判斷碼與碼間的 trace,是不合理的做法,甚至不存在此錯誤的 trace 值。
當 survivor 的 cost 大於目前所決定出的最小 trace,我們就不必對此 survivor 做延伸 了。如下圖所示
不過上面,僅單究對State 0 發散的
{ } ˆ X
做處理,還要考慮其他狀況,比如從State 1、State 2、State 3 發散的
{ } ˆ X
做處理。如下面的例子:所以我們必須回到step 2,對於
X
與{ } ˆ X
分別在State 1、State 2、State 3 發散的情 況,做討論;此外,對於非all zero input 的 information bits 也要做比較,如下圖。Go Ahead!!
End!!
2
4
2
10 8
8 8 =
8 12 >
8 10 >
8 10 >
8 4 <
8 12 >
8 8 =
8 10 >
8 12 >
10
= 1
t t = 2 t = 3 t = 4 t = 1 t = 2 End!! t = 3 t = 4
利用籬柵的特性,使用 Viterbi 演算法去搜尋最佳籬柵空時碼編碼方式,簡化全域搜尋 方法中,phase 2 的複雜度,大幅加速搜尋的速度。