所謂“P=NP?
”問題,“?
”才是關鍵。
因為不知道等不等于,需要證明的就是等不等于。
簡單點的說,計算機解不同的題目,就是将之拆分成加加減減這樣最基礎的運算。
所以一道題究竟有多難……嗯,主要是對計算機多難,就取決于可以拆分成多少步,或者說花多少時間——計算機基礎運算的時間基本一樣,所以忽略空間方面的因素,二者大緻等價。
這叫時間複雜度,用大O也叫漸進符号表示。
O(1)就是常數級複雜度——最常規的計算,數據規模增加多少,運算花費時間也随之增加多少。
O(logn)就要複雜一點了。
然後還有O(n),O(nlogn),O(n^),O(n!
),O(n^n)……
一級一級,難度逐層上升,解題所用時間花式暴漲。
其中O(n^c)之下,是多項式時間内能解決的,就叫做P類問題。
在此之上的,雖然會随着n的增長,出現指數級甚至更過分的暴漲,卻有一個共同點,就是正向解很難,給你一個答案去驗證,一般就不難了。
比如大數的質因數分解。
想知道一個大數是不是素數很難,需要從2開始,一直除到根下n。
但告訴你它能被某個數整除,你去驗證,則就幾步的事。
這類可以在多項式時間裡驗證的問題,就叫做NP問題。
顯然所有P類問題,都是NP問題,因為是簡單可驗證的。
但NP類問題,是否都是P類問題?
是否存在某些特殊的算法,能将這些問題的難度降低到多項式時間可以解決,就仿佛給答案去驗證的程度上去呢?
這就是“P=NP?
”了。
在研究的過程中,又誕生出了NPP-hard問題。
所謂NPP問題可以約化成為的一類問題。
隻要解決這樣一個問題,就可以附帶的解決一大票問題。
隻要證明了NPC問題有快速算法,就基本證明了P=NP。
【NP-hard就不說了,這是一類包括NPPC的問題,定義是超出NP的,所以和這道題沒什麼關系。
】
最初所有人都以為NPC隻是空想,直到真的出現了這樣一個問題
也就是NPC的鼻祖——邏輯電路問題。
此後一大堆NPC冒出來,因為要證明新的NPC,隻要将之歸約為已知的NPC就行了,于是哈密頓回路、TSP問題、SAT問題、背包問題、旅行商問題,都變成了NPC。
不過出這道題的人一定沒看到葉寒那篇關于蛋白質折疊的論文……
或者看到了還沒來得及改;
也可能想改但是落子無悔,改不了了……
如果P=NP被證明,那整個世界,都會變得與我們認為的完全不同。
靈感與創造将沒有任何價值,因為所有問題的解,都可以用努力的算法解決,而且在多項式時間内。
就仿佛是,任何能夠欣賞交響樂的人,都能成為莫紮特;每個懂得數學論證的人,都是高斯;每個研究投資策略的人,都可以是巴菲特……
同樣道理,預測蛋白質折疊再不需窮舉,多項式時間就可以得到确定答案。
怎麼可能!
所以對于P=NP?
問題,葉寒是傾向于業界多數意見的——不成立。
不過他也沒有能夠成功證明或證僞,隻是提出了某一類NPPC問題并不等價——這已經很強大了。
更強大的是,他搞出了這類問題的混沌模型,并給出了對應的三維流形吸引子,簡稱葉氏吸引子,然後結合某種空間密鋪算法,進行了大幅優化修正。