科技行者 7月22日 北京消息:你真的可以在《城市:天際線》游戲中構建一個4位加法器(4-bit adder)。
《城市:天際線》是一款城市模擬游戲,其復雜的游戲機制甚至允許玩家在當中建起通用邏輯門(universal logic gates )。以通用邏輯門為基礎,我們可以進一步打造出包括圖靈完整機在內的任意電路。但是,利用這些簡單的門構建一臺完全成熟的計算機極為困難,因此在這里,我只簡單演示一個4位加法器的制作方式。順帶一提,整個實驗只需游戲原始版本即可完成,無需任何額外mod或者附加組件。
Tips:所謂4位加法器,指的是能實現四位二進制數全加的數字電路模塊。加法器是數字系統中的基本邏輯器件,例如:為了節省資源,減法器和硬件乘法器都可由加法器來構成。但寬位加法器的設計是很耗費資源的,因此在實際的設計和相關系統的開發中,需要注意資源的利用率和進位速度等方面的問題。多位加法器的構成有兩種方式:并行進位和串行進位方式。并行進位加法器設有并行進位產生邏輯,運算速度快;串行進位方式是將全加器級聯構成多位加法器。通常,并行加法器比串行級聯加法器占用更多的資源,并且隨著位數的增加,相同位數的并行加法器比串行加法器的資源占用差距也會越來越大。
與其它城市建設游戲一樣,《城市:天際線》要求玩家管理城市中的電力與水資源。發電廠負責發電,而城市既需要凈水也需要汗水。水塔能夠供應凈水資源,污水管道則將廢物排出城市之外——二者的運行都需要電力的加持。污水管道與凈水塔之間的二元性關系,意味著我們可以借此構建與門(AND gates)和或門(OR gates)。
Tips:與門(AND gate)又稱“與電路”。是執行“與”運算的基本邏輯門電路。有多個輸入端,一個輸出端。當所有的輸入同時為高電平時,輸出才為高電平,否則輸出為低電平。
Tips:或門(Or gate)又稱“或電路”。如果幾個條件中,只要有一個條件得到滿足,某事件就會發生,這種關系叫做“或”邏輯關系。具有“或”邏輯關系的電路叫做或門?;蜷T有多個輸入端,一個輸出端,多輸入或門可由多個2輸入或門構成。只要輸入中有一個為高電平時,輸出就為高電平;只有當所有的輸入全為低電平時,輸出才為低電平。
▲ 圖:本次實驗中的幾位主角,由左至右分別為:燃油發電廠、水塔、污水管道。大家還能在背景中看到風輪機的身影。
下圖所示為我們構建起的與門。2個輸入端分別為通向水塔(頂部)與污水管道(底部)的電力線路。輸出則為連接至發電廠的電力線路。盡管屏幕截圖所示的輸入值為零——即沒有水及廢物需要管理,發電廠仍在持續發電,但一段時間后會自行關閉。各建筑物之間相距很遠,這是為了避免電力在各位主角之間自由流動。
▲ 圖:常規地圖上的與門、電力以及水流的分層示意圖。
我們還需要另一個具有完整功能的組件:逆變器,或者說非門。為此,我們需要利用游戲中的液體力學模擬機制。濫用水壩、運河或者污水管道會導致建筑物慘遭淹沒。被淹沒的電廠將不再發電。利用這一游戲設計特性,我們即可構建起非門,如下圖所示。
▲ 圖:非門電力層,污水管道會先關閉、而后開啟。
根據下圖中的模式,我們可以使用9個混合門構建出1位加法器。將4個加法器鏈接起來,我們就實現了本次實驗的目標——創建4位加法器。我把各個門放在網格結構當中,以反映其在地圖上的布局。
▲ 圖:帶進位1位加法器的布局。
為了讓工作更輕松,我決定在地圖編輯器當中使用無限金錢與自定義地圖。您可以在地圖編輯器當中導入PNG圖像以加載高度圖。我創建了一個地塊,并在其中放置各個門——實際操作起來就像是在設計一塊PCB!下圖為設計完成的地圖,你可以在圖片中的2 x 2網格當中找到4個重復的1位加法器。
▲ 圖:這里出現了鋸齒狀的線條,這是因為游戲引擎無法對銳利的邊緣進行抗鋸齒處理。
構建電路的過程非常繁瑣,我也因為計算錯誤而不得不多次從頭來過。我遇到的第一個難題是交叉電路,幸運的是只要有足夠的高度差,電源線即可相互交叉而又互不相交。
▲ 圖:1位加法器。我將4個加法器互連起來。
最后,我需要在附近建造一座城市以產生充足的污水,從而同時淹沒8個風力輪機。沒錯,這個加法器是用生活污水驅動的。當然,這并不算什么環保解決方案,因為每個門都配備一座燃油發電廠,因此污染其實非常嚴重。調試過程相當困難,有時候我的電力線路會被風暴和閃電所破壞——這就像是突如其來的宇宙射線,總之相當煩人。
▲ 圖:密密麻麻的電源線通向4位輸入之一。
我制作了視頻,以表明這套系統確實能夠有效運行。在第一段視頻中(https://youtu.be/dD7Bi25IPaA),我將電線接入始終開啟的電網(相當于IC電源)以設置輸入。在左側,我設置了1001(十進制的9),中間為1110(十進制的14)。輸入設置完成后,我加快游戲速度,并發現右側5條線路的輸出全部跳轉為1。經過很長一段時間后,最終值穩定在10111(十進制的23)。成功了!
在第二段視頻中(https://youtu.be/Oa2otcfXCtY),我主要關注其中一個加法器。大家可以看到組件的狀態隨時間變化,直到出現最終輸出結果(總和為0,進位為1)。
寫在后面:這臺計算機的處理速度非常緩慢,進行一次4位加法運算需要用掉游戲中大約15個月的時間——相當于現實生活中的20分鐘左右。另外,尺寸也存在問題。為了在游戲中體現電力供應過程,各個門組件需要彼此相距很遠,否則電力會在各門之間瞬間流動。4位加法器占據了正常游戲中全部9個可用區塊的大部分面積,當然我也承認其中還有進一步優化的空間。如果使用mod,可用區塊可以增加至25個。
好文章,需要你的鼓勵
想象一下,你有一個非常聰明的朋友,他知道很多知識,但每當需要使用計算器、搜索引擎或查詢最新天氣時,卻變得像個笨手笨腳的孩子。這正是當前大語言模型(簡稱LLMs,如ChatGPT這類AI系統)面臨的尷尬處境。
想象一下,你擁有一個聰明的助手,它知道很多知識,但在面對需要使用計算器、搜索引擎或查詢最新信息時卻顯得笨手笨腳。這正是當前大語言模型(LLMs)面臨的困境。雖然這些模型已經通過監督微調(SFT)學會了使用工具的基本能力,但它們常常在面對復雜或不熟悉的場景時表現不佳。
想象你正在和一個智能助手聊天。如果你直接要求它提供有害信息,它很可能會禮貌拒絕。但如果你通過一系列看似無害的對話,逐步引導它走向你的真實目標呢?這就是當前AI安全領域面臨的一個嚴峻挑戰——多輪對話中的安全漏洞。
想象你在使用一個非常聰明的AI助手完成一項復雜任務,比如解決一道數學難題。你可能注意到這個助手會花很長時間"思考",一步一步寫下大量推理過程,最后才給出答案。雖然這種詳細的思考過程確實幫助AI做出了更準確的判斷,但同時也帶來了一個明顯的問題:它太"啰嗦"了,消耗了大量的計算資源和時間。