Skip to content

配牌時向聴数

概要

すべての手牌について向聴数を計算しようとすると計算量が大きくなってしまう. 事前に数牌と字牌の向聴数を計算するためのパラメータについて集約し, 同じパラメータがいくつ存在するかをメモしておく. 手牌の枚数が予め決められた数になるようなすべてのパラメータの組み合わせを全探索する. このとき向聴数を計算しながら同じ向聴数となる手牌の数も計算することで計算量を小さくできる. また, 数牌の色どうしを入れ替えても向聴数は変わらない事実を利用することでさらに計算量を小さくできる.

ソースコード

shanten-dfs.cppを参照.

出力:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Shanten Count   Prop
-1      12859078207674  3.02545e-06
0       2966241795738948        0.000697889
1       99154452630748356       0.0233288
2       828714358375292670      0.194978
3       1867404976243926528     0.439358
4       1211948980271480832     0.285144
5       233501763289743360      0.0549376
6       6601397483077632        0.00155316
Number of Tiles: 14
Total: 4250305029168216000
Time (msec.): 6364
Avg Shanten: 3.15594

配牌時(手牌の枚数が 14 枚のとき)向聴数の平均値は3.15594である.