[導(dǎo)入]級(jí)列設(shè)計(jì)理論
Posted on 2005-11-14 17:03 canonical 閱讀(520) 評(píng)論(0) 編輯 收藏 所屬分類(lèi): 設(shè)計(jì)理論
理論物理的優(yōu)美在于從少量基本原理(如最小作用量原理)出發(fā)推導(dǎo)出整個(gè)理論大廈。而在軟件設(shè)計(jì)領(lǐng)域卻充斥著林林總總的"最佳實(shí)踐".
太多的規(guī)則只會(huì)意味著沒(méi)有規(guī)則。軟件設(shè)計(jì)領(lǐng)域的現(xiàn)狀說(shuō)明這個(gè)領(lǐng)域還處于非常稚嫩的階段,應(yīng)該從其他領(lǐng)域借鑒更多的知識(shí)。在我前面的blog中已經(jīng)說(shuō)明了在
軟件中的一些具體的分析技術(shù)。但如何有效的應(yīng)用這些分析技術(shù),我們還需要一些指導(dǎo)性的理論框架。如果把軟件設(shè)計(jì)放在更加廣泛的系統(tǒng)工程的背景下,一個(gè)合適
的支配性原理應(yīng)該是最小復(fù)雜性原理。即在軟件分析過(guò)程中我們所作的一切,無(wú)論是面向?qū)ο蠓治觯诠ぷ髁鞯姆治龅鹊龋淠康亩际潜M量降低系統(tǒng)構(gòu)建的復(fù)雜
性。只要能夠有效降低系統(tǒng)構(gòu)建的復(fù)雜性,那所采用的方法和所建立的模型就是好的。復(fù)雜性是唯一的度量,而不是是否符合某人的觀點(diǎn),是否采用流行的技術(shù)等
(當(dāng)然,采用流行技術(shù)往往意味著降低了和其它系統(tǒng)交互的復(fù)雜性)。
李小龍說(shuō):簡(jiǎn)單是美。但是否最簡(jiǎn)單的就是最好的?科學(xué)界對(duì)此卻有著否定的結(jié)論。關(guān)于復(fù)雜性的一個(gè)很深刻的基本事實(shí)是,復(fù)雜性是分級(jí)的,不同復(fù)雜性層次的事
物有著本質(zhì)的差異,不能期待一個(gè)較低復(fù)雜性的方法能夠解決一個(gè)更高復(fù)雜性層次上的問(wèn)題。所以Einstein說(shuō):make everything as
simple as possible, but not
simpler。復(fù)雜性級(jí)列的存在意味著,隨著我們獲取到更多的信息量或者因?yàn)橄到y(tǒng)自身的發(fā)展,當(dāng)我們所建立的系統(tǒng)的模型沿著復(fù)雜性級(jí)列演化的時(shí)候,我們
所提出的解決問(wèn)題的方案也必須作相應(yīng)的演化。即我們提供的不是一些固定的解決方案(solution),
而必須是一個(gè)完整的策略(strategy)。這樣我們就不是孤立的看待一個(gè)問(wèn)題, 而是要看到它的過(guò)去,現(xiàn)在和未來(lái)。
在作分析的時(shí)候,我們都知道"從一般到特殊,從特殊到一般",但如何科學(xué)的,有步驟的去做呢? 我從等離子體物理的BBGKY
Hierarchy中學(xué)到了一個(gè)基本的分析框架: 級(jí)列理論.這個(gè)理論首先定義了一個(gè)最普適的模型:氣體由N個(gè)完全相同的原子組成,
其動(dòng)力學(xué)由N個(gè)互相耦合的Newton力學(xué)方程來(lái)描述。理論的第二步是從最極端的簡(jiǎn)化開(kāi)始,假設(shè)所有的原子之間不存在相互作用,即假定原子之間是相互獨(dú)立
的。則得到Vlasov方程。理論的第三步考慮系統(tǒng)的復(fù)雜性逐漸增加,當(dāng)氣體密度較高,必須考慮分子之間兩兩碰撞的時(shí)候,得到Boltzman方程。當(dāng)需
要考慮更高階的相互作用的時(shí)候,我們得到關(guān)聯(lián)動(dòng)理學(xué)方程,如此繼續(xù)下去建立一個(gè)無(wú)窮級(jí)列。
抽象一些地說(shuō),該理論包含如下內(nèi)容:
. 建立能夠描述所有情況的最廣泛的模型M0, 該模型定義系統(tǒng)的邊界
. 建立一個(gè)包含最少假設(shè)的最簡(jiǎn)單的模型Mn,該模型作為求解的基礎(chǔ)和基本的參照。
. 建立一個(gè)從Mn到M0的復(fù)雜性逐漸增加的模型級(jí)列,確保在每一個(gè)復(fù)雜性的層次上,都存在著對(duì)系統(tǒng)有效的建模,而且在求解高階問(wèn)題的時(shí)候,可以參考較低階問(wèn)題的解。
如何從這種無(wú)窮級(jí)列中做出選擇,必須根據(jù)具體應(yīng)用情景而定,Vapnik在其統(tǒng)計(jì)學(xué)習(xí)理論中詳細(xì)描述了這種求解策略:
綜合代價(jià) = 訓(xùn)練數(shù)據(jù)與模型預(yù)測(cè)之間的偏差 + 模型自身的復(fù)雜性
學(xué)習(xí) = minimize[綜合代價(jià)]
即在能夠解決問(wèn)題的方案中選擇最簡(jiǎn)單的一個(gè)。
建立級(jí)列理論,首先需要建立最廣泛的模型。在量子力學(xué)中,確立了如下基本概念:
1. 確定性的態(tài)。
2. 所有態(tài)構(gòu)成完備的態(tài)空間。
3. 系綜(即態(tài)的集合)的動(dòng)力學(xué)。
首先,狀態(tài)的確定性非常重要。即使在量子力學(xué)中,量子態(tài)存在幾率詮釋?zhuān)瑧B(tài)函數(shù)本身在數(shù)學(xué)上仍然是確定性的,即在任一時(shí)刻,任一地點(diǎn)存在唯一的值。如果我們
的討論沒(méi)有一個(gè)確定性的基礎(chǔ),那所有的推演都將變得極為困難(模糊數(shù)學(xué)目前提供的幫助很少)。而且確定狀態(tài)本身就是一個(gè)極為重要的簡(jiǎn)化過(guò)程。因?yàn)橐话阄覀?
可以建立Markov模型,使得系統(tǒng)的演化只與系統(tǒng)當(dāng)前的狀態(tài)有關(guān),而與系統(tǒng)的歷史狀態(tài)無(wú)關(guān),因此大大減少系統(tǒng)模型的參數(shù)。
其次,狀態(tài)演化的結(jié)果必須仍然處在態(tài)空間中,否則我們?cè)谠摽臻g中建立的理論就存在著"盲點(diǎn)",存在著失效的可能。
第三,我們研究的不是單個(gè)狀態(tài)的演化,而是綜合考慮相鄰的狀態(tài)。
在軟件世界,理論物理的這些真知灼見(jiàn)依然有效,只是在所有的概念前加上了"有限"這個(gè)修飾語(yǔ)。有限狀態(tài)機(jī)(Finite State
Machine)正是理論計(jì)算機(jī)科學(xué)研究的基本模型。所有的計(jì)算機(jī)都可以看作是有限狀態(tài)的,因?yàn)樗械膬?nèi)存和硬盤(pán)能夠表示的狀態(tài)數(shù)是有限的。目前計(jì)算機(jī)科
學(xué)中幾乎所有重要的理論成果都和有限自動(dòng)機(jī)理論相關(guān)。在軟件編制的過(guò)程中,我們第一步所要做的也是確定系統(tǒng)的狀態(tài)。與物理系統(tǒng)所不同的是,我們認(rèn)為物理系
統(tǒng)的狀態(tài)及其演化規(guī)律是客觀存在的,而軟件系統(tǒng)中的規(guī)則是由開(kāi)發(fā)者確立的,我們必須盡一切可能使得系統(tǒng)的狀態(tài)能夠被確定下來(lái)。例如,我們編制getXX
()和toString()等函數(shù)來(lái)暴露系統(tǒng)的狀態(tài),以確保系統(tǒng)狀態(tài)的可觀測(cè)性;使用assert斷言來(lái)確保函數(shù)執(zhí)行時(shí)的狀態(tài);盡量減少函數(shù)的副作用來(lái)避
免依賴(lài)函數(shù)調(diào)用歷史。軟件世界中態(tài)空間不完備的例子最著名的就是Y2K問(wèn)題。所以很多人說(shuō),軟件中最大的bug就是地址空間不足,因?yàn)檫@是任何技術(shù)手段都
無(wú)法解決的問(wèn)題。