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