速攻是隱形的
走 b 路會自報行蹤:黑方的炮盯著這條縱線,能看見有東西落到河沿上。但紅方不必走那條路。沿著空空的 d 路上去,黑方沒有任何棋子能看見其中任何一個點:d3、d5、e5,第 4 回合擒將。唯一的警報只是「有一枚紅子離開了原位」,而這句話描述的是古往今來的每一盤棋。
所以防守不能等警報響了再做,它必須每盤都走。本文其餘部分為了圖示清晰,一律畫可見的那條路線。兩條路線的威脅完全相同。
最自然的防守是顆地雷
炮與將之間恰好隔著一個炮架:黑方自己的中卒。炮吃子恰好需要一個炮架,所以在中路上再墊進任何一枚棋子,擒將就不成立了。最順手的選擇是補士。它封住中路,除此之外什麼也不做,還埋下一顆地雷:紅炮平到一側象所在的縱線,隔著卒把象吃掉。
有一手解救:立刻把有毒一翼的象飛上中路,兩個吃象點就同時失效。但這本該是你開局的第一步。補士花掉整整一步,卻只做了飛象工作的一小部分,而在你補救的同時,紅方白吃一個邊線的車。
一步飛象守住一切
真正管用的,是象棋裡最標準的出子著法:飛中象。
狙擊廢了,兩翼的象都有保護,只用一步。象棋理論比迷霧早幾百年就走到了這個點上。把炮走到同一個點同樣管用。
賭車
剩下的是兩條邊線:炮從河沿的邊角隔著邊卒打車,而中象對此無能為力。
這件事由行棋次序決定。擒將最早也要等到紅方第三步,所以黑方第二步飛象還來得及。邊線卻等不起:紅方第二步就要選定邊角,之後再推的卒已經遲了。所以先挺卒,再飛象。推上去的卒正好盯住炮必須開火的那個點,炮一落地就被吃掉。
於是只剩一場堂堂正正的賭局。紅方第二步盲選一個邊角:一半機率選中被盯住的那邊,用炮換一個卒;另一半機率贏下一個車。交給引擎跑完後續,兩條分支大致相抵。每盤只有一次公平的擲硬幣,而且紅方必須立刻下注:只要多給黑方一步,兩條邊線就都關上了。
炮死之後
擲硬幣的一半結果裡,紅炮死在卒的手上。紅方回吃這個卒(引擎在每一盤推演裡都這麼走了),而這步回吃是份大禮:它自己成了炮架,黑炮隔著它一炮打穿角上的車。引擎給紅方打出 -0.55:攻勢結束,淨虧一炮,一無所獲。
紅方擋得住這一炮嗎?有兩條路,都不痛快。不回吃可以在這條線上留住兩個炮架,可過河的黑卒會繼續一路吃過去,一步之後炮線重新開啟,紅方還多丟一個兵。回吃之後再跳馬墊線,車是保住了。在從絆索觸發開始的六盤引擎推演裡,整套流程自動上演,吃、回吃、反擊炮一樣不缺,黑方拿下了其中五盤(配套研究裡的 Tripwire 系列對局)。墊擋是這樣的:
車丟之後
另一半結果裡,黑方淨虧一個車。引擎給局面打分從 -1(必敗)到 +1(必勝);它給這個局面打 -0.75,大約是八盤贏一盤。接近輸定,但還沒完。而且落在角上的炮看著比實際嚇人:它能吃的每一子,吃完都會立刻被回吃。它真正的威力是凍結:旁邊的馬和象正把底線關得死死的,兩者只要有一個動了,下一炮打的就是將。
那黑方怎麼打?引擎給出了三條思路。第一,耐心:底線上什麼都不碰。第二,立刻簡化:在我們最初的推演裡,它從這個局面走的第一步,每一盤都是用自己的炮隔著紅方還在原位的炮,把紅方原位的馬狙掉,以炮換馬,鈍化攻勢。第三,在另一翼反擊,你自己的炮在那邊還有戲;下一節會展示最鋒利的版本。而且這局面逃得出去:十盤強制抓車的對局裡,黑方直接贏下兩盤(配套研究裡的 Rim gambit 第 2、第 8 局,分別用了 84 著和 56 著),另有三盤撐到了著數上限。八分之一的勝率是評估值;在分出勝負的對局裡,實戰是四分之一。
誰先挪牆誰先死
有一個模式在每條分支裡都決定過勝負,而且它適用於任何帶遠端棋子的迷霧棋:站在開火點上的炮,同時也是擋住對面敵炮的牆。誰先離開,對方就從缺口裡開火。而迷霧偏偏會引誘你離開:站在牆上望過去,敵方的卒像是白送的。吃了它,下一著你就被擒將。
這也回答了一個合理的問題:黑方為什麼不自己也去河沿?可以去,而且它能懲罰任何伸手抓子的紅方。紅方只有一條穩妥的應法:先封住自己的中路,再碰任何東西。這樣一來,這門反架炮永遠開不了火。
引擎怎麼說
我把速攻強制擺上棋盤,讓 Misty 執雙方下了三十盤:二十盤走狙擊嘗試,十盤走抓車。狙擊一次也沒有打響;二十盤裡有十八盤,黑方三步之內就完成了封堵。速攻組的戰績是黑方 9 勝、紅方 4 勝、7 盤達到著數上限;強制抓車組是紅方 5 勝、黑方 2 勝、3 盤到上限。然後我讓黑方用本文教的這條線應對同樣的強制速攻,又下了八盤:黑方贏了六盤,沒有和棋。這條線不只是適合人類;它拿下的分數比引擎自己選的防守還多。下面是其中一盤的完整棋譜:
本文背後的所有對局都收錄在配套研究裡:理論變化、二十盤強制速攻與十盤強制邊線抓車的引擎對局,以及十六盤自由自對弈。把研究棋盤切到黑方的迷霧視角,一步步看他當時究竟看見了什麼。
完全放開讓它自由選擇,再下十六盤,十二盤分出勝負的對局裡紅方贏了十一盤,而且一次也沒有走過速攻。樣本不大,這些計數只當方向看。局面評估值則站得更穩:算力加到十六倍,數值紋絲不動。
| 局面 | 引擎判定 |
|---|---|
| 開局局面,紅方走子 | +0.06 紅優:真實但很小的先手優勢 |
| 理論定型:封堵完成,速攻炮停在 e5 | 0.00:完全均勢,速攻被徹底化解 |
| 紅方賭贏了車 | 黑方 -0.75:接近輸定,仍有抵抗 |
| 紅方賭輸了炮 | 紅方 -0.55:明顯敗勢 |
| 反架炮對先封中的紅方 | +0.25 紅優:反架炮比挺卒主線讓出更多 |
最後一項檢驗:我強制黑方按本文教的線走,對手是自由行棋的紅方,共八盤。七盤分出勝負的對局黑方贏了五盤,而自由選擇時是十二盤裡贏一盤。這三步保險著法毫無代價。
把賭局的兩條分支取平均,孤注一擲的速攻對紅方約值 +0.10,和開局自帶的 +0.06 屬於同一量級:整份先手優勢,在一場賭局裡一次花光。迷霧中的主動權是真實的,多半比國際象棋裡還大,因為防守是閉著眼睛付賬的。速攻是花掉主動權最響亮的方式,而最響亮的方式是有解的。
該學的那條線
執黑:挺邊卒,飛中象,馬跳向另一側邊線。三步之後,剩下的唯一目標就是你沒推卒那一側的車,而且只有紅方第二步就下注時才吃得到。永遠不要用士封中。在挪動落地炮附近的任何棋子之前,先數炮架:我們找到的大多數敗局,都來自挪動了一枚正默默封著某條火線的棋子。
執紅:速攻能贏下所有沒讀到這裡的人,對讀過的人則是對半開的賭注。如果你要走它,第二步就選定邊線,否則乾脆別選,並且在兌現任何抓取之前先封住自己的中路:指令碼里每一個先抓子的紅方都被擒了將。
親手走一遍
本文的每條變化、每盤對局都在配套研究裡,棋盤可以切換到任何一方的迷霧視角。準備好之後,Misty 會在你練這條線的時候好好教訓你。無需帳號。