日々是栄和

麻雀 Column - 5 - 面子認識アルゴリズム

最終更新:

匿名ユーザー

- view
管理者のみ編集可

Column - 5 -

 
 【 面子の認識アルゴリズム 】を検討してみる。
 人間には経験による直感と呼ばれる機能があり、繰り返し習熟することにより脳のシナプスが太くなり、
 その習熟したスキルに関して計算や認識確認をへることなく解を見つけ出す能力である。
 麻雀における面子認識にはこの脳の機能が多用される。
 
 しかし、アルゴリズムは存在するはずで、コンピュータによる雀士を作成するとなればこのアルゴリズムに添った
 形で面子認識を行い、必要な牌と不要な牌を見分けることになる。
 
 ではどのようにして面子・塔子は認識されているのであろうか。
 
 まずは仮説を立ててみる。
 
 
 ○ 面子認識
 
 手の内に複数に渡る数牌が存在した場合、その認識過程を探ってみよう。
 これにはある数牌のモデルを作成し、認識出来得るパターンにわけてみよう。
 
 ● 定義 
 1枚モデル ・・・ 数牌 1枚のみで構成される面子候補
 2枚モデル ・・・ 数牌 2枚で構成される面子候補
 3枚モデル ・・・ 数牌 3枚で構成される面子またはその有効的な候補
 
 とする。
 面子認識を扱うので、4枚モデル以上は存在しない。そういった場合は1~3の下部モデルに分割する。
 
 例えば 3456s であれば
 
 345s + 6s  【 3 + 1 】
 34s + 56s  【 2 + 2 】
 3s + 456s  【 1 + 3 】
 
 というように、3通りの下部モデルに分割される。実際には
 
 3s + 4s + 56s  【 1 + 1 + 2 】
 3s + 45s + 6s  【 1 + 2 + 1 】
 34s + 5s + 6s  【 2 + 1 + 1 】
 3s + 4s + 5s + 6s  【 1 + 1 + 1 + 1 】
 
 があるので、
 
 ● 連続した1と2が3になるかどうか、もしくは1と1が2となるかどうか
 
 という判断が必要になる。
 特に後者の 『 1と1が2となるかどうか 』 が塔子の判断になる。
 
 では、各1~3モデルにはどのような種類があるのか。
 1枚モデルは単独浮き牌となるので、2枚モデルから考察する。
 
 ○ 2枚モデル
 
 ①①   対子
 ①②   辺塔
 ①③   嵌塔A
 ①④   筋牌
 ①⑤   両嵌渡り
 ①⑥   単独浮き牌 以下、⑦~⑨も同じとみなす
 
 ②②   対子
 ②③   両塔
 ②④   嵌塔A
 ②⑤   筋牌
 ②⑥   両嵌渡り
 ②⑦   単独浮き牌 以下、⑧~⑨も同じとみなす
 
 ③③   対子
 ③④   両塔
 ③⑤   嵌塔B
 ③⑥   筋牌
 ③⑦   両嵌渡り
 ③⑧   単独浮き牌 以下、⑨も同じとみなす
 
 ④④   対子
 ④⑤   両塔
 ④⑥   嵌塔B
 ④⑦   筋牌
 ④⑧   両嵌渡り
 ④⑨   単独浮き牌
 
 ⑤⑤   対子
 ⑤⑥   両塔
 ⑤⑦   嵌塔B
 ⑤⑧   筋牌
 ⑤⑨   両嵌渡り
 
 ⑥⑥   対子
 ⑥⑦   両塔
 ⑥⑧   嵌塔A
 ⑥⑨   筋牌
 
 ⑦⑦   対子
 ⑦⑧   両塔
 ⑦⑨   嵌塔A
 
 ⑧⑧   対子
 ⑧⑨   辺塔
 
 ⑨⑨   対子
 
 以上の45通り。
 
 うち、相関関係のない組み合わせ(単独浮き牌同士)が10通り。
 マイナスの相関関係である筋牌が6通り。
 これらを引くと有効な組み合わせは29通りとなる。
 
 よって、任意の2枚の牌が有効である確率は約65%。
 最高に有効な組み合わせは両塔であるとすれば、その数は6通りで13%ほど。
 
 
 2枚モデルの認識アルゴリズムは以下のようになる。
 
 
 数牌 = x1 、 x2 (不定)
 2枚モデル = S(x1) 、 S(x2) において S(x1) ≦ S(x2) とした場合、
 
 S(x1) + S(x2) で
 
 x1 = x2 なら 対子
 x1 = 1 かつ x1 + 1 = x2 なら 辺塔
 x1 + 2 = x2 なら 嵌塔
 x1 ≠ 1 かつ x2 ≠ 9 かつ x1 + 1 = x2 なら 両塔
 x1 + 3 = x2 なら 筋牌
 x1 + 4 = x2 なら 両嵌渡り
 
 となり、それ以外の関係は単独浮き牌となる。
 
 
 次に最も複雑な3枚モデルを検証してみる。
 
 ○ 3枚モデル
 
 ① : 45 通り
 ② : 36 通り
 ③ : 28 通り
 ④ : 21 通り
 ⑤ : 15 通り
 ⑥ : 10 通り
 ⑦ :  6 通り
 ⑧ :  3 通り
 ⑨ :  1 通り
 
 計 165通り 
 
 となる。
 
 想定される有効モデルの方から考察すると、
 
 ①①①
 ①①②
 ①①③
 ①②②
 ①②③
 ①③③
 ①③⑤
 
 3枚モデルから近似有効モデルを取り出して【3】→【2+1】の方が効果的かも。
 
 一枚目を P 、 二枚目を Q 、 三枚目を R
 ただし理牌してあるとして P≦Q≦R とする。
 各数牌を x  1≦x≦9 とすると、
 
 P(x)のとき Q(x,x+1,x+2) R(x,x+1,x+2) で有効 かつ
 P(x) Q(x+2) R(x+4) も有効
 
 となる。このとき
 
 P(x) Q(x)  R(x)  もしくは
 P(x) Q(x+1) R(x+2) であればそれは面子モデルとなる。
 
 ②②②
 ②②③
 ②②④
 ②③③
 ②③④
 ②④④
 ②④⑥
 
 考え方は①のモデルでも②のモデルでもそれほど変わらない。
 とすると、
 
 ③③③
 ③③④
 ③③⑤
 ③④④
 ③④⑤
 ③⑤⑤
 ③⑤⑦
 
 ④④④
 ④④⑤
 ④④⑥
 ④⑤⑤
 ④⑤⑥
 ④⑥⑥
 ④⑥⑧
 
 ⑤⑤⑤
 ⑤⑤⑥
 ⑤⑤⑦
 ⑤⑥⑥
 ⑤⑥⑦
 ⑤⑦⑦
 ⑤⑦⑨
 
 ⑥⑥⑥
 ⑥⑥⑦
 ⑥⑥⑧
 ⑥⑦⑦
 ⑥⑦⑧
 ⑥⑧⑧
 
 ⑦⑦⑦
 ⑦⑦⑧
 ⑦⑦⑨
 ⑦⑧⑧
 ⑦⑧⑨
 ⑦⑨⑨
 
 ⑧⑧⑧
 ⑧⑧⑨
 ⑧⑨⑨
 
 ⑨⑨⑨
 
 以上、51通りになる。
 このうち面子モデルは、順子 7通り、刻子 9通りで計16通り。
 それらを引くと3枚有効モデルは35通りになる。
 
 ○ 近似有効モデル
 
 定義 : 一枚切れば2枚有効モデルとなり、3枚モデルに含まれないもの
 
 ①①④
 ①①⑤
 ①①⑥
 ①①⑦
 ①①⑧
 ①①⑨ 対子+浮き牌P,Q,RでRを切る
 ①②④ P切り
 ①②⑤
 ①②⑥
 ①②⑦
 ①②⑧
 ①②⑨ 辺塔+浮き牌
 ①③④ P切り
 ①③⑥ 嵌塔+浮き牌
 ①③⑦
 ①③⑧
 ①③⑨
 ①④④ 以下P切り
 ①④⑤
 ①④⑥
 ①⑤⑤
 ①⑤⑥
 ①⑤⑦
 ①⑥⑥
 ①⑥⑦
 ①⑥⑧
 ①⑦⑦
 ①⑦⑧
 ①⑦⑨
 ①⑧⑧
 ①⑧⑨
 ①⑨⑨
 
 以上、32通り。
 
 近似有効モデルにおいては、有効な2枚モデルを包含することになる。
 よって、3枚モデルから2枚モデルへの分割の必要がある。
 
 まず、
 
 P(x) で Q(x)のとき、
 R(x+3~)のときはモデルを【2+1】にする。
 
 Q(x+1)のとき、
 R(x+3)のときはモデルを【1+2】にし、
 R(x+4~)のときはモデルを【2+1】にする。
 
 Q(x+2)のとき、
 R(x+3)のときはモデルを【1+2】にし、
 R(x+5~)のときはモデルを【2+1】にする。
 
 Q(x+3~)のとき、
 すべてのモデルを【1+2】とする。
 
 ただし②以降は【1+2】と【2+1】の両方が成り立つ場合がある。
 その場合は2つの2枚モデルを比較して、良い方を残す。
 
 というようになる。近似有効モデルと認識された数牌群はその有効性を2枚モデルに譲り、
 一枚切るか、残すかの判断が必要になる。
 これは単独浮き牌の判断基準になるので別途考察する必要がある。
 
 ②以下の近似有効モデルを列挙してみよう。
 
 ②②⑤
 ②②⑥
 ②②⑦
 ②②⑧
 ②②⑨
 ②③⑤ ②③ と ③⑤ を比較し、②③ を残す
 ②③⑥
 ②③⑦
 ②③⑧
 ②③⑨
 ②④⑤ ②④ と ④⑤ を比較し、④⑤ を残す
 ②④⑦
 ②④⑧
 ②④⑨
 ②⑤⑤
 ②⑤⑥
 ②⑤⑦
 ②⑥⑥
 ②⑥⑦
 ②⑥⑧
 ②⑦⑦
 ②⑦⑧
 ②⑦⑨
 ②⑧⑧
 ②⑧⑨
 ②⑨⑨
 
 以上、26通り。
 
 同じようにして、
 
 ③③⑥
 ③③⑦
 ③③⑧
 ③③⑨
 ③④⑥
 ③④⑦
 ③④⑧
 ③④⑨
 ③⑤⑥
 ③⑤⑧
 ③⑤⑨
 ③⑥⑥
 ③⑥⑦
 ③⑥⑧
 ③⑦⑦
 ③⑦⑧
 ③⑦⑨
 ③⑧⑧
 ③⑧⑨
 ③⑨⑨ 計20通り
 
 ④④⑦
 ④④⑧
 ④④⑨
 ④⑤⑦
 ④⑤⑧
 ④⑤⑨
 ④⑥⑦
 ④⑥⑨
 ④⑦⑦
 ④⑦⑧
 ④⑦⑨
 ④⑧⑧
 ④⑧⑨
 ④⑨⑨ 計14通り
 
 ⑤⑤⑧
 ⑤⑤⑨
 ⑤⑥⑧
 ⑤⑥⑨
 ⑤⑦⑧
 ⑤⑧⑧
 ⑤⑧⑨
 ⑤⑨⑨ 計8通り
 
 ⑥⑥⑨
 ⑥⑦⑨
 ⑥⑧⑨
 ⑥⑨⑨ 計4通り
 
 よって近似有効モデルの総数は104通りとなる。
 
 残りはすべてが単独浮き牌となってしまう非有効モデルである。
 すべてを列挙すると、
 
 ①④⑦
 ①④⑧
 ①④⑨
 ①⑤⑧
 ①⑤⑨
 ①⑥⑨
 
 であり、
 
 ①④⑧
 ①⑤⑧
 ①⑤⑨
 
 は両嵌渡りとすると、実質3通りしかない。
 
 以下、
 
 ②⑤⑧
 ②⑤⑨
 ②⑥⑨
 
 ③⑥⑨
 
 の計10通りしかない。両嵌渡りを勘案すると5通りである。
 
 よって、配牌で任意の数牌が3枚存在したときに、まったく塔子や面子候補にならない確率は、
 同じく配牌で面子(順子・刻子)が存在する確率よりも低いことになる。
 配牌で一つの色が3枚しかないときに、面子が出来上がっていれば『 良い配牌だな 』と認識
 することは容易だが、その逆はなかなかに難しい。
 
 問題は下部モデルへの分割のアルゴリズムであろう。
 前述した 3456s のモデルでは、
 
 34s + 56s
 
 という分割が有効であると人間は簡単に認識できるし、状況に応じて下記の選択が可能である。
 
 ● 3s もしくは 6s 切り → 面子確定
 ● 3456s のまま ノベタン待ち
 ● 33456s もしくは 34566s 面子 + 雀頭
 
 また、この下部モデルへの分割では多面待ち 23456s を解析することができない。
 
 【 3 + 2 】 や 【 3 + 1 】 (暗刻くっつきなど)の新たな待ちの変化を重みづけ
 する必要がある。
 
 多面待ちを考慮しない下部モデル分割を【 単純分割 】、考慮する下部モデル分割を【 複雑分割 】
 と定義し、各々をアルゴリズム化すると良いかもしれない。
 
 それらについては今後の課題としよう。


Back  Top  Menu  Next

記事メニュー
目安箱バナー