速攻是隐形的

走 b 路会自报行踪:黑方的炮盯着这条纵线,能看见有东西落到河沿上。但红方不必走那条路。沿着空空的 d 路上去,黑方没有任何棋子能看见其中任何一个点:d3、d5、e5,第 4 回合擒将。唯一的警报只是「有一枚红子离开了原位」,而这句话描述的是古往今来的每一盘棋。

真实局面楚 河 漢 界黑方所见楚 河 漢 界??
擒将前一步。左:真实局面。右:黑方能看见的一切。炮自始至终没有进入画面。

所以防守不能等警报响了再做,它必须每盘都走。本文其余部分为了图示清晰,一律画可见的那条路线。两条路线的威胁完全相同。

最自然的防守是颗地雷

炮与将之间恰好隔着一个炮架:黑方自己的中卒。炮吃子恰好需要一个炮架,所以在中路上再垫进任何一枚棋子,擒将就不成立了。最顺手的选择是补士。它封住中路,除此之外什么也不做,还埋下一颗地雷:红炮平到一侧象所在的纵线,隔着卒把象吃掉。

有毒的补士楚 河 漢 界
红方猜中了士还留在原位的那一翼。炮沿底线隔着这枚士开火,标记的出逃点同样挨这记炮,而支上去的那枚士又恰好堵住了唯一的解法。经引擎穷举,41 种合法应着全部败北。红方猜向另一翼时,黑方只损失一个象。

有一手解救:立刻把有毒一翼的象飞上中路,两个吃象点就同时失效。但这本该是你开局的第一步。补士花掉整整一步,却只做了飞象工作的一小部分,而在你补救的同时,红方白吃一个边线的车。

一步飞象守住一切

真正管用的,是象棋里最标准的出子着法:飞中象。

一步守三线楚 河 漢 界
中路多了第二个炮架,狙击宣告失效(图中打叉处);两个象位原点都有回吃保护。

狙击废了,两翼的象都有保护,只用一步。象棋理论比迷雾早几百年就走到了这个点上。把炮走到同一个点同样管用。

赌车

剩下的是两条边线:炮从河沿的边角隔着边卒打车,而中象对此无能为力。

这件事由行棋次序决定。擒将最早也要等到红方第三步,所以黑方第二步飞象还来得及。边线却等不起:红方第二步就要选定边角,之后再推的卒已经迟了。所以先挺卒,再飞象。推上去的卒正好盯住炮必须开火的那个点,炮一落地就被吃掉。

先挺卒楚 河 漢 界挺卒已迟楚 河 漢 界
同一步挺卒,只差一个回合。先走,卒盯住落点,炮一落地就死。后走,炮直接隔着它把车打掉:推过的卒照样只算一个炮架。

于是只剩一场堂堂正正的赌局。红方第二步盲选一个边角:一半概率选中被盯住的那边,用炮换一个卒;另一半概率赢下一个车。交给引擎跑完后续,两条分支大致相抵。每盘只有一次公平的掷硬币,而且红方必须立刻下注:只要多给黑方一步,两条边线就都关上了。

炮死之后

掷硬币的一半结果里,红炮死在卒的手上。红方回吃这个卒(引擎在每一盘推演里都这么走了),而这步回吃是份大礼:它自己成了炮架,黑炮隔着它一炮打穿角上的车。引擎给红方打出 -0.55:攻势结束,净亏一炮,一无所获。

回吃是份大礼楚 河 漢 界
红方在 a5 回吃之后,黑炮平到边线,隔着红方自己的兵开火。Misty 在每一盘推演里都找到了这个后续。

红方挡得住这一炮吗?有两条路,都不痛快。不回吃可以在这条线上留住两个炮架,可过河的黑卒会继续一路吃过去,一步之后炮线重新打开,红方还多丢一个兵。回吃之后再跳马垫线,车是保住了。在从绊索触发开始的六盘引擎推演里,整套流程自动上演,吃、回吃、反击炮一样不缺,黑方拿下了其中五盘(配套研究里的 Tripwire 系列对局)。垫挡是这样的:

车丢之后

另一半结果里,黑方净亏一个车。引擎给局面打分从 -1(必败)到 +1(必胜);它给这个局面打 -0.75,大约是八盘赢一盘。接近输定,但还没完。而且落在角上的炮看着比实际吓人:它能吃的每一子,吃完都会立刻被回吃。它真正的威力是冻结:旁边的马和象正把底线关得死死的,两者只要有一个动了,下一炮打的就是将。

冻结楚 河 漢 界
炮能吃的两个点(左侧箭头)都有回应:一个点由中象回吃,另一个点由将亲自回吃。但马和象现在就是底线的炮架。动其中任何一个,炮就擒将。让它们待在家里。

