朋友問我:P=NP 被攻破了嗎?

朋友在群組丟來一則新聞,問我「P=NP 是不是被攻破了」。這則新聞是真的有東西,但朋友把兩件事混在一起了:被推翻的是 ETH,不是 P=NP。而且這次改善的是「上界」,不是「我們終於有快演算法」。這篇是把話講清楚的版本。

8 分鐘Read in English
complexityai-researchmathematics
複雜度階梯圖,標出這次把上界從指數推到次指數,但還沒到多項式

星期二晚上,朋友在群組丟來一張新聞截圖,問我:「這是說 P=NP 被攻破了嗎?」

我說:「不是 P=NP,是 ETH。」

他問:「那不是一樣嗎?」

那個當下我其實沒有好答案。隔天中午我們碰面,我花了半小時把這件事從頭講一次。這篇就是那次講的內容,加上後來我自己去讀原始手稿補上的細節。

那天到底發生了什麼

OpenAI 在十月六日先把七百多篇數學手稿放上 GitHub。十月二十六日又加了兩篇,其中一篇是目錄上的第 378 號:〈Disproof of the Exponential Time Hypothesis〉,論文自己的標題則是〈The Exponential Time Hypothesis is False〉。

整個庫現在是 721 篇手稿、373 個家族。家族編號有跳號,所以編號到 378,不代表真的有 378 個家族。

幾小時後,Anthropic 也說他們的模型在 10 月 16 日獨立找到核心想法,並稱 OpenAI 的模型「獨立且同時」證明了類似的結果。

朋友打斷我:「所以是誰先的?」

「不知道,也不重要。」我跟他說,真正值得看的地方,是這些東西還不是論文。

OpenAI 自己在 README 裡寫得很白:這些是「原始研究資料」,不是打磨過的學術論文,而且「部分沒有形式化的結果可能有問題」。整個庫大約 42% 的頂層結果有 Lean 形式化,這篇第 378 號是其中之一,核心的時間上界有被機器檢查過。

學界沒有急著下結論。Impagliazzo、Paturi(1999 年提出 ETH,期刊版 2001)跟 MIT 的 Williams 組了工作組、發公開信,特別強調一件事:參與,不等於認證。

到 10 月 28 日,MathWorld 的紀錄寫得很清楚:還沒有獨立驗證。

先從數獨開始

要講清楚這件事,得先講一個看起來完全不相關的東西:數獨。

朋友點頭,他玩數獨。

「你先想像一個填好的盤面。我拿給你看,你大概十秒就能確認對不對。但如果我給你一張空白盤,你要找到那組解,可能要半小時。」

這就是 P 與 NP 的差別。P 是「可以快速解」的問題,NP 是「答案可以快速驗證」的問題。

而 P 等於 NP 這句話的意思是:所有能快速驗證的答案,都能快速找到。

學界幾乎所有人都覺得這句話是錯的,但沒有人證明過。

ETH 比這句話更強。它不只是說「3SAT 不在 P 裡」,而是說:存在一個常數 c,使得 3SAT 至少要 2 的 cn 次方步。 3SAT 是這一類問題裡最標準的那一個,跟數獨同樣是 NP-完全。

打個比方。P 不等於 NP 只說「兩者不是同一個位置」;ETH 說的是「兩者至少相距兩千公里」——後者資訊多得多。

為什麼有人要假設這種東西

「假設一個沒人證明的東西,有什麼用?」朋友問。

用處在於:如果你知道兩地至少相距兩千公里,就可以推論沒有人能在一小時內開車到。 距離的下界,直接排除掉一整類「很快」的解法。

過去二十年,「細粒度複雜度」這個領域就是這樣運作的:先假設 ETH 成立,再證明「如果這個問題有快速演算法,那 3SAT 就有快速演算法,矛盾」。所以 ETH 不是課本上的名詞,它是一整批論文的地基。

複雜度階梯。ETH 主張最上層不能更低;這次的結果把「上界」壓到中間那層。

那 OpenAI 到底做了什麼

他們的模型找到一個演算法,可以算出一個邏輯公式有幾組解——是「算出有幾組」,不是「判斷有沒有解」,比原本的要求更強。時間是 2 的 n 除以根號(自然對數 n)次方,空間則是多項式。

朋友指著我在紙上寫的那串式子:「這是什麼意思?」

「意思是指數還在,只是除以一個會慢慢變大的數字。n 越大,除得越多。」

「那不是變快了?」

「是。但要看跟誰比。」

目前最好的 3SAT 演算法(隨機化)大約是 1.307 的 n 次方。

假設 n 等於一千。那個等級的演算法,大約是 2 的 386 次方;這次的結果,大約是 2 的 380 次方。

只快了大約 60 倍。

60 倍聽起來不少,但 2 的 380 次方還是 10 的 114 次方。宇宙年齡以秒計,也只有 4 乘 10 的 17 次方。

真正的差別在 n 很大的時候。n 等於一百萬,一個是 2 的 269000 次方,一個是 2 的 386000 次方——差距拉開,但兩個都還是天文數字。

所以這次的重點不是「快多少」,而是「快過那條下界」。

n = 1000 的對照。這次不是從 2^n 降到 2^380,而是從 2^386 降到 2^380——快 64 倍,仍然不可行。

上下界要分清楚

這裡有個容易搞混的地方。

演算法是一種「上界」:它告訴我們,這件事最多需要多少時間就能做到。

ETH 是一種「下界」:它說,這件事至少需要多少時間。

這次的結果,把上界壓到次指數。對足夠大的 n,這個上界會低於 ETH 宣稱的下界——所以 ETH 被推翻。

朋友問:「所以反過來也成立嗎?」

「你說的『反過來』有兩種。」

P 等於 NP 確實會讓 ETH 不成立——但那是同一個箭頭的逆否命題,不是新的推論。

真正不成立的是另一種反推:手上只有「ETH 被推翻」,推不出「P 等於 NP」。這個箭頭,不成立。

用回距離的比喻:原本大家以為至少兩千公里,現在證明只有八百公里。距離變短了,但你手上那台車還是太慢,一小時內到不了。

所以 P 是否等於 NP,到今天為止,完全開放。

上面那個箭頭成立,下面那個不成立。這是整件事最常被誤讀的地方。

那為什麼還是大事

「既然 P 等於 NP 沒有被動到,那大家在興奮什麼?」

「因為它拆掉了很多人的直覺。」

Ryan Williams 對媒體說,證明的有些部分也許算例行公事,但確實有兩三個「看起來很外星人」的部分,正是這些部分讓他覺得,這是整個社群要一起處理的課題。

他也說了一句很誠實的話:「每一位電腦科學家大概都該把 P 等於 NP 的可能性權重調高一點,但調整多少因人而異。」

「所以有人檢查過了嗎?」朋友問。

「有,但還沒檢查完。」

手稿裡大約 42% 的頂層結果有 Lean 形式化。Lean 是一套能讓電腦逐步檢查證明的工具。可是電腦檢查過,不等於結論成立——它確認推導沒有漏洞,卻不能保證題目定義是大家想的那一題,也不能保證這個定理有用。

實際影響大概三塊。

第一,細粒度複雜度要重看一批論文。那些「假設 ETH 成立,則某問題不能低於某個複雜度」的條件句,前提沒了;結論不一定變假,但不能再拿來推無條件下界。

第二,密碼學沒有因此被破。現行系統依賴的是因數分解、離散對數、格問題這幾類特定問題,不是 3SAT 這個家族;而且這次的演算法還是指數時間。

第三,工程上短期完全無感。任何拿這件事說「AI 推論要變快了」的說法,都是把理論上界當成執行時間。

回到那個群組

隔天吃完午飯,朋友問我最後一個問題:「所以這是假新聞嗎?」

「不是。」我說,「它有真東西。錯的是把它講成『攻破 P=NP』。」

「那我以後要怎麼看這種新聞?」

我想了一下,伸出三根手指。

「第一,看它是宣稱還是證明。發在 GitHub 上的手稿,跟期刊論文不是同一個等級的東西——更何況 OpenAI 自己就寫了『這是原始研究資料』。

第二,看它形式化到哪裡。Lean 能檢查推導,但不能保證題目是大家想的那一題。

第三,看它推翻了什麼、又沒推翻什麼。這次推翻的是『3SAT 至少要 2 的 cn 次方』這個下界的宣稱;它沒有推翻 P 不等於 NP,也沒有給出任何能用的演算法。」

他聽完,把手機收起來,說了一句:「所以那則新聞,是把『距離沒那麼遠』寫成『已經到了』。」

對。就是這樣。


這篇寫在 2026-10-29,學界審查還在進行中。如果後續出現獨立驗證、或證明被找出問題,我會回來更新。原始資料在 openai/math 的第 378 號家族;ETH 的定義與推論可以看 MathWorld。