“且看相對簡單的河圖洛書,每個格子必屬於九種狀態之一,分彆對應於數字1到9。而河圖洛書的規則,實際上就是對有限種狀態的約束。
第一種約束,是任意兩個不同的格子,狀態不同。
第二種約束,是任意三個直線相連的格子,狀態組合必須屬於以下八者其中之一:
(1,5,9),(1,6,8),(2,4,9),(2,5,8),(2,6,7),(3,4,8),(3,5,7),(4,5,6)。”
沈歸塵似懂非懂地點點頭。
“再看相對複雜的圍棋,每個交叉點也隻有三種可能的狀態:【黑】、【白】、【空點】。隻不過隨著棋局的進展,每個交叉點的狀態會動態地發生變化。
但無論怎樣,圍棋的幾條規則,落子規則,提子規則,禁止自殺與打劫,其實都是關於棋盤總狀態的約束。”
沈歸塵覺得徐林說得對,但又不知道這有什麼意義。
徐林總結道:“隻涉及狀態的賦值與狀態間的邏輯約束,這實際上就是布爾代數問題。”
天元大陸土著聽不懂思密達。
徐林所聊的,實際上就是圍棋問題的抽象化。也即是拉普拉斯妖,又或者說ai們是如何處理這個問題的。
在簡單的河圖洛書問題中,拉斯會假定9個變量x_i,分彆取值於數字1到9。
接下來她隻需要找到一組合適的取值,使得以下的邏輯命題全部正確:
【對於?i≠j,x_i≠x_j】
【對於?i,j,k∈1,2,3,4,5,6,7,8,9,1,4,7,2,5,8,3,6,9,1,5,9,3,5,7,
x_i,x_j,x_k∈1,5,9,1,6,8,2,4,9,2,5,8,2,6,7,3,4,8,3,5,7,4,5,6】
這實際上就是booean可滿足問題(sat),是計算機有能力解決的一大類典型問題。可以直接用sat求解器計算出結果。
對於圍棋,完全可以做類似的事,將每個交叉點編碼成變量x_i,t,取值範圍是黑,白,空點。因為圍棋是動態過程的緣故,變量x不僅依賴於位置i,同樣依賴於手數t。
與河圖洛書的處理辦法相似,圍棋規則可以全數轉化成關於x_i,t的邏輯約束,進而使得殘局求活同樣轉化成一個尋找x_i,t賦值,使得關於規則的邏輯語句全部成真的計算問題。
徐林世界的ai圍棋搜索就在隱含地處理類似的邏輯推理。隻不過它們並非做顯式查找,而是用神經網絡近似。
無論河圖洛書還是數獨,其實都是一個人的遊戲,故而獲勝條件是“存在”一組狀態,使得所有規則約束被滿足。
也即是說,本質都是sat問題。
可圍棋卻是雙方玩家對弈的遊戲,想要獲勝就必須“存在”黑方第一手,對“任意”白方第二手,“存在”黑方第三手,對“任意”白方第四手……最後都有x_i,t滿足所有規則約束包括黑方獲勝的一條額外約束)。
這種“存在”“任意”的量詞交替模式,決定了圍棋是比sat更高階的問題——qbf量化布爾公式)。
qbf的複雜度與sat相比如隔天塹。至少以徐林那個世界的計算力,完全無法將圍棋問題徹底解決。
當然,用拉斯開掛全秒了。
關於計算問題的難度,其境界劃分大致為:
第一境p境,可在多項式時間內求解,包括排序算法、素性判斷。
第二境np境,不可在多項式時間內求解,卻可以在多項式時間內驗證一個答案是否正確,就比如sat。
第三境pspace境,可在多項式空間內求解,比如圍棋、象棋各種棋,還有方才的qe境,可在指數時間內求解,比如各種廣義遊戲是否有必勝策略。
再往上的境界,已是不知天地為何物,恐怕隻有神才知道。
qbf相比sat,橫跨一個大境界,一般情形下根本無法同台較量。
但是眾所周知,儘管圍棋死活題的複雜度達到pspace,可一個人依舊是可以做的。這個時候其實就用到一件事,那就是枚舉對方可能策略,將一切可能性堵死。
qbf問題也是如此,完全可以通過枚舉去掉邏輯語句中的“任意”,將他們全部改成存在。
徐林事先聲明自己將在120手內取勝,看似提高圍棋殘局的難度,可實際上卻簡化了qbf求解,將搜索範圍極大的縮小。
至多隻有黑方60手,白方60手的相互交替。那麼就可以通過枚舉白方60手的對策,將qbf問題轉化成低階的sat問題。
說起來簡單,可是因為sat與qbf間橫隔一個大境界差距,此過程無法在多項式時間內處理。