連載13:軟件體系設計新方向:數學抽象、設計模式、系統架構與方案設計(簡化版)(袁曉河著)

置換的羣特徵

我們先來看看在計算機設計中最基本的三個置換,一個是從值到地址的置換方式,我們稱爲值-地址置換,一個是從地址到值的置換,我們稱爲地址-值置換。當然如果再加上對其值賦值爲其他值操作或者對地址值賦值爲其他地址值的操作我們稱爲賦值置換,那麼對於這樣的三個操作,其實就構成了數學意義上的羣,如果我們設置地址到值的置換爲a,設置地址-值置換爲b,其值賦值作爲其他值操作,或者對地址值賦值作爲其他地址值的操作,我們統一設置爲e,這樣其就構成了一個羣。

爲什麼是一個羣呢?主要是構成了下面滿足的性質。

設G是一個非空集合,*是它的一個(二元)代數運算(此就爲置換操作),如果滿足以下條件:

1. 封閉性:羣內任意兩個元素或兩個以上的元素(相同的或不同的)的結合(積)都是該集合的一個元素。即假設對於羣G操作(運算)是·,對於G裏的任意元素a,b,那麼a·b和b·a都必須是G的元素。

2. 結合律:雖然羣元素不一定要求滿足交換律,但必須滿足結合律,即對G中任意元素a,b,c都有 (a·b)·b=a·(b·b) 或(a·b)·a=a·(b·a);

3. 單位元素:集合G內存在一個單位元素e,它和集合中任何一個元素的積都等於該元素本身,即對於G中每個元素a都有 e·a=a·e=a;

4. 逆元素:對G中每個元素a在G中都有元素a^(-1),叫做a的左逆元,使 a^(-1)·a=a·a^(-1)=e,而我們這裏,a和b的操作就是一對逆元素對,即a·b = e;

元素的集合如果滿足上述四個條件就稱爲羣,注意,進行羣運算的次序是重要的。換句話說,把元素 a 與元素 b 結合,所得到的結果不一定與把元素 b 與元素 a 結合相同。而對於G裏的任意兩個(可以相同)元素a,b有a·b=b·a,那麼羣G稱爲交換羣,或Abel(阿爾貝羣)。

從中我們可以看出,我們的這三個基本的操作其實就構成了一個阿貝爾羣,同時由於在此上面進行的·操作實際上是一個疊加操作,所以我們將·符號換成 + 符號會更加貼切一些。

當前其他的置換,例如抽象的置換和繼承的置換,面向方面的置換等等都是在這三個基礎置換之上進行的羣複合操作,也可以這樣說,這三個基本的操作可以將之轉換爲幾個集合上的三個元素,但是其他的複合置換操作就是一些在多維上的集合形成的一個大的集合,這些置換是否也構成一個更大的羣呢?這恐怕需要數學家們的更進一步進行分析和探討。

那麼這樣構成的羣,當然具有羣的一些特性,那麼有哪些羣特性能夠更加指導軟件設計的工作呢?這恐怕需要計算機理論學家更進一步進行分析和探討。        

如果我們再經過一些無法證僞的一些想法,來通過一種新的方式來思考一下,在《道德經》中有“道生一,一生二,二生三,三生萬物”,而道是我們無法名狀的,也就是無法通過準確的定義進行描述,“道可道,非常道。名可名,非常名”,那麼我們可以簡單作爲類比軟件設計中提到的這幾個概念,針對“道”,我們是還無法準確定義的,而“一”就是我們的“置換”的動作,“二”就是我們的兩個不可分離的“陰陽”,也就是我們的(值,地址)關係對,注意這種“關係對”是關鍵,不存在絕對的“值”,也不存在絕對的“地址”,而“三”就是我們上面談到的三種基本置換操作,這些操作就形成了羣,然後通過這三種基本的置換羣,我們可以進一步演化爲各種各樣軟件設計的方法,而通過不同層次的置換,就達到我們目前的引用、指針、函數、類、面向對象、面向方面、泛型、分層等等不同層面的置換,這些置換就是《道德經》中的“萬物”。      

好,上面是我的冥想,是否準確,還需證實,呵呵!    

對於這一基礎的置換所形成的羣,其意義十分重大。由於此三個置換運算構成了羣,所以此形成了一個完備的運算結果,所謂的完備性就是不多也不少的置換,形成了一個閉合的體系。在這個體系中,能夠完整的表示所有在其之上的設計和實施,也就是說,如果我們只是採用這樣的基本的三個置換運算,完全能夠對一個軟件系統進行完整的描述。而面向對象、泛型編程等等置換,判斷其是否能夠完整描述系統也可以通過完備性來表示,而形成羣特徵的集合,是完備性表示的一個簡潔、有效和完整的劃分。所以,將來在任何進行新的置換手法的提出,都需要考慮其是否具有完備性,同時如果能夠讓此層次上的置換關係的元素按照羣的方式進行組合,那麼將是一種更加有效、優美的劃分方式,這也是羣和對稱密切相關所體現的。    

由於置換所形成的羣,表達了一種在數學意義上的“雙射”的概念,而雙射是一個什麼意義呢?如圖1-16可以看出來:

          圖1‑16

 

廣義上一切事物具有相同或者相似的系統結構就形成了同構的概念,在抽象代數中,同構指的是保持結構的雙射,同時當同一集合上的雙射置換就構成一個對稱羣。由此上面所談到的軟件設計中部分特性形成的對稱羣,其實表達了一個同構的概念,而在我們的設計過程中就能夠通過“同構”的方法,來填補哪些可能欠缺的特性或方法。

         所以,有時候,在軟件設計中,如果我們採用“窮盡”的方法來驗證或者表達我們的目的,此時,我們是否能夠想到羣的哲學意義:我們可以使用“羣”自信地找到最後的結果,那麼爲什麼我們還要進行那些毫無意義的實驗呢?特別對於我們創造一些新的設計理念,此時我們也可以使用羣的思維來幫助我們找到其他的“元素”,而且也可以以此來證明我們的整個體系是否是“完美”的。

發佈了42 篇原創文章 · 獲贊 2 · 訪問量 2355
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章