# 羅博深：數學、數學奧林匹克、組合數學與接觸者追蹤

> 數學家談奧數訓練與組合數學思維，以及如何用數學建模來做接觸者追蹤。

- 原標題：#183 – Po-Shen Loh: Mathematics, Math Olympiad, Combinatorics & Contact Tracing
- 期數：第 183 期
- 釋出日期：2021-05-14
- 嘉賓 / 主題：羅博深
- 網頁版：https://lex.qiaomu.ai/tw/ep/po-shen-loh/
- 官方頁面：https://lexfridman.com/po-shen-loh/
- 精讀字數：約 7509 字（閱讀約 17 分鐘）

> 本文為 lex.qiaomu.ai 基於原始訪談的 AI 改寫中文精讀，非官方翻譯；引用請註明出處並連結網頁版。

2020年3月，美國因新冠疫情進入停擺。一位卡內基梅隆大學的數學教授，帶著一支以使用者體驗設計師為核心的團隊，提出了一個當時幾乎沒人這樣想過的問題：如果疾病真的來了，你希望手機告訴你什麼？常見的做法是通知你"你昨天接觸過病人，請隔離"。他想的卻是另一件事：**這個病毒現在離你還有幾層關係**。前者是事後追責，後者是事前預警。這個視角的切換，最後演化成了一個叫 Novid 的 App，也成了他眼中未來應對大流行的一條新路。

他叫羅博深（Po-Shen Loh），卡內基梅隆大學數學系教授，美國國際數學奧林匹克（IMO）國家隊主教練，線上教育平臺 Expii 的創始人。這期播客裡，他跟 Lex Fridman 聊了數學、奧數、組合數學、接觸者追蹤，也聊了教育、自由，以及一個人該怎樣衡量自己這一生的意義。

## 數學的難，藏在"發明"裡

很多人把"數學很難"當成一句抱怨。羅博深不這麼看。

他區分了兩種"難"。一種是記憶的難，你得把老師教過的方法一條條背下來，考試時再原樣套用。另一種是發明的難，你面對一個從沒見過的問題，不知道該從哪裡下手，但經過一段時間的思考，你能自己找到一條路。前一種難讓人痛苦，後一種難讓人上癮。

> 我從來不想直接告訴別人"你應該這樣做"。我更喜歡說，這裡有一個有趣的問題，我知道你還不太會做，你有什麼想法嗎？（羅博深）

這套方法在課堂上真刀真槍地跑過。他在卡內基梅隆的課，考試佔總成績的90%，而且考試全部開卷，學生可以把往年所有題目和筆記都帶上。但他給了一個保證：這次考試的題目，和過去給過的任何一道題都不重疊，也和他課上講過的任何內容都不重疊。整場考試就是一次發明。

第一次考試通常一片哀嚎，學生會想，這什麼瘋課，教授根本不教考試要考的東西。但到第二次、第三次，情況會變。學期結束時，學生學會的不再是某個方法，而是這個領域裡的任意問題都能自己想辦法解決的底氣。

他說他上課像即興喜劇。沒有講稿，走進教室，大家一起把一個證明"演"出來。他接住學生丟擲的每個想法，再往前面推一步，跟即興喜劇裡的"yes, and"一個道理。所以每次教同一門課，每個證明都略有不同，因為那是學生現場想出來的。

## 奧數的評分現場，像一場跨語言的陪審團

國際數學奧林匹克，是大學之前最頂級的數學競賽。每個國家派6名選手，兩天，每天4個半小時做3道題，一共6道題，每題7分，滿分42分。

這些題目不是算數。題目通常是這樣一句：請解釋為什麼下面這個奇怪的事實是對的。你從沒見過它，但你要寫出一篇論文式的解答。解出任意一道，就已經是天才級別，可以拿榮譽獎。

評分過程很有意思。主辦國會派出大約50人參與閱卷。每個國家的領隊和副領隊，跟主辦方的兩三個人坐在桌子兩邊，對著一份試卷，按既定標準討價還價。有趣的地方在於，很多國家的選手用母語作答。蒙古選手用蒙古語寫，絕大多數閱卷人看不懂，只能靠蒙古隊的教練現場翻譯，說明學生到底寫了什麼。

羅博深說，這個過程有點像陪審團，只不過陪審員之間有時候語言不通。美國隊的答卷一律用英文寫，所以誰都能看，反過來也意味著他們沒法做什麼手腳。有時候美國隊坐下來，會主動說：你們給的分太多了，按我們的標準，這道題不該拿這麼多分。

