基于邏輯運算的多維數(shù)據(jù)全組合編碼算法研究
引言
一般情況下,在編寫程序時,經(jīng)常會遇到這樣一個問題,那就是多路條件的分支轉(zhuǎn)移。而對于多個條件的組合判斷,則多使用條件判斷語句。此時,基本上都需要一個系統(tǒng)的、結(jié)構(gòu)簡單的多路條件的分支轉(zhuǎn)移算法。
1 多條件組合編碼算法例程
下面是一段多條件組合的算法例程:
以上(算法1與算法2)兩例只是3個條件的全組合,如果組合條件更多,那么用上述結(jié)構(gòu)編寫的程序?qū)⒊?的指數(shù)倍增加,而且可讀性差。對于這樣的程序,通常需要一個系統(tǒng)的、簡單的、結(jié)構(gòu)化的多路條件的分支轉(zhuǎn)移算法。
2 多維數(shù)據(jù)全組合編碼公式
對于多維數(shù)組Aw%中任意元素Ar的權(quán)重:
這樣,可用以下程序進行判斷:
3 多條件組合編碼算法的改進
經(jīng)過多條件的組合編碼算法可對多路分支的轉(zhuǎn)移條件進行編碼,因為判定條件只有兩種狀態(tài)true和false,因而對條件變量a,b,c編碼如下:
a,b,c被定義為一維數(shù)組,則m=l,n1=3。a為A1,b為A2,c為A3。
由于a,b,c只有true和false,因此,根據(jù)式(3),有:
這樣,根據(jù)Gm的編碼值,就可以得到全條件組合,而算法2可寫為:
算法3:
Select Case Code
Case0
處理1
Case1
處理2
Case2
處理3
Case3
處理4
Case4
處理5
Case5
處理6
Case6
處理7
Case7
處理8
End Select
可見,經(jīng)過改進的程序(如算法3)的結(jié)構(gòu)就會變得十分簡單。
4 多維數(shù)據(jù)的合成與應(yīng)用
對于三維數(shù)組處a3,4,5根據(jù)式(3):
這樣,根據(jù)式(1),有:
其他元素為0,其權(quán)重也為0。
而根據(jù)式(2):
如果要判斷A1,2,2是否為真,則應(yīng)用式(6),有:
如果要判斷A2,4,2是否為真,應(yīng)用式(6),有:
5 矩陣數(shù)據(jù)的合成處理
對于矩陣
Ccode矩陣是A矩陣與B矩陣根據(jù)公式得到的。也可以直接用Ccode矩陣分解出A矩陣與B矩陣,即:
最終可得:A=Az,B=Bz,所得到的Az、Bz與原來的A、B相等。
根據(jù)以上算法可以將多個相同的矩陣通過Ccode矩陣來表示,同時只需要用Ccode。矩陣就可得到原來的多個矩陣。故此可見,此算法可用于矩陣的合成與分解。
6 結(jié)語
多維數(shù)據(jù)全組合編碼算法利用的是邏輯代數(shù)二進制的位與運算,能夠?qū)θ魏芜M制數(shù)據(jù)進行變形,也能夠?qū)σ痪S數(shù)組進行合成與分解,還能夠?qū)Ω呔S數(shù)組進行多樣合成與分解。多維數(shù)據(jù)全組合編碼算法可應(yīng)用于改進程序結(jié)構(gòu)、改善存儲結(jié)構(gòu)、隱蔽數(shù)據(jù)信息、以及矩陣的合成與分解等方面。