← 课程主页

广东普通麻将进阶 · 第 4 课 · 当前已制作第 1~5 课/全课程 39 课

区分有效牌与改良牌

一向听时,"摸什么有帮助"其实有两种帮助:现在就把你送进听牌,或者把下一步的入口拓宽。分不清这两种,就会把好牌当废牌打。

"有用的牌"不是一种牌

你完成舍牌,手里 13 张,等下一次摸牌:

这是一副一向听。摸三条、五条显然有用——但你可能也隐约觉得摸七万"也不错"。这个直觉值不值得留?值多少?这一课把"有用"拆成两类可计算的牌,从此不用靠隐约。

一句话结论:有效牌让当前向听数立即下降;改良牌不降向听,但在最佳舍牌后,让下一步有效牌的种数增加——或者种数相同时,未见实体张数增加。分类不靠牌感,靠一个"模拟摸牌"的反事实测试。

术语:三个名字,一个测试

有效牌
对当前 13 张手牌,模拟摸入牌 t。若此时已经和牌,就直接从 0 向听进入 -1 并停止,不再舍牌;若尚未和牌,才允许完成一次合法舍牌。最终最优状态的向听数小于当前向听数,t 就是有效牌。本课程也把有效牌叫"直接有效牌",强调现在就降向听。
改良牌
摸入后没有降低当前向听数,但最佳舍牌后,下一步有效牌种数增加,或种数相同时未见实体张数增加。这里的"种数优先、同种数再比未见张数"是本课程采用的可执行比较口径,不是所有麻将资料唯一通用的定义;换一套资料可能用别的权重,但本课统一按这条规则判定,方便你手工执行。
无效牌 与 进张
既不降向听、也不达到改良标准的牌是无效牌——它不表示在牌值或对手信息下永远无用,只是本课口径下两次测试都没通过。进张则是一个更宽的过程词:摸入或碰入后让牌形发生推进。本课是无副露摸牌题,算法只枚举自摸。

分类测试:一条可以手工执行的链

  1. 对 13 张手牌 H,先算当前向听数 s(H)。
  2. 对 34 种牌逐一模拟摸入;自己已有 4 张的牌不能再摸。
  3. 若摸入后已经和牌,直接记为 -1 并停止;只有尚未和牌时,才枚举合法舍牌,得到最佳后继 13 张。
  4. 和牌,或最佳后继向听小于 s(H):这张是有效牌
  5. 最小向听仍等于 s(H):再比较后继牌形与原牌形的下一步有效牌种数和未见张数,变宽才是改良牌
  6. 同一张摸牌只按牌种计一次——哪怕它能参与两种拆法,也只是一种摸牌事件。

这正是 PyMahjongGB 标记有效牌的做法:穷举 34 种摸牌、重算向听。术语"有效牌=减少向听数、改良牌=增加有效牌"也来自同一实现。tile.hshanten.cpp

例题:同一副一向听,两类牌各归各位

牌例条件:13 张 123m 77m 1246s 456p 1z;已完成舍牌,等待下一次自摸;目标为基本和牌型;向听口径为和牌 -1、听牌 0;有效牌按本课"摸入后允许最佳舍牌、向听立即下降"的定义;除自己手牌外没有公开牌。

机械枚举结果:当前 1 向听。两条路径的对照如下——实线下行箭头是"降向听",横向箭头是"同层拓宽":

路径一 · 摸三条(或五条)→ 有效牌
现在:1 向听,下一步入口 2 种(三条、五条)
↓ 摸三条,舍东
0 向听:进入听牌,等五条
↓ 再摸五条
-1:和牌
路径二 · 摸七万 → 改良牌
现在:1 向听,下一步入口 2 种 8 张
→ 摸七万,舍东(仍是 1 向听,没降)
还是 1 向听,但下一步入口变为 6 种 20 张:一、二、三、四、五、六条

图例:绿色下行=向听下降一级;蓝色横向=向听不变、下一步入口拓宽。

把路径二摊开看:摸七万后舍东,手牌变成 123m 777m 1246s 456p。它离听牌仍差一次推进,所以七万不是有效牌;但下一次摸牌时,一、二、三、四、五、六条六种牌都能通过重新拆牌把它送进听牌。种数从 2 变 6。张数不是 6×4=24:手里的 1246s 已经占掉一、二、四、六条各 1 张,扣掉后理论未见是 20 张(这种"扣自己持有"的记账,第 5 课专门讲)。种数和张数都变宽,所以七万是改良牌。一、二、四、六条等也能形成不同程度的改良,本课不必罗列全部,重点是你会执行这个分类测试。

这个方法不能推出什么

第一,有效牌按整手牌的最小向听变化定义。"这张牌和我手里某张搭上了"不算数——补好一个局部块但整手向听没降,最多算改良,牌块过载时甚至什么都不算。第二,"改良更多"不等于"和牌率必然更高":真实和牌率还取决于可见牌、牌山供给、剩余摸牌次数和对手速度,这些分别在第 5 课和概率主干课程处理。第三,13 张摸成 14 张且尚未和牌时,必须允许一次合法舍牌再比较最佳后继;如果已经自摸和牌,动作就在 -1 结束,不能再强制舍牌。

练习:先作答,再看反馈

练习 1 · 沿用例题手牌 123m 77m 1246s 456p 1z。摸七万、舍东后仍是 1 向听,但下一步有效牌从 2 种 8 张变为 6 种 20 张。七万属于?

对。两道测试分开走:向听立即下降吗?没有——排除有效牌。最佳舍牌后下一步有效牌变宽吗?从 2 种 8 张到 6 种 20 张——通过改良测试。不改向听不等于没用。
用定义过一遍:七万没让向听立即下降,所以不是有效牌;但最佳舍牌后下一步有效牌从 2 种扩到 6 种,达到改良标准,所以也不是无效牌。"和牌可能变大"不是有效牌的定义——定义只看向听是否立即下降。

练习 2 · 一张牌补好了手里某个局部搭子,但整手牌向听数没有下降。它一定是有效牌吗?

对。有效牌的定义是整手牌最小向听下降。局部搭好而整手没降时,它可能是改良牌,也可能因牌块过载连改良都不是——要跑完两道测试才知道。
两个极端都不对。"搭好就是推进"把局部当成了整手;但"一律不算"也错——很多有效牌正是靠补好关键搭子让整手向听下降的。判据只有一个:整手牌的最小向听是否下降。

🧠 背诵区 · 记住这 3 件事

点卡片翻面。记的是能用的判断口径,不是死记定义。

⏳ 间隔复习:明天、3 天后各翻一次;与前几课的卡混在一起抽。

🗣 复述区 · 讲给别人听

能讲清楚,才是真懂。

讲不顺的地方,就是还没真懂的地方 — 发给我,我帮你补上。

📌 推荐主源

Li 与 Yan《Let's Play Mahjong!》↗ 把候选舍牌按"最少换牌距离+有限步完成概率"比较,说明为什么不能只看一步距离。注意论文用 108 张数牌简化规则,不直接给本课数字;术语与枚举口径以 PyMahjongGB 为准。