> 我們不討價還價去爭取更高的分數。有時候我們會說，你給的太多了。（羅博深）

## 一道題有多難，取決於它藏了幾個"洞察的跳躍"

羅博深給難題下過一個定義：數一數從題目到答案，中間需要幾次視角的切換。他管這叫"洞察的跳躍"（leap of insight）。

每一次跳躍，都意味著搜尋空間的一次大分叉。所以一道需要三次跳躍的題，難度會遠遠超過一道需要一次跳躍的題的三倍，它是指數級的差距。因為每次跳躍之後，你都不能確定這一步是不是對的方向。

他用這個思路讀數學教科書。大學時他發現自己讀數學書效率極低，一頁紙上全是正確的話，讀完卻完全不知道自己讀了什麼。後來他換了方法：看一眼定理的陳述，看一眼證明有多長，然後合上書，自己嘗試重新證明一遍。

證明的長度，大致正比於洞察的數量。一段兩頁長的證明，意味著裡面藏了好幾個跳躍，是真正的硬骨頭。一段五行就結束的證明，說明只有一個洞察，可以自己先試試。

這個經驗法則不精確，但在他自己的書裡、同一主題的範圍內，相當管用。他甚至把同樣的思路用在競賽裡：看一眼題目是第1題、第2題還是第3題，就大致知道要跳幾次。

這背後是一種更深的認知。人類發明東西的時候，最折磨人的地方在於方向的未知：答案在哪裡固然不知道，更讓人不安的是，你連自己此刻站的方向對不對都無從判斷。安德魯·懷爾斯（Andrew Wiles）花了七年攻費馬大定理，七年裡大部分時間都在承受這種不確定。羅博深說，專業研究者之所以願意忍受這種折磨，是因為當那些洞察終於串起來的那一刻，感覺實在太好了。

## 數學是發現的，還是發明的？

Lex 丟擲了這個老問題。羅博深的立場是"發現"。

他的理由來自他選題的偏好。他總被那些看起來簡單、卻異常困難的問題吸引，比如費馬大定理。為什麼一個小孩都能讀懂的命題，會難倒人類三百多年？如果數學是我們憑空發明的一套語言，這種"簡單的表述、深邃的結構"就不該反覆出現。

他還想象了一種場景：如果人類在宇宙中遇到另一個智慧物種，雙方對比筆記，大概會發現彼此都意識到了圓周率很重要。你可以說人類偏愛圓形是因為我們的感知方式，但恆星也偏愛圓形，行星也偏愛圓形。圓這個概念，就是"一個點，等距"，再沒有比它更簡單的東西了。

當然，對方物種的認知結構可能完全不同，它們可能看到的是我們根本看不到的東西。所以真正的難題在於：兩套心智要花多少功夫，才能磨出一套共同的語言。Lex 提到電影《降臨》，講的就是這個：如何與外星文明建立溝通。數學看似是最有希望的橋樑，但即便在數學裡，也得靠視覺化的證明、靠來回比劃、靠"我這裡有個想法，你看這樣能不能理解"，一步一步磨出一套共同語言。

## 投票樹：一個關於選舉的數學問題

羅博深研究過一個有意思的課題：能不能把選舉設計成一棵電路樹。

兩個候選人競選很簡單，直接比票數就行。但候選人一多，問題就來了，誰贏了其實很難說清。他設想的場景是：所有候選人兩兩之間的強弱關係是已知的，現在要設計一張"電路板"，讓候選人在上面兩兩對決，勝者晉級，像一棵二叉樹一樣往上爬，最後走出一個冠軍。

這裡有個很自然的要求：冠軍最好贏過很多人，光贏過一路上遇到的那幾個對手遠遠不夠。他先講了一個漂亮的事實。

如果有1024個候選人，其中必然存在一個人，至少贏過其他512個人。

這個結論第一眼不顯然，但證明很巧妙。想象每一場對決，雙方各記1分（先別管真實規則裡只給勝者記分）。這樣一來，每個人的總分都一樣，等於"其他候選人的數量"。現在改成只給勝者記1分，等於砍掉了一半的總分。總分減半，那麼必然有人高於平均值，也就是至少贏過一半的人。這是期望值的基本性質：一個隨機變數的取值裡，總有一個不小於它的期望。

接下來是設計電路。傳統的平衡二叉樹有個漏洞：可能有一個候選人，一路上只贏過十來個對手，卻因為籤運好，最後爬到了頂上。這樣的電路，你不能放心地用在所有選舉裡。

羅博深和合作者設計出了一種新的電路結構，把"冠軍至少贏過多少人"的保證，從原來的對數級別（大約 log₂N）提升到了平方根級別（√N）。對1024個候選人來說，這意味著冠軍的"含金量"門檻高了一大截。

他描述了一個核心部件：讓候選人7分別和 A、B、C、D 單獨對決，然後這些勝者再兩兩對決，層層往上。這樣設計的好處是，如果你看到7最終從頂上冒出來，你就知道7是真的打敗了這一大群對手；如果頂上冒出的是別人，比如 F，那至少 F 在某個環節贏過7。這個結構保證了一件事：無論誰贏，他擊敗的對手數量都有一個下界。

羅博深補了一句：這套東西跟改進現實中的選舉制度是兩回事。好想法能不能被採納，是機制設計問題，是要在承認人性弱點的情況下，設計出讓人願意接受的激勵結構。那是另一場仗。

## 分散式求和：一枚硬幣和一次"招聘"

羅博深在微軟研究院待過一個夏天，研究過隨機聚合（stochastic coalescence）。

問題是這樣：假設有一大群人，每個人知道自己昨晚睡了幾個小時，現在要算出所有人的總睡眠時間。線性做法是一個一個問，一個一個加。但有個更聰明的辦法：既然每個人都會加法，那就讓他們自己並行地加起來。

1024個人，1號和2號把各自的數相加，2號消失，1號記住結果；3號和4號相加，3號記住結果。然後1號和3號再相加。這樣一層層往上，形成一棵樹。因為所有操作並行進行，總耗時只有樹的層數，也就是10步，是對數時間。

問題來了：你怎麼決定誰和誰配對？如果你站在市中心喊"你們倆一組、你們倆一組"，那還是線性時間，等於作弊。

於是有人提出了一個優雅的分散式方案。每個人一開始都是自己的"代表"，指向自己，手裡攥著自己那份數字。每一輪，每個人拋一次硬幣，決定自己是主動出去"找人合併"，還是待在原地等別人來。主動的人隨機挑一個人，如果對方已經歸別人管，就順著指標往上走，找到真正的代表。代表之間有頻寬限制，一次只能吸收一個人，多餘的請求被拒，下一輪再來。被吸收的人把數字加進去，更新自己的指標。

這個方案的美妙之處在於，整個過程不需要任何人知道全域性結構，完全是自組織。但羅博深發現了一個隱藏的陷阱：代表去接觸別的代表時，命中的機率正比於對方這個"塊"的大小。塊越大越容易被找到。極端情況下，會出現一個巨大的塊和一大堆還沒合併的單人塊，那個大塊每輪只能吞一個人，於是耗時退化成 √N。

他證明了這種不平衡確實會自然發生，所以純對數時間不成立。但他也找到了一個極小的修補：當代表收到多個請求時，不要隨機選，而是接受最小的那個塊。就這麼一點改動，就能把塊的大小重新拉勻，把整個系統的效率救回來。

他由此聯想到代表制民主。未來也許會出現一種新的投票方式：你信任某個朋友在某件事上的判斷，就把票委託給他，他再委託給更懂的人，一層層長出一張自下而上的代表網路。一人一票直接選總統這種形式，或許只是眾多可能中的一種，而且未必是資訊傳遞效率最高的那一種。這種網路結構，在網際網路時代第一次變得可行。圖論這門學科大部分理論在上世紀就做完了，但它的應用要等到21世紀，這是讓人興奮的地方。

## Novid：讓病毒"顯形"的那一層關係

回到疫情。

傳統的接觸者追蹤，邏輯是這樣：查出誰病了，查出他接觸過誰，然後把這些可能被感染的人從社會里隔離出去。羅博深說，這個反饋迴路的根本問題是"違背當事人意願"。你試圖控制幾十億人去做他們並不想做的事，這個迴路方向錯了，所以越控制越失控。

他換了個問題：假設你是普通人，疫情期間你最想要什麼？你想要的是能繼續正常生活，同時儘量別被傳染。那就該換一件事做：幫你避開病毒。等接觸了病人再把你隔離，那是另一條路。

可這個病有個特點，症狀出現前兩天就已經能傳染，你根本看不出誰病了。這時候網路理論派上用場：你身上的病毒是從某個人那裡來的。換個度量方式呢？不去算病毒離你多少米、多少秒，改算病毒離你隔著幾層人際關係，情況就完全不同了。

這個度量，像 LinkedIn 上的"幾度人脈"一樣，是一個很自然的想法。但羅博深說，正是這個簡單的切換，解鎖了一整套全新的行為反饋迴路。

他舉了一個極端的例子來說明它的威力。假設有一種病，致死率極高，患者七竅流血，空氣傳播。這種病一旦爆發，有多少人願意裝一個 App，來知道自己離這種病還有幾層關係？幾乎所有人。

也就是說，疾病越可怕、傳播越強，人們安裝這個 App 的動機就越強。危險程度越高，系統普及越快，防控越有力，一條正反饋就這麼轉起來了。羅博深說這個觀察不是他先想到的，是另一位朋友提醒他的，但他認為這是整個系統最值得驕傲的性質之一。

更妙的是行為的對稱性。過去所有防控方案都在盯"A組"（可能已經生病的人），想辦法讓他們別出門。而 Novid 盯的是"B組"（目前還健康的人）。當 B 組裡的人發現病毒一層層逼近，他們會自己選擇收縮社交、減少接觸。於是 A 組和 B 組之間自然拉開距離，而這一切都出於自願，出於每個人的自利動機。

> 這就像自由市場經濟和中央計劃經濟的區別。你只需要把激勵結構擺對，讓每個人在純粹自利的行為裡，恰好最佳化了全域性函式。（羅博深）

## 技術上怎麼做到不碰隱私

Novid 的一個硬約束是：絕不要求使用者提供個人資訊。

做到這一點靠的是藍芽。兩臺裝了 App 的手機靠近時，透過藍芽感知彼此的相對距離，不需要 GPS，不需要精確座標，只需要"我們當時大概離得這麼近"這個相對關係。這些關係拼起來，就是那張物理接觸網路。

距離的測量是機率式的。手機每隔五到八分鐘掃描一次周邊，像拍電影一樣一幀一幀地記錄。偶爾在超市裡跟陌生人擦肩十分鐘，這種關係會在統計上被沖淡。Novid 問的是未來：你接下來可能遇到什麼風險。它不追問過去：你之前可能被誰傳染過。只有那些反覆出現、持續時間長的關係，才會在演算法裡浮現為一條真正的邊。

整個系統的演算法要求是線性的。全球也就七八十億人，伺服器一小時重算一次，用 C++ 寫的後端，一臺四核雲伺服器就能扛住一個幾十萬到上百萬人的社群。羅博深說，這個"先用信封背面算清楚複雜度"的習慣，直接來自他高中時代的程式設計競賽。如果演算法不夠快，你還沒等到規模做大，就已經被伺服器賬單拖垮了。

他特別提到，iOS 系統對後臺執行非常苛刻，藍芽常駐掃描很耗電，很多團隊（包括英國的一些嘗試）都卡在這裡。Novid 團隊花了很多力氣把功耗壓下去，甚至比蘋果自家的方案還省電。

App 還會給每個人展示一組圖表：你有多少直接接觸者，兩度關係有多少人，三度關係有多少人。很多人看到自己在系統裡間接連著成百上千人時會興奮，然後主動拉更多人下載。羅博深說，他們的 App 在高校試點時，平均每個人只要有兩三個直接連線，就會觸發傳播。他們是在用一款 App 去"傳染"，去對抗同一張網路上傳播的病毒。

當然，為了防作弊，需要驗證機制。誰都能聲稱自己陽性，高中生的惡作劇會是"決賽周宣佈大爆發，取消考試"。所以系統借鑑了 Google 和 Apple 的思路：如果當地衛生部門接入，陽性者可以拿到一個短期有效的驗證碼，輸入後就是"已驗證陽性"。沒有驗證碼也可以自報，但那只是"未驗證"。

## 為什麼說這套思路不只對新冠有用

Lex 說，2020年整年他最失望的，是除了做疫苗的生物學家，幾乎所有機構都表現得一團糟。而更讓他擔心的是：如果下一次來的是致死率高得多的病毒，我們怎麼辦？

羅博深的判斷是，無論病毒多兇、有沒有疫苗，這套"按關係層數預警"的資訊機制都有用。因為現實很可能是每年都要補打新疫苗，而對世界上負擔不起疫苗的地區來說，其他手段就更重要。

他舉了一個更細的例子。假設有一種病，R0（基本傳染數）剛好在1附近徘徊，一部分人因為生活所迫必須出門，另一部分人可以選擇躲起來。只要讓能躲的人自願躲起來，把總體 R0 壓到1以下，疫情就不會爆發。關鍵就在於給每個人足夠的資訊，讓他自己決定風險偏好，強迫誰反而是下策。有人願意冒險，有人願意保守，加總起來的結果，可能恰好把病毒摁住。

這也解釋了為什麼 Novid 和過去的接觸追蹤 App 在使用者價值上有本質區別。裝一個傳統的接觸追蹤 App，對你自己的感染機率幾乎沒有影響，它只在你暴露之後才通知你，好讓你保護別人。這是純粹的利他，動機很弱。Novid 提供的是對你自己有用的資訊，動機很強。

> Novid 從不想要求你去隔離。它的原則是：如果有危險在靠近，告訴你，讓你自己決定要不要保護自己。（羅博深）

他說現在最重要的工作，是和各地的公共衛生研究者建立合作，做真實的試點部署。因為一個數學家不該跳出來說"這套東西一定管用"。他帶來的是網路理論和技術，缺的是流行病學和公共衛生的專業知識。他特別提到，菲律賓的國情和美國不同，這種事必須和當地研究者一起做。有意願的研究者可以透過 novid.org 聯絡他們。

## 如果數學不是答案，那什麼才是？

聊到最後，Lex 問了一個更大的問題：你覺得生命的意義是什麼？

他的回答有點奇怪，但很誠實。他說他給自己設過一個分數：在我不在了以後，我做過的事，還能影響多少"人年"。不要求署他的名字，只問這件事有沒有繼續起作用。

後來他調整過這個指標。因為他發現了一個更簡單的解一元二次方程的方法，比所有教科書上的都容易。這個方法有可能被寫進課本，一旦寫進去，被替換的機率就很小。所以那個分數可能已經不是有限的了。

但他也說，這個指標本身沒那麼重要，重要的是背後的態度：他想做的是能比自己活得更久的事。就像人們今天還在談牛頓，原因在於他發現了那些東西，跟牛頓這個人本身的關係其實不大。

> 人類可能只是肉做的載體，短暫地攜帶一些想法。真正長久的是那些想法本身。我們借來一堆想法，偶爾發明一個新的，那個新的可能就自己活下去了。（羅博深）

這和他給年輕人的建議是一體的。第一，把發明當成核心技能，別停留在模仿上。很多人學一件事的方式是看別人做一遍，然後換不同輸入重複很多遍，這裡面沒有發明。第二，想清楚你做的事情夠不夠大。他提到自己的博士導師 Benny Sudakov 教給他的一件事：選那些"萬一做成了會真正重要"的問題。他的另一位朋友 Jacob Fox 則總在問：就算你證出來了，我們從中學到了什麼可以拿到別處用的東西？

羅博深說，他做事不按"成功還是失敗"來判斷。如果 Novid 整個專案失敗了，他會覺得難受嗎？不會，那是個極難的問題。但如果不跳進去試，他會後悔。這就是他的行事方式：不怕失敗，只怕沒給自己那個機會。

## 你能帶走的東西

讀完這期訪談，如果想做點什麼，可以從下面幾條開始。

- 找一道真正不會做的題，中學生的數學競賽題就行（MathCounts、mathleague.org、AMC 8/10/12 都能搜到往屆題目），給自己留出至少十分鐘，不許翻答案，只許自己想。重點在於體驗一次"從不會到會"的過程，做不做得出來反而是次要的。
- 每天留出一段固定的思考時間，十分鐘到半小時都行，挑一個和你工作無關的問題，不看任何資料，純粹用自己的常識和邏輯推一遍。羅博深管這叫"鍛鍊思考的肌肉"，和數學能力一樣，它是練出來的。
- 如果你在學某個東西，別隻看別人怎麼做，試著自己從零推一遍。讀教科書時先看定理陳述和證明長度，然後合上書自己重證一次，這是羅博深親測有效的讀數學書的方法。
- 如果你是公共衛生領域的研究者，或者你認識當地衛生部門的人，可以瞭解一下 novid.org。這套方法的驗證、試點和推廣，正缺流行病學和公共衛生的合作伙伴。
- 做長期選擇時，問自己兩個問題：這件事要求我發明，還是隻要求我模仿？如果它做成了，會不會真的重要？兩個都是"是"，就值得投入，哪怕要打一場持續好幾年的仗。
