演算法將輸入轉化為輸出。值得深入理解演算法的原因有二:其一,許多系統會依據演算法提供的資訊進行調整與回應;其二,演算法能幫助系統實現規模擴張——一旦確定解決特定問題的一系列步驟,就無需每次都從頭開始。做為思維模型的演算法,並非要求將生活轉化為全自動化流程,本章將探討演算法思維如何幫助我們預防問題、尋求答案。

「『演算法』可謂我們世界中最核心的概念。若想理解生活與未來,我們應盡一切努力去瞭解什麼是演算法,以及演算法與情感的關聯。演算法是一套系統化的步驟,可用於計算、解決問題與做出決策。它並非某個具體計算,而是進行計算時遵循的方法。」
尤瓦爾·諾亞·哈拉里(Yuval Noah Harari)¹
演算法之所以實用,部分源於其過程的內在可預測性——這也是我們青睞它的原因。我們可將演算法視為一系列完全明確的「若-則」陳述。丹尼爾·丹尼特(Daniel Dennett)* 在《直覺泵與其他思維工具》中將演算法定義為「一種特定的正式流程,從邏輯上而言,只要『運行』或實施,就必然會產生特定結果。」² 設計精良的演算法能持續產生符合邏輯的結果,這種可靠性是其最吸引人的特點——按特定方式混合麵粉、水、雞蛋與其他食材,一塊美味的蛋糕便誕生了。
丹尼特總結了演算法的三大核心特徵:
- **載體中性**:「流程的效力源於其邏輯結構,而非實施過程中所用材料的因果屬性。」³ 不論你在手機上還是紙質書中查看食譜,都不會影響演算法的邏輯。
- **底層無意識性**:「每個組成步驟及步驟間的過渡,都極其簡單。」⁴ 若一份食譜要成為演算法,必須明確每種食材的用量,並以毫無詮釋或誤解空間的步驟引導操作。
- **結果可保證性**:「演算法所執行的任何任務,只要無差錯執行,就必然會達成目標。演算法是萬無一失的處方。」⁵ 運用優質演算法,每次做出的蛋糕外觀與口感都會一致。
演算法可簡單如一份步驟明確、長期不變的食譜,也可複雜如試圖預測未來犯罪地點的電腦演算法。此外,若將演算法的概念延伸到人類與技術之外,DNA密碼的執行、人類的學習過程,都可視為生物演算法的產物。
部分演算法能隨時間演化與學習,另一些則保持靜態。根據系統需求,不同類型的演算法在獲取「維持韌性與正常運作所需資訊」方面更具優勢。

不僅限於電腦領域,所有系統的運作都離不開演算法——即適應與解決問題的一系列規則。如今,演算法的設計越來越傾向於「方向正確」而非「完美無缺」:它們往往透過演化或刻意設計,產生足夠有用、相關的輸出,以確保系統正常運作。自然界與人類都不必追求「100%產生最優輸出」的演算法。觀察系統時,思考支配其行為的底層規則,有助於確定如何介入以改進系統。
## 海盜憲法
當一群人為共同目標合作時,需要協調一致的演算法,以可重複的方式將輸入轉化為預期輸出。要讓眾多人朝同一方向前進,必須明確如何行動、如何解決問題、如何以一致可靠的方式做出決策。
要讓人們遵守規則體系,需設定恰當的激勵機制。通常,強制威脅是確保服從的手段——尤其是當人們未選擇加入某個系統或無法離開時。但當人們自願合作時,有可能演化出有利於自身、避免不公領導等陷阱的規則體系。
憲法正是實現這一目標的一種方式,可被視為一套高層次演算法——用於限制治理者的權力、界定其職責⁶,增加領導者為民謀利而非中飽私囊的概率。它處於高於法律的層級,決定法律本身的運作方式。憲法融合政治、文學與法律,既是領導者面臨問題時的指導準則,也是民眾的定心丸。對國家而言,設計憲法往往是一個深思熟慮的過程,需考慮政治理想。但不僅僅是國家擁有憲法——任何需要遵守規則、制衡領導者的群體,都可適用這一概念;憲法也未必涉及崇高理想,它可在無規劃的情況下演化,以實現截然不同的目標。只需一群人追求同一結果,並尋求最優、最一致的實現方式即可。憲法永遠不會完美,但明確的目標、一致的執行與修訂機制,能提升其實現預期結果的概率。
在大眾文化中,古代海盜常被描繪為無法無天的野蠻反叛者——他們在公海上遊蕩,不服從任何權威,劫掠任何不幸遇見的船隻。但事實並非如此。要成為成功的海盜,必須像管理嚴格的企業一樣運作。正如彼得·T·利森(Peter T. Leeson)在《看不見的鉤子》中所解釋的,海盜黃金時代裡,存活時間最長、最富有的海盜,都遵循著一套嚴格的規則,其中許多規則類似於憲法,被稱為「海盜章程(articles)」⁷。
我們可將海盜章程視為一套演算法,幫助將體力勞動與火藥等資源,轉化為珍貴的劫掠物與金錢。船隻章程中的每一個細節,都需為利潤做出正向貢獻。海盜只選擇有利於盈利的規則,無需考慮陸地居民關心的因素。
透過觀察18世紀初海盜黃金時代的章程制訂方式,我們能深入瞭解群體如何運用演算法確保朝共同目標合作;同時也能發現,若演算法不再服務於相關人員,就需要留有調整與改變的空間;若出現問題,也需有相應的修訂機制。海盜將利潤置於首位,最終設計出一套遠超前時代、甚至可謂比當時主流社會更公平的法律體系⁸。
當一個人加入海盜船隊,就意味著與主流社會斷絕聯繫,成為漂浮社會的一員——這意味著他們無法再依賴主流法律的保護與治理。利森寫道:「海盜沒有政府……沒有監獄、警察與議會,沒有律師、執達吏與王座法庭。」海盜船平均船員人數為80人⁹,通常來自不同國家,無法依賴常規的社會紐帶¹⁰。與此同時,海盜需要無縫合作,確保每個人全力以赴,並確保領導者足夠稱職且不濫用權力。若能克服這些障礙,回報將極為豐厚——一名海盜每年的收入可能是商船水手的100倍甚至1000倍¹¹。因此,他們有強大的動力制訂章程,以實現危險襲擊所需的組織水平¹²。章程的設計旨在讓遵守它的海盜產生一系列可重複的行為,從而在劫掠他船這一高風險情境中降低不確定性。他們無法控制天氣、被擄船隻船員行為等外部因素,但能確保同伴的行為可預測,並最有利於盈利。
一套典型的章程要求船員保持武器狀態良好、不在船上相互賭博、晚八點後不在甲板下飲酒,並在岸上演解任何爭端¹³——這些規則都有明顯的益處:武器保養不佳的海盜在奪取他船時無法有效戰鬥;賭博可能引發衝突、降低合作效率;甲板下飲酒會打擾其他海盜休息;在岸上演解爭端可避免鬥毆傷及旁觀者或損壞船隻。章程還涵蓋劫掠物分配(除領導者多得少量外,其餘均分)、對異常勇敢者的獎勵(彌補額外風險),以及可視為殘疾津貼雛形的「戰鬥受傷補償」¹⁴;此外,還規定了對不當行為的懲罰、領導者的權限與禁止事項,以及新規制訂的要求¹⁵。
這一切令人印象深刻,但一群暴力罪犯為何願意遵守強加於身的規則?因為在主流社會尚未民主化的時代,海盜社會是民主的¹⁶。章程的實施需獲得船上所有人的一致同意,這確保海盜只有願意遵守規則才會加入船隊。
若專制船長濫用權力該如何應對?海盜也有相應解決方案:船長與舵手由多數票選出,且可隨時因任何原因被罷免¹⁷。每個人都配備武器,若船長不願尊重選舉結果,一旦船員聯合反對,他別無選擇。將領導權分給兩人,進一步形成制衡:船長負責戰鬥指揮,舵手負責日常事務¹⁸。
鄭一嫂(Ching Shih)* 的例子恰能說明嚴格的規則體系如何幫助海盜成功。她於1775年出生於中國,或許是歷史上最成功的海盜。她早年在廣州以賣淫為生,其間結識了海盜鄭一。鄭一向她求婚,她同意的條件是在其紅旗幫船隊中擁有同等的財富與權力。丈夫死後,她全權接管船隊,成為極少數女性海盜之一¹⁹。她曾管轄7萬至8萬名海盜與多達2000艘船隻,規模極為罕見²⁰。做為參照,最著名的海盜黑鬍子(Blackbeard),手下人數可能從未超過700人,通常僅有數百人²¹。鄭一嫂實質上在領導一座漂浮的城市,且無法依靠常規法律體系實現自我管理——畢竟,若一名海盜發現同伴偷竊自己已劫掠的財物,無法向警方舉報。
鄭一嫂為所有海盜制訂了嚴格的規則,旨在確保自身權力與船隊的成功。攻擊他船時,她下令僅在對方拒絕投降時才能傷害他人;未經許可不得登陸,兩次違規即處死刑;劫掠船隻後,必須如實上報所有財物,私藏不得超過五分之一;逃兵將遭受殘刑;未經授權發布命令、無故傷害陸地居民或強姦女性俘虜者,一律處死。
鄭一嫂的勢力如此強大,與大多數海盜不同,她透過與中國政府談判達成條件,最終得以攜鉅富和平退休²²。
海盜法律的存在起初或許令人意外,但考慮到海盜的工作環境,這是成功與生存的必要條件。透過鄭一嫂等海盜領袖如何在高風險情境中領導大量海盜,我們能學到演算法如何確保系統內部的凝聚力。要讓系統產生預期輸出,其組成部分的目標必須保持一致,這能提升持續獲得可預測結果的概率。
管理如此眾多的海盜是一項巨大挑戰,但鄭一嫂透過嚴格執行規則體系實現了這一目標。從演算法的角度理解她的行為,關鍵在於「執行」——演算法的定義之一是「每次輸入相同,輸出也必然相同」。據記載,鄭一嫂執行規則時一視同仁,毫無例外。當然,海盜在複雜多變的世界中運作,即便最嚴格的規則體系也無法確保每次劫掠都產生相同結果,但她的嚴格執行,為達成一致可靠的輸出提供了最佳機會。
### 側欄:新數字的誕生
#### 新數字的誕生
演算法最有趣的之處在於:看似無害的標準輸入,可能產生全新的輸出。
演算法似乎是重複行為的自然結果。對大多數人而言,反覆以相同方式做同一事會變得枯燥,因此我們會思考是否能將這些重複行為編碼,以簡化流程。現代數學的許多內容,似乎都源於數字操作過程的編碼——計算157×2693時,你可能不會逐個計數每組單位,而是使用內置演算法的計算器,或按「先算7×3」的紙筆方法計算。
解讀數字史的一種方式是:某些數字直到被演算法創造出來才存在。以負數為例,如今負數極為常見(尤其是對生活在寒冷氣候的人而言),但仔細想想,它並不直觀。很難想象古代人看到一群猛獁象時,會想到有一天可能出現「負五頭猛獁象」——平原上可能有十頭、兩頭或零頭猛獁象,但負五頭?幾乎不可能。
保羅·洛克哈特(Paul Lockhart)在《算術》中提出,負數是減法的產物。想象你生活在3000年前的農業社會:加法演算法告訴你,若有三袋穀物,再交易獲得兩袋,總共會有五袋;但其後你決定送一袋給窮困的堂兄,此時你需要「反向加法」,即減法。減法行為本身,實質上是對「負數」的認可——你擁有五袋穀物,同時擁有「負一袋穀物」。若你對數字經歷的這一過程感興趣,就會面臨一個有趣的問題。
洛克哈特寫道:「核心問題在於對稱性——或者說,缺乏對稱性。加法運算中,不論我擁有哪個數字,加上任何數字後,其和都是一個完全有效的數字,早已存在於數字領域中。但減法運算存在一個令人不悅的限制:減去的數字不能超過原有數字。的確存在一個數字,加上三等於五,但(目前而言)沒有任何數字能扮演『加上五等於三』的角色。」¹ 減法的使用很可能催生了負數的概念——這在我們日常生活中接觸的數量物理表達中,並不明顯。
本質上,我們的思考過程可能如下:假設古代的兩數減法演算法大致是「輸入兩個不同的可計數整數,從第一個數中減去第二個數的數量」。因此,五袋穀物減一袋穀物等於四袋穀物。但由於該演算法未對數量的最小值做出規定,我們很容易輸入「六」與「九」——結果會怎樣?答案是一個違反直覺的概念:代表負三的數字。
同樣的思路能幫助我們理解無理數的誕生。在對數字及其屬性進行一番探索後,人們發明了一種稱為「平方根」的運算:一個數的平方根是另一個數,其自身相乘後等於原數。例如,9的平方根是3,64的平方根是8。將各種數字輸入平方根計算演算法中頗具趣味:部分數字的結果並不整潔,其平方根是分數,但仍屬於有理數。然而,將2輸入平方根計算演算法(為何不呢?它是如此簡單易獲的數字),會得到完全不同的結果——世界上第一個無理數。
## 尋找優質輸入
演算法的研發旨在獲得特定輸出——如前所述,輸入數據、遵循流程、最終得到預期結果。但有時,並不明確哪些輸入能產生期望的輸出。因此,運用這一模型的一種方式是:首先確定並優化輸入數據。這可稱為「演算法思維」。你或許無法擁有完全封閉、可實現全自動化的系統,但演算法的視角能告訴你如何組織系統,以最大限度減少隨機性。
20世紀20年代末,有家公司開發了一套可重複流程,試圖研製出世界上第一種廣譜抗生素。一戰後,科學家對細菌感染已有深入瞭解:能識別鏈球菌等引發不治之症的主要細菌,也明白細菌感染的發生方式與原因(如接觸受污染的工具儀器)。但一旦感染在體內確立,便無法制止——當時缺乏的是對細菌本身的理解:其運作機制與弱點所在。
德國製藥巨頭拜耳(Bayer)最初以染料製造起家,它認為若能找到治療體內細菌感染的方法,必能獲得豐厚利潤。有跡象表明,具有抗菌特性的物質是可被創造的:早期研究已研製出治療梅毒的藥物「灑爾佛散(Salvarsan)」,但此後15年間再無新突破²³。
拜耳製藥研究負責人海因里希·赫萊因(Heinrich Hörlein)* 認為,尋找殺菌藥物的研究缺乏規模,過於依賴個別科學家。因此,他在拜耳建立了一套工業化系統,用於識別潛在抗菌化合物,並僱用數十人,將每種抗生素候選物置於類似演算法的統一流程中測試。
托馬斯·哈格(Thomas Hager)在《顯微鏡下的魔鬼》中解釋,赫萊因知道這一搜尋過程將耗時數年,但也明白成功將帶來巨額利潤。因此,他旨在「將藥物研究從單一科學家的實驗室,擴展為高效組織的工業化流程——由精心挑選的專家在協調策略指導下開展工作。」赫萊因僱用格哈德·多馬克(Gerhard Domagk)* 負責執行這一「處方」,將化學家創造的每種化合物置於相同的測試與評估流程中,判斷其是否能成為對人類安全的抗生素²⁴。
多馬克及其團隊測試拜耳化學家提供的化學物質,其中產出最豐富的化學家是約瑟夫·克拉雷(Josef Klarer)——他研製出數百種新化學物質,由多馬克及其助手進行系統測試。每種化合物都要針對「最常見且致命的細菌組合」進行測試:結核分枝桿菌、肺炎球菌、葡萄球菌、大腸桿菌與化膿性鏈球菌。經過初步優化後,赫萊因與多馬克創建了一套「運作流暢、可靠的發現系統」:化學物質需同時在試管與活體動物中測試;在動物實驗中,每種化學物質需「透過三種不同方式給藥(靜脈注射、皮下注射與口服)」;所有化學物質在小鼠身上的測試方式完全相同,並詳細記錄每次實驗結果²⁵。
時間推移,數千隻小鼠死亡,但他們並未放棄這一流程。數年過去,「儘管屢遭負面結果,多馬克既未改變方法,也未調整思路。」²⁶ 團隊堅信他們的測試處方是正確的,終有一天會產生結果,幫助他們優化輸入。
1932年秋天,這套方法論與耐心終於得到回報。克拉雷決定將硫與偶氮化合物結合,化學物質Kl-695被置於數年來數千種化學物質都經歷過的測試流程中。這一次,流程產生了期望的結果:感染細菌的小鼠康復,且未出現明顯毒性。多馬克當時尚不明白其作用機制,只知道它有效。「奇怪的是,它在試管中無法殺死鏈球菌,僅在活體動物中有效;且僅對鏈球菌起作用,對其他致病菌無效。但考慮到鏈球菌疾病的數量與致命性,它在關鍵領域發揮了作用。」有趣的是,Kl-695首次測試時,多馬克正在度假,錯過了見證這一突破性時刻²⁷。但當時流程已根深蒂固,團隊數十人中任何人都能執行。
Kl-695的發現,讓拜耳團隊得以優化輸入測試演算法的數據。「克拉雷現在對Kl-695進行了多種變異實驗,發現只要硫以正確位置連接在偶氮染料骨架上,該藥物就能對抗鏈球菌。將硫連接到任何偶氮染料上,都會以某種方式將其從不穩定、無效的化學物質,轉化為高效的抗鏈球菌藥物。」²⁸ 他們持續優化輸入,發現了更多有效的偶氮-硫化合物,包括Kl-730。
拜耳科學家當時並未意識到,關鍵不在於偶氮-硫組合,而在於硫本身。其後的研究證實,硫在治療鏈球菌感染方面具有功效。硫的結構與對氨基苯甲酸(PABA)極為相似,而對氨基苯甲酸是鏈球菌等致病菌的關鍵營養物質。細菌會與硫結合(誤將其當做對氨基苯甲酸),但無法代謝硫,最終被殺死。硫價格低廉、易於獲得,因此拜耳的磺胺類抗生素上市後,許多公司紛紛跟進生產²⁹。
拜耳這種類似演算法的方法,最終促成了磺胺類抗生素特性的發現,產生了深遠影響。「磺胺類藥物也改變了藥物研究的方式。在此之前,小型實驗室依據研究人員的直覺開展工作,專利藥製造商未經測試就隨意拼湊藥物。此後,由特定治療目標指導的工業規模化學研究——赫萊因及其拜耳團隊開創的新藥研發系統,成為行業標準。成功的製藥公司,都是遵循拜耳模式的企業。」³⁰ 拜耳此後繼續運用這套「盡可能編碼流程」的系統,發現了許多實用抗生素。
即便你不確定哪些是獲得期望結果的最佳輸入,正確的演算法也能提供幫助。透過在可重複流程中測試各種輸入,你可以利用結果優化輸入數據。你並不總需要善於直接找到答案,只需擁有一套尋找答案的優質演算法。
## 結論
演算法的核心是一套明確的規則,提供行動指引。我們也可將其概念化為「若-則」流程——其價值在於幫助我們忽略無關變量,聚焦核心需求。做為思維模型的演算法,提出了一種思考方式:探索可建立哪些流程,以獲得期望的結果。
### 輔助觀點:複雜適應系統
「學者通常將複雜系統與複雜適應系統區分開來:複雜系統中,實體遵循固定規則;而複雜適應系統中,實體具有適應能力。若實體能適應,系統應對環境變化的能力將更強。」
斯科特·E·佩奇(Scott E. Page)¹
部分系統簡單且非適應性:透過瞭解其組成部分,就能掌握其運作方式,且不會因環境變化而改變。例如,一枚基礎的懷錶——你可將其拆解以探究原理,且在一定限度內,不論周圍發生什麼,它都會以相同方式運作。
複雜適應系統的屬性大於其組成部分的總和:僅研究個體組成部分無法理解整個系統——這些組成部分可能簡單,但相互作用的方式難以預測、呈非線性。少數通常簡單的規則,使組成部分能在無集中控制的情況下自我組織;各組成部分之間的互動與資訊傳遞,創造了系統的複雜性。系統能根據環境變化、為追求目標而調整自身,這使其具有適應性²。複雜適應系統具有「記憶」——會受到既往經歷的影響。
城市交通是複雜適應系統的一個例子:就個體汽車而言,其運作方式是各組成部分協同作用的邏輯結果,屬於簡單系統;但當觀察眾多汽車的聯合互動時,會發現顯著的自我組織特性。交通會根據環境資訊調整行為,僅聚焦單一汽車無法瞭解整個系統——關鍵在於汽車之間的互動。
梅拉妮·米切爾(Melanie Mitchell)在《複雜性:一種引導之旅》中,將複雜系統定義為「由大量組成部分構成的網絡,無集中控制,遵循簡單運作規則,最終產生複雜的集體行為、精密的資訊處理,並透過學習或演化實現適應。」³
在複雜適應系統中,所有組成部分相互依賴,能直接或間接影響整個系統的行為。若一輛汽車在主幹道發生故障,可能會對城市其他區域的交通產生連鎖反應;組成部分之間的互動,會放大微小變化的影響。
在複雜適應系統中,任何行動都會產生連鎖反應⁴——介入行為幾乎必然引發非預期後果。通常,當我們試圖改進複雜適應系統時,反而會使情況變得更糟,因為我們高估了自身的控制能力。
與複雜適應系統共處,不能期望它們受可預測規則支配,也不能期望透過微觀研究理解宏觀。應對這類系統,需要接受非線性與意外。
複雜適應系統另一個可能阻礙我們的方面,是其根據新資訊學習與調整的能力。例如,預測流感在人群中傳播的模型,必須考慮到人們會改變行為——若人們聽到疫情警告或看到他人患病,接種疫苗的可能性會大幅增加⁵。
我們仍能從複雜系統中學習,只是需要保持謙遜,運用科學方法。決不能將相關性誤認為因果關係,應始終願意深入瞭解系統,接受其變化的屬性。昨天學到的知識或許能提供指引,但明天可能就會改變。不能因系統複雜就放棄探索。

從外部看,複雜適應系統可能看似混亂,但略微無序時往往運作最佳——這為變異與實驗提供了空間。從長遠來看,偏差往往會相互抵消,形成更協調的運作模式。
「僅透過對複雜非線性系統的部分研究,無法充分瞭解整體行為。」
默里·蓋爾-曼(Murray Gell-Mann)⁶
---
¹ 尤瓦爾·諾亞·哈拉里,《人類简史》
² 丹尼爾·丹尼特(Daniel Dennett),《直覺泵與其他思維工具》
³ 丹尼特,《直覺泵與其他思維工具》
⁴ 丹尼特,《直覺泵與其他思維工具》
⁵ 丹尼特,《直覺泵與其他思維工具》
⁷ 彼得·T·利森(Peter T. Leeson),《看不見的鉤子》
⁸ 海盜法律體系與主流社會法律對比研究
⁹ 海盜船員規模統計
¹⁰ 海盜船員來源與社會紐帶研究
¹¹ 海盜與商船水手收入對比
¹² 海盜章程與組織效率研究
¹³ 典型海盜章程內容記錄
¹⁴ 海盜劫掠物分配與獎懲機制
¹⁵ 海盜章程的權限與修訂規則
¹⁶ 海盜社會民主化研究
¹⁷ 海盜船長選舉與罷免制度
¹⁸ 海盜領導權制衡機制
¹⁹ 鄭一嫂(Ching Shih)生平與海盜生涯
²⁰ 鄭一嫂船隊規模數據
²¹ 黑鬍子(Blackbeard)船隊規模記錄
²² 鄭一嫂與清政府談判及退休事宜
¹ 保羅·洛克哈特(Paul Lockhart),《算術》
²³ 早期抗菌藥物研究史
²⁴ 拜耳抗生素工業化研究體系
²⁵ 拜耳化學物質測試流程詳解
²⁶ 多馬克(Gerhard Domagk)研究堅持性記錄
²⁷ Kl-695測試與突破性發現
²⁸ 偶氮-硫化合物優化研究
²⁹ 磺胺類抗生素作用機制研究
³⁰ 磺胺類藥物對製藥研究的影響
¹ 斯科特·E·佩奇(Scott E. Page),《差異》
² 複雜適應系統適應性研究
³ 梅拉妮·米切爾(Melanie Mitchell),《複雜性:一種引導之旅》
⁴ 複雜適應系統連鎖反應研究
⁵ 流感傳播模型與人類行為調整研究
⁶ 默里·蓋爾-曼(Murray Gell-Mann),《夸克與美洲豹》