式中
是在k層以前的累積權(quán)重。也就是說,如果 uk+1,...,Ujl定了,那么為了滿足長度限制,1^就只能在(c k-yk,ck+yk)這個區(qū)間內(nèi)取值。
[0081] 球解碼算法采用深度優(yōu)先的方式,自上而下地在這棵搜索樹上對這些系數(shù)進行搜 索。而在第k(k = m,m-1,. . .,1)層,SE枚舉策略規(guī)定了要按照距(^由近到遠的順序,也就 是使局部權(quán)重Wf 遞增的順序,對上述區(qū)間中的整數(shù)點進行搜索,從而保證首先找到 的格向量的長度較短。具體的實現(xiàn)方法是在每一層都通過一個變化的偏置量%來控制搜 索:
[0082] ?當(dāng)搜索從第k+Ι層到達第k層時,根據(jù)式(6)計算出Ck,令 ok- sgn "" (ck-uk)(當(dāng) X》0 時 Sgni(X)的取值為 1,當(dāng) X < 0 時 Sgni(X)的取值為 0);
[0083] ?剩余的整數(shù)點都按照以下方式搜索:uk- u k+〇k,同時更新偏置 〇k- _〇 k_sgn*(ok) ο
[0084] 當(dāng)搜索順利地訪問到了一個最底層的節(jié)點^時,就找到了當(dāng)前搜索區(qū)域中的一 個格向量,此時需要通過條件判斷來決定是否保留這個向量。即需要計算矩陣[U 1-UklU] 的秩,若秩為k,我們就把找到的系數(shù)向量U存儲為Uk的一個新候選向量,并把搜索區(qū)域的 半徑縮小為其對應(yīng)格向量的長度。而如果秩不為k,那么應(yīng)該舍棄這個U,并繼續(xù)在當(dāng)前的 搜索區(qū)域中搜索。如果在當(dāng)前搜索區(qū)域中再也找不到一個更短、并且能夠滿足rank([ Ul··· Uk P]) = k條件的向量,那么就把最后得到的候選向量返回為Uk;這個U !^寸應(yīng)格向量的長 度,也就是最后的搜索半徑,就是λ k。
[0085] 2· 2搜索過程的初始化優(yōu)化方法
[0086] 我們可以從另一個角度理解基于SE枚舉策略的球解碼算法。球解碼算法把一個 球形搜索區(qū)域構(gòu)造成一棵m層搜索樹,其每一個最底層的葉子節(jié)點都對應(yīng)了搜索區(qū)域中的 一個格向量,而自上而下到達這個葉子節(jié)點的路徑就給出了這個格向量的完整系數(shù)向量。 如果我們令這顆搜索樹所包含的任何一個二層子樹(例如一個特定的u k+1節(jié)點和根據(jù)它的 取值計算出的滿足式(7)的Uk所構(gòu)成的二層子樹)的子節(jié)點都按照使得對應(yīng)的局部權(quán)重 wf遞增的順序從左到右重新排列,那么采用SE枚舉策略時,這棵重排后的搜索樹的任意一 層的節(jié)點都會按照從左到右的順序被搜索到。需要注意的是,從整體來看,同一層節(jié)點的局 部權(quán)重wf并不是從左至右遞增的。此外,這棵搜索樹是由矩陣R和搜索半徑完全決定的。 由于在解決SMP的m次球解碼過程中R始終保持不變,因此之前的球解碼所獲得的中間結(jié) 果可以被利用來加速下一次的球解碼。我們用下面的例子來具體說明。
[0087] 假設(shè)第k次球解碼的初始半徑為rk= I I g ldx〇i) I I,根據(jù)上述重排方法構(gòu)造的搜索樹 的最低兩層如圖1所示;最底層共有12個葉子節(jié)點,分別用序號1至12表示,它們分別對 應(yīng)當(dāng)前的搜索區(qū)域中的12個格向量。使用SE枚舉策略時,這些節(jié)點將按照從左到右的順 序被搜索到?,F(xiàn)在假設(shè)節(jié)點1、2對應(yīng)的系數(shù)向量不滿足秩為k的條件,節(jié)點3對應(yīng)的系數(shù) 向量(記為U1.)能夠滿足秩為k的條件,此時便把S1存儲為Uk的候選,并將搜索半徑縮小 為其對應(yīng)格向量的長度半徑縮小后,原搜索區(qū)域中那些長度y|Rfl1:||的格向量就會 被排除在新搜索區(qū)域外,我們假設(shè)節(jié)點3、4、7、10、11、12對應(yīng)的格向量都被排除了。搜索繼 續(xù)往右進行。首先找到的節(jié)點5對應(yīng)的系數(shù)向量不滿足秩為k的條件,繼而找到節(jié)點6對 應(yīng)的系數(shù)向量(記為\ )能夠滿足秩為k的條件,因此接下來要把:A2存儲為Uk的新候選, 并將搜索半徑縮小為IfRii21。假設(shè)這次半徑縮小之后又將節(jié)點6和9排除在了新搜索區(qū)域 外,因此只剩下節(jié)點8。當(dāng)搜索到節(jié)點8時,發(fā)現(xiàn)其對應(yīng)的系數(shù)向量不滿足秩為k的條件,而 此時的搜索區(qū)域中已經(jīng)不存在其他格向量,因此球解碼將\返回為u k。
[0088] 接下來重新開始第k+1次球解碼來尋找vk+1,如果用I I gidx〇i+1) I I作為初始半徑 rk+1,則有rk+1> r k,即此次球解碼的搜索范圍將變大。而實際上,我們可以利用上一次球解 碼的中間結(jié)果來縮小搜索范圍。假設(shè)我們通過計算發(fā)現(xiàn)HtnkGul ···!!,: PiCilD = A +1,那 么就可以把||Rfij用作初始rk+1、fi:i用作uk+1的初始候選。此外我們知道,此時的搜索樹就 是圖1所示的搜索樹種排除了節(jié)點3、4、7、10、11、12后的剩余部分,并且已知節(jié)點1、2、5、6 是不滿足秩為k+Ι的條件的,因此,我們可以直接從節(jié)點6往右開始搜索。在這個例子中, 節(jié)點8和節(jié)點9將被依次找到,如果它們都不能使得秩為k+Ι的條件得到滿足,那么就會 被返回為uk+1。顯然,通過這樣的優(yōu)化方法,第k+Ι次球解碼的復(fù)雜度將會大大降低,搜索的 效率將會得到極大提升。
[0089] 三·總結(jié):
[0090] 我們把本發(fā)明構(gòu)造的精確求解實數(shù)格逐次最小量問題的方法命名為SMPR方法 (算法SMPR)。針對m維格£(G)求解SMP時,算法SMPR需要重復(fù)使用m次2. 1中所描述 的基于SE枚舉策略的改進球解碼算法(命名為子算法GSVP)。為了實現(xiàn)2. 2中描述的 初始化優(yōu)化,算法SMPR在初始時構(gòu)建五個有序集合:
、:
.和三個空集CS、CSW和CS0,分別用來存儲子 算法GSVP找到的中間候選系數(shù)向量、對應(yīng)的格向量的平方長度,以及對應(yīng)的偏置向量〇 = [01,02,. . .,0JT(0完全確定了系數(shù)向量在搜索樹上的位置)。在每一次GSVP開始前,都將 利用初始化子算法(子算法Initialization)來確定搜索區(qū)域半徑的平方W。、初始的候選 系數(shù)向量U k、初始搜索系數(shù)向量u、以及偏置向量0。算法SMPR最終返回的是一個系數(shù)矩 陣U,使得⑶的列向量就是£積)的SMP的一個精確解,它們長度就是£(G)的m個逐次最 小量{ λ η λ 2, ...,。下面我們依此總結(jié)算法SMPR、子算法Initialization和子算法 GSVP0
[0091] 算法 SMPR:
[0092] 本發(fā)明精確求解實數(shù)格逐次最小量問題的方法(算法SMPR),具體包括如下步驟:
[0093] 第一步(預(yù)處理):對給定的生成矩陣G進行LLL規(guī)約,把規(guī)約得到的新基直接賦 給G,把規(guī)約得到的一個單模矩陣賦給T。預(yù)處理的目的是降低算法GSVP搜索區(qū)域的半徑, 從而降低搜索的復(fù)雜度。
[0094] 第二步:對G進行QR分解,得到G = QR ;構(gòu)造集合CS。= {e idx⑴,eidx⑵,· · ·,eidx w},csw。= {11 g ldx⑴ 112, 11 g油⑵ 112, · · ·,11 gldxW 112},和三個空集 cs、CSW 和 CSOo
[0095] 第三步:對于k = 1,2, · · ·,m,依次進行下述操作:
[0096] (1)利用子算法Initialization確定W。、初始的uk、u和〇 ;
[0097] (2)利用子算法GSVP找到系數(shù)向量Uk并更新CS、CSW和CS0。
[0098] 第四步:返回 U - T · [U1U2…uj。
[0099] 子算法 Initialization :
[0100] 依據(jù)2. 2中的討論,我們下面總結(jié)子算法Initialization,算法的流程圖在圖2中 給出。在算法的描述中,Omxi表不的是一個長度為m的全0向量,I mX1表不的是一個長度為 m的全1向量;對于一個有序集合S,|S|表示S中包含的元素個數(shù),S(I)表示S中的第一 個元素,S(end)表示S中的最后一個元素,S(end-l)表示S中的倒數(shù)第二個元素。
[0101] 子算法Initialization具體包括如下步驟:
[0102] Casel :如果 I CS I < 1,則計算 rank([iv"uk iCSoQ)]):如果秩為 k,那么令 uk-CS 0(1),W。-CSW0(I),u -- Inixi,并且令 CS - {uk},CSW - {ff0},CSO - {〇}, 最后從CS。和CSW。中刪除第I個元素;如果秩不為k,那么從CS。和CSW。中刪除第I個元素 后重復(fù)上述操作,直至找到滿足條件的初始值。
[0103] Case2 :如果 |CS| 彡 2,則計算 rankCiv.·% iCSCend-l)]):如果秩為 k,那么令 uk- CS (end-1),W。一 CSW (end-1),u - CS (end),〇 - CSO (end),并從 CS、CSW 和 CSO 中刪 除最后一個元素;而如果秩不為k,那么從CS、CSW和CSO中刪除最后一個元素后重復(fù)上述 操作,直至找到滿足條件的初始值,或者直到CS中的元素個數(shù)少于兩個(接著回到Casel)。
[0104] 子算法 GSVP:
[0105] 有了上述初始化優(yōu)化算法,我們可以依據(jù)2. 1中的討論總結(jié)子算法GSVP。在算法 SMPR的第k步,子算法GSVP的輸入為R、[11廣· uk J,和算法Initialization返回的u、uk、 WQ、0以及CS、CSW和CSO ;輸出為系數(shù)向量uk以及更新后的