陳凱
請想象這樣的場景:一只出門遠(yuǎn)行的兔子面對著許多條岔路,這些道路的狀態(tài)可用寬敞程度、明亮程度、平坦程度這三種屬性來進行描述,所以說,其中有些道路是寬敞的,有些是狹窄的;有些道路是明亮的,有些是幽暗的;有些道路是平坦的,有些是崎嶇的。兔子隨身攜帶著“指路神器”,會顯示出推薦的路線——假設(shè)是根據(jù)眾多兔子前輩經(jīng)驗歸納而來的結(jié)果:那些同時具有寬敞、明亮、崎嶇屬性的道路,或同時具有寬敞、幽暗、崎嶇屬性的道路,或同時具有狹窄、明亮、平坦屬性的道路,都是值得優(yōu)先選取的。盡管兔子選擇道路的場景是虛擬的,其選擇原因也不必深究(如寬敞、明亮、平坦的道路暗藏有陷阱),但對于復(fù)雜現(xiàn)象經(jīng)由分離和提純抽取出關(guān)鍵要素,再由建立系統(tǒng)模型來實現(xiàn)預(yù)測,這樣的思維過程是無時無刻不真實發(fā)生在人類頭腦中的。實際上,模型是人類理解世界的重要工具,那些與客觀現(xiàn)實具有相似結(jié)構(gòu)的模型,在科學(xué)方法上稱為同構(gòu)模型(與此相對應(yīng)的還有虛構(gòu)模型),同構(gòu)模型被用于模仿、刻畫、代表目標(biāo)對象,所謂同構(gòu),是指作為模型的系統(tǒng),和作為研究對象的系統(tǒng),兩個系統(tǒng)中每一部分以及各部分之間的互動關(guān)系,在對方都能找到對應(yīng)物或?qū)?yīng)的事件。無論是虛擬的兔子選擇道路的場景,還是真實的生活中進行某種選擇的場景,只要是以抽象推理的方式來進行預(yù)測和決策,那么預(yù)測和決策的過程就都能夠映射到某個同構(gòu)的模型?;谝陨显颍P者很樂于將仿佛童話故事的虛擬場景,看成是已更換為相對純凈敘事事件的準(zhǔn)真實情境,并將之用于自己的教學(xué)。
兔子的“指路神器”是一個裝置,但要實現(xiàn)這個裝置,首先需要的是一個模型,如果將故事中提煉出的屬性編碼成二進制數(shù)值,就可以有很多種辦法來構(gòu)造模型。然而,需求細(xì)節(jié)上的不同,導(dǎo)致選擇模型的不同,從而會使得最終成品之間有著巨大的差別。這里就體現(xiàn)出基于虛擬場景開展教學(xué)的一個優(yōu)勢,它首先將學(xué)習(xí)者的經(jīng)驗從真實環(huán)境中暫時剝離出來,然后從需求出發(fā)親自構(gòu)筑模型,并將模型作為擬真的橋梁,去對照和“重新”發(fā)現(xiàn)客觀現(xiàn)實中所存在著的不同的側(cè)面,若不是模型的存在,這些多姿多彩的觀測面極有可能隱遁于日常平凡的生活語境之中而被視作理所當(dāng)然。
● 邏輯運算模型
仔細(xì)對照已經(jīng)完成的所謂“指路神器”的功能,可以直接將需求中的輸入和輸出的二進制數(shù)值的邏輯關(guān)系推理出來。所謂“同時具有”,可看作邏輯中的與運算,而三種可以分別選擇的情況,其實就對應(yīng)著將三個與運算的結(jié)果再進行邏輯中的或運算,如果用Python語言寫下來,那么語句是這樣的:
print(a and b and(not c) or a and (not b) and (not c) or (not a) and b and c)
這樣就可以根據(jù)邏輯運算,將實物的數(shù)字邏輯電路圖畫出來,然而,語句中出現(xiàn)的12種邏輯運算對應(yīng)了12個邏輯門,真的需要那樣復(fù)雜嗎?用數(shù)學(xué)模型就可以揭示出簡化的方法,構(gòu)造數(shù)學(xué)模型的方法不止一種,常用的有卡諾圖模型,但這里用到的是更直觀的3D散點圖(如http://grapher.mathpix.com),可以將道路屬性的邏輯值轉(zhuǎn)化為數(shù)字,True用3表示(用1也可以,但用3看起來更清楚),F(xiàn)alse用0表示,這樣的話,寬敞、明亮、崎嶇即可表示為坐標(biāo)點(3,3,0),其他兩個點則分別是(3,0,0)和(0,3,3)。因為散點圖工具可以旋轉(zhuǎn),所以就能更清晰地判斷三個點之間的關(guān)系。從圖1可以明顯看出,(3,3,0)和(3,0,0)這兩個點處于兩個垂直平面的交線上,其意義是,這兩點位置的不同,僅僅是因為明亮與否這一指標(biāo)上有所變化,所以,只要道路是既寬敞又崎嶇,就不用管明亮指標(biāo)上的變化而直接得出此道路可通行的結(jié)論了。
這樣就可以將先前的Python代碼修改為:
print(a and not c or(not a) and b and c)
根據(jù)以上邏輯運算公式搭建起數(shù)字邏輯電路也十分容易,如圖2所示。
三種屬性的邏輯值之間的關(guān)系很容易用3D散點圖直觀顯現(xiàn)出來,但四種屬性或更多屬性的邏輯值,卻無法與現(xiàn)實中的幾何立體圖形相對應(yīng),因為人的頭腦缺少對高維度空間關(guān)系的把握能力,只能通過計算機模擬,將高維度中發(fā)生的事件映射到低維度空間中來加以理解,這就更加凸顯了計算機建模對補充和增強人腦能力的重要性。
● 枚舉算法模型
若仔細(xì)分析需求,會想到上述裝置存在的一個問題,由于輸入和輸出的關(guān)系被做死到了數(shù)字邏輯電路中,所以就無法輕易改變其用途了。在日常應(yīng)用中,往往希望一個裝置具有存儲信息的能力,那么就可以根據(jù)不同的情況,將不同的信息預(yù)先存儲到裝置中。對于兔子的指路神器來說也是如此,希望能將兔子所遇見的道路屬性情況與是否選擇這條道路的結(jié)果存于寄存器中,然后輸入當(dāng)前道路狀況并獲取結(jié)果,這個過程實際上和枚舉算法實現(xiàn)的過程是一致的,如圖3所示。
裝置中有四個移位寄存器,前三個代表著道路的三種屬性,最下面的一個移位寄存器則代表是否應(yīng)當(dāng)選擇這條道路。通過點擊時鐘脈沖獲取到所有八種可能性,當(dāng)與門的輸出結(jié)果為1時,就可以觀察最底下的移位寄存器的輸出結(jié)果。當(dāng)然,也可將移位寄存器改為RAM存儲器,電路會稍微復(fù)雜一些。與先前純粹的邏輯運算的模型相比,這個枚舉算法的模型允許輸出結(jié)果和輸入數(shù)據(jù)之間,存在多種可能性,也就是說,對于同一組輸入數(shù)據(jù),也是有可能得到截然相反的結(jié)果的,這樣似乎更能體現(xiàn)出客觀現(xiàn)實的復(fù)雜性。
針對不同的需求,這個裝置也有較強的可擴展性,如希望一旦匹配到相關(guān)屬性值,則不再接受新的點擊輸入,使輸出的結(jié)果固定下來,這就可以對應(yīng)另一種常見的算法——順序查找算法。
● 決策樹模型
假設(shè)兔子的指路神器是一個基于對話的裝置,當(dāng)面臨某條道路時,這個裝置會依次針對道路的情況發(fā)問,如:“這條道路是寬敞的還是狹窄的?”在得到肯定或否定的回答后,它會接著繼續(xù)問:“那么這條道路是明亮的還是幽暗的?”……乍一看,這種輸入方式不如先前所用的方式便捷,但如果道路的屬性非常多,除了文中所提到的幾種,還有若干屬性,如坡度是否陡峭?食物是否充分?等等,那么,指路神器就應(yīng)該先從具有較強區(qū)分度的屬性開始提問,盡快做出決策,在某種特殊的情況下(如兔子身后正有大灰狼追趕),這個需求顯得尤其重要。
即便是只有三種屬性,如若將提問和回答所產(chǎn)生的決策的分支畫在紙上,也可以看出,提問先后順序影響著決策的效率,如按是否寬敞、是否明亮、是否平坦的順序,得到的圖樣如上頁圖4所示。
如按是否寬敞,是否平坦,是否明亮的順序提問,得到的圖樣如圖5所示。
所以,如果按是否寬敞、是否平坦、是否明亮的順序提問,那么,指路神器的數(shù)字邏輯電路可能如圖6所示。
使用時,按從左到右的順序依次回答問題,而每次回答的結(jié)果,是點亮決策樹中的某一路分支,如先回答寬敞,再回答不平坦,則最快兩步就可以得到明確的答案。
然而這個裝置的設(shè)計者,是如何知曉,在詢問寬敞與否之后,到底是應(yīng)該先詢問平坦與否,還是明亮與否呢?這個問題便與信息熵和信息增益有了密切的聯(lián)系,需要借助數(shù)學(xué)的方法來計算并確定每個決策分支應(yīng)該判別的屬性。這個模型體現(xiàn)出生物在作出決策時,對事物或事件特征的選取,是存在優(yōu)先級關(guān)系的。
另外,這個裝置的數(shù)字邏輯電路圖也有很不一般的特點,它實際上是多個完全相同的結(jié)構(gòu)迭代而成的,像一棵真正的樹,具有分形的特征。也就是說,如果要擴充決策樹,就只要將同樣的結(jié)構(gòu)復(fù)制粘貼然后對接到?jīng)Q策樹的最終節(jié)點上就可以了,或者,也可以反過來操作,先建立一棵分支齊全的決策樹,然后根據(jù)實際情況對其進行減枝從而簡化決策過程。另一個讓人驚訝的地方是,如果要改變決策樹的功能,根本不需要重新搭建決策樹,只要更換一下輸入屬性和輸出結(jié)果的標(biāo)簽就可以了。這樣的話,就可以借助寄存器,搭建出一個適用于各種情況的“萬能”決策樹,大家如有興趣,不妨親自嘗試一下。
本文的例子和信息的編碼、計算機系統(tǒng)、邏輯運算、算法等教學(xué)內(nèi)容都有一定的聯(lián)系,這樣就方便教師建立起一個相對統(tǒng)一的情境和具有持續(xù)探索空間的實驗任務(wù),將日常信息技術(shù)教學(xué)內(nèi)容中多個分散的知識和技能整合在一起。