有限序列線性複雜度和k-錯線性複雜度的計算 —— 密碼與密碼工程實踐No.2

有限序列線性複雜度和k-誤差線性複雜度的計算
在本節中,我們的目標是開發算法,計算有限序列的線性複雜度和k-誤差線性複雜度,將其視爲週期爲2次方的二進制序列的初始段(我們不需要知道是哪一次方)。
注意,任何週期爲2v{{2}^{v}}的無窮序列sTs\in \Tau,其中 最小,c(s)2vc(s)\le {{2}^{v}}。因此,如果我們知道s的至少2c(s)2c(s)項,我們實際上知道序列的整個週期,即我們知道整個序列。
我們將用 表示週期任意冪爲2的二進制序列集,T=i=0P2i\Tau =\bigcup\nolimits_{i=0}^{\infty }{{{P}_{{{2}^{i}}}}}
定理3.1 假設z=(z0,z1,,zt1)F2tz=({{z}_{0}},{{z}_{1}},\cdots ,{{z}_{t-1}})\in F_{2}^{t} 是一個長度爲t1t\ge 1的有限序列。
定義u=log2tu=\left\lceil {{\log }_{2}}t \right\rceil ,無限週期爲2u{{2}^{u}}的序列s{{s}^{'}}如下:
在這裏插入圖片描述

  1. 如果c(z,T)t2c(z,\Tau )\le \frac{t}{2} , 則c(z,T)=c(s)c(z,\Tau )=c({{s}^{'}})
  2. 如果c(z,T)>t2c(z,\Tau )>\frac{t}{2} , 則 c(s)>t2c({{s}^{'}})>\frac{t}{2}

前面的定理可用於計算有限序列的線性複雜度,如下所示。對於長度爲t的有限序列z,將其看作一個週期序列的初始段,在定理3.1中建立(線性時間)週期2log2t{{2}^{\left\lceil {{\log }_{2}}t \right\rceil }} 2的無窮序列s{{s}^{'}}。然後使用Games-Chan算法計算c(s)c({{s}^{'}})。如果結果最多是t2\frac{t}{2},我們將其輸出爲c(z,T)c(z,\Tau )。否則,我們輸出一條消息“z的複雜度大於項數的一半”。當我們真正想計算只知道第一個t項的無限序列s的複雜度時,這種情況可能很有用。
然而,我們可能需要計算c(z,T)c(z,\Tau )的精確值,即使它比t2\frac{t}{2}高。這一點,以及k-錯誤複雜度可以使用以下定理計算。其主要思想是,如果我們將有限序列擴展爲無限週期代價序列,例如序列中的新項都是具有零代價的,那麼對新項的任何更改都不計入k個錯誤,只計入原始有限序列中的更改。
定理3.2 假設z=(z0,z1,,zt1)F2tz=({{z}_{0}},{{z}_{1}},\cdots ,{{z}_{t-1}})\in F_{2}^{t}是一個有限序列,其中t1t\ge 1。定義u=log2tu=\left\lceil {{\log }_{2}}t \right\rceil,定義週期爲2u2^u的無限代價序列s{{s}^{'}} ,如下所示:
si=zis_{i}^{'}={{z}_{i}}cost[i]=1\cos t[i]=1i=0,1,,t1i=0,1,\cdots ,t-1
si\forall s_{i}^{'}cost[i]=0\cos t[i]=0i=t,t+1,,2u1i=t,t+1,\cdots ,{{2}^{u}}-1
ck(z,T)=ck,2u(s,cost){{c}_{k}}(z,\Tau )={{c}_{k,{{2}^{u}}}}({{s}^{'}},\cos t)k=0,1,,wt(z)k=0,1,\cdots ,wt(z)
特別地,c0(z,T)=c0,2u(s,cost){{c}_{0}}(z,\Tau )={{c}_{0,{{2}^{u}}}}({{s}^{'}},\cos t)

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