陳凱
20世紀80年代初,愛德華·富萊德金(Edward Fredkin)和托瑪索·托佛利(Tommaso Toffoli)構建了一種撞球邏輯門,這種邏輯門不依賴于電子元件,而是靠球的撞擊與反彈來實現(xiàn)邏輯運算。這種純機械的計算裝置是如何運行的呢?筆者并非打桌球的好手,所以就借用Java程序來模擬球的撞擊,這個Java程序的源代碼可在http://jameslin.name/bball/免費下載到。
兩個球在桌子上滾動,圖1中箭頭標出了運動的初始方向,兩個球撞擊到一起,或碰到斜面時,都會因反彈改變其運動路徑,其行為完全符合牛頓運動定律。兩個球完整的運動路徑用粗線畫出后大致是如圖2所示的。
要注意的是,模擬器中小球是沿網(wǎng)格的線條前進的(如圖3),要想讓球相互撞擊改變路徑,需要把斜面安置到恰到好處的位置。顯然,必須在輸入A端和輸入B端均有球時,輸出O才會有球滾出,這就是一個與門。不過,撞球邏輯門與眾不同的地方是,輸入B端的小球雖然沒有滾到輸出端,但人們可以根據(jù)其最終到達的位置,與輸出O一起反向推導出小球初始的位置和運動方向,整個過程是可逆轉的,人們稱此類邏輯門為可逆邏輯門。傳統(tǒng)的邏輯門在得到結果后,原始的輸入信息就被丟棄了,由于輸出信息少于輸入信息,信息的損失將以熱的形式耗散到環(huán)境中。例如,當一個與門得到計算結果是False后,人們無法再回溯計算前的情況究竟是怎樣的,除非另外耗費能量將初始狀態(tài)存儲下來。因此,如果使用可逆邏輯門來搭建計算裝置,可以大大減少計算過程中所產(chǎn)生的熱量。大家若有興趣,可以在這個撞球與門的基礎上稍做修改,使其成為一個撞球或門,試試看吧。
撞球計算機有一些有趣的變種,神戶大學的研究者發(fā)現(xiàn)大群基氏和尚蟹聚集在一起時,其行為很像是撞球,一是成群的蟹在爬行時會保持完美的直線隊形,若碰到墻壁,則會貼著墻壁邊緣走。二是當兩個蟹群在匯聚后,會形成新的前進方向。于是研究者就找來許多螃蟹,把它們放在規(guī)定的路徑中,以構建出邏輯門。圖4分別是螃蟹或門和螃蟹與門。研究者在構造與門時頗費了一番周折,因為只有當兩列螃蟹同時匯聚到五叉路口時,對列方向才會發(fā)生改變。(答案在本期找)