那黑方怎么打?引擎给出了三条思路。第一,耐心:底线上什么都不碰。第二,立刻简化:在我们最初的推演里,它从这个局面走的第一步,每一盘都是用自己的炮隔着红方还在原位的炮,把红方原位的马狙掉,以炮换马,钝化攻势。第三,在另一翼反击,你自己的炮在那边还有戏;下一节会展示最锋利的版本。而且这局面逃得出去:十盘强制抓车的对局里,黑方直接赢下两盘(配套研究里的 Rim gambit 第 2、第 8 局,分别用了 84 着和 56 着),另有三盘撑到了着数上限。八分之一的胜率是评估值;在分出胜负的对局里,实战是四分之一。

谁先挪墙谁先死

有一个模式在每条分支里都决定过胜负,而且它适用于任何带远程棋子的迷雾棋:站在开火点上的炮,同时也是挡住对面敌炮的墙。谁先离开,对方就从缺口里开火。而迷雾偏偏会引诱你离开:站在墙上望过去,敌方的卒像是白送的。吃了它,下一着你就被擒将。

这也回答了一个合理的问题:黑方为什么不自己也去河沿?可以去,而且它能惩罚任何伸手抓子的红方。红方只有一条稳妥的应法:先封住自己的中路,再碰任何东西。这样一来,这门反架炮永远开不了火。

冻结的反架炮楚 河 漢 界
变化如下:红炮上河沿,黑方用自己的反架炮回应,红方在抓子之前先飞相封中。这门反架炮与红帅之间现在隔着两个炮架(打叉处),被冻结在原地;它一动,红炮就开火。引擎认为红方在此领先四分之一个点(+0.25,对比挺卒主线的 0.00),并把炮转向两条边线(箭头处)。这是对付贪心对手的武器,不是默认选择。

引擎怎么说

我把速攻强制摆上棋盘,让 Misty 执双方下了三十盘:二十盘走狙击尝试,十盘走抓车。狙击一次也没有打响;二十盘里有十八盘,黑方三步之内就完成了封堵。速攻组的战绩是黑方 9 胜、红方 4 胜、7 盘达到着数上限;强制抓车组是红方 5 胜、黑方 2 胜、3 盘到上限。然后我让黑方用本文教的这条线应对同样的强制速攻,又下了八盘:黑方赢了六盘,没有和棋。这条线不只是适合人类;它拿下的分数比引擎自己选的防守还多。下面是其中一盘的完整棋谱:

本文背后的所有对局都收录在配套研究里:理论变化、二十盘强制速攻与十盘强制边线抓车的引擎对局,以及十六盘自由自对弈。把研究棋盘切到黑方的迷雾视角,一步步看他当时究竟看见了什么。

完全放开让它自由选择,再下十六盘,十二盘分出胜负的对局里红方赢了十一盘,而且一次也没有走过速攻。样本不大,这些计数只当方向看。局面评估值则站得更稳:算力加到十六倍,数值纹丝不动。

局面引擎判定
开局局面,红方走子+0.06 红优:真实但很小的先手优势
理论定型:封堵完成,速攻炮停在 e50.00:完全均势,速攻被彻底化解
红方赌赢了车黑方 -0.75:接近输定,仍有抵抗
红方赌输了炮红方 -0.55:明显败势
反架炮对先封中的红方+0.25 红优:反架炮比挺卒主线让出更多

最后一项检验:我强制黑方按本文教的线走,对手是自由行棋的红方,共八盘。七盘分出胜负的对局黑方赢了五盘,而自由选择时是十二盘里赢一盘。这三步保险着法毫无代价。

把赌局的两条分支取平均,孤注一掷的速攻对红方约值 +0.10,和开局自带的 +0.06 属于同一量级:整份先手优势,在一场赌局里一次花光。迷雾中的主动权是真实的,多半比国际象棋里还大,因为防守是闭着眼睛付账的。速攻是花掉主动权最响亮的方式,而最响亮的方式是有解的。

该学的那条线

三步答案楚 河 漢 界
黑方的三步:挺边卒、飞中象、跳远端马。圆点是被盯住的开火点,叉是已失效的狙击,箭头是中象的保护范围。

执黑:挺边卒,飞中象,马跳向另一侧边线。三步之后,剩下的唯一目标就是你没推卒那一侧的车,而且只有红方第二步就下注时才吃得到。永远不要用士封中。在挪动落地炮附近的任何棋子之前,先数炮架:我们找到的大多数败局,都来自挪动了一枚正默默封着某条火线的棋子。

执红:速攻能赢下所有没读到这里的人,对读过的人则是对半开的赌注。如果你要走它,第二步就选定边线,否则干脆别选,并且在兑现任何抓取之前先封住自己的中路:脚本里每一个先抓子的红方都被擒了将。

亲手走一遍

本文的每条变化、每盘对局都在配套研究里,棋盘可以切换到任何一方的迷雾视角。准备好之后,Misty 会在你练这条线的时候好好教训你。无需账户。

打开配套研究对战电脑