« 牌譜データ提供のお願い | トップページ | 鳴き仕掛けに対して降りるべきと判断したケース »

2007/03/23

2chのスレ


おまいら最強の麻雀プログラムしてみろよ

ときどき、似たようなスレがたちますがあっさり消えていってしまいます。
今回はぜひがんばってもらいたいと思います。

ところで、このスレの中で、リバーシ1って人が提唱しているやりかたについて……
===============================================
35 :リバーシ1:2007/03/15(木) 13:56:42
最強の麻雀アルゴリズムができた
まず14枚をランダムで配る そして何を捨てるのがいいか調べるアルゴリズム


もし、役が出来ていたらbreakする
残りごまの中から、一枚ランダムに加えて、どれか一枚を捨てたら
役が出来るなら、その駒が選ばれたとカウントする(もっとも得点が高くなる駒を選ぶ)

役が出来ていないならば、もう一枚加えて、どれか二枚を捨てたら
役が出来るなら、その駒が選ばれたと0.5ずつカウントする
終局までに、どんな役も揃わなかったら、カウントしない

これを1万回くらい繰り返すと、役が揃いやすい捨て駒にカウントが集まる
敵からのリーチ、一発があるときは、手を変える事もあるがあとで
ぽん、かん、ちーが出来るときは、するかどうか、1万回くらい試行して決める
============================

これは、いわゆる、モンテカルロ法というやり方だとおもいます。

最近囲碁の世界で、このやり方が脚光を浴びているようです。
参考URL
http://www32.ocn.ne.jp/~yss/monte.html
http://www.itmedia.co.jp/news/articles/0702/22/news054.html

このような方法は麻雀にも活用できるでしょうか?

まず、結論から言うと現時点では相当に困難だと思います。
なぜなら、オセロ、囲碁が陣取り合戦のゲームであり、チェスや将棋が殺戮破壊のゲームであるのに対して、麻雀は創造のゲームだからです。(さらに思考時間が2,3秒しか許されていないという問題もあります。)

リバーシや囲碁の場合、ルールで許されている場所に適当に石を置いていけば、どんなにでたらめに打っていてもそのうち石を置ける場所がなくなるのでとりあえず勝敗は付きます。
しかし、麻雀は混沌とした状態から秩序を創造していくゲームです。デラタメに打っていたらエントロピーは減少せず、天和レベルの確率でしか上がれません。

1万回程度の試行回数では当然1回もあがれません。
試行回数を増やそうとすると今度は制限時間が問題になってきます。

なので、でたらめにツモと打牌を繰り返すやり方ではどうしてもよい結果は出せません。
なんらかの工夫が必要となります。

ひとつの方法として、打牌をせず、ツモだけランダムに追加していき、先に和了形を抜きだしてから不要牌に点数をつけるという案が考えられます。
しかし、これも、私はすでに試しましたが、とてもではないが計算が追いつきません.
また、計算時間を無視したとしても、単騎待ち、面子オーバー形、面子候補が足りない場合に誤差が大きすぎてしまい。私が現状使っているやり方よりも牌効率が悪くなってしまいます。

これらの欠点を解消する何らかの方法があるのであるとすると、結構面白いことにつかえそうではあるのですが、今のところよい手立ては私には思いつきません。


|

« 牌譜データ提供のお願い | トップページ | 鳴き仕掛けに対して降りるべきと判断したケース »

コメント

はじめまして。興味深いブログでしょっちゅう読ませていただいております。

モンテカルロ法でリアルタイムに麻雀を解析するのは、現状のコンピュータの速度では実用的ではないでしょうね。ハードウェアの進歩に期待です。

しかし、かなり複雑な問題にも応用できますので、たとえば他家の牌も試行ごとにランダム生成するなどして、全局を見渡した判断を行えるようになったりする可能性があります。

あるいは、試行時の手の選択を完全なランダムではなく、たとえば「まったり麻雀」の評価関数の上位の手からランダムで選択するなど、枝刈りを行えば試行回数を減らしても精度が出るかも知れませんね。あまり普段と変わらなくなりそうですが。

投稿: esper | 2007/03/28 09:47

>しかし、かなり複雑な問題にも応用できますので、たとえば他家の牌も試行ごとにランダム生成するなどして、全局を見渡した判断を行えるようになったりする可能性があります。

これは、面白そうですね。


>あるいは、試行時の手の選択を完全なランダムではなく、たとえば「まったり麻雀」の評価関数の上位の手からランダムで選択するなど、枝刈りを行えば試行回数を減らしても精度が出るかも知れませんね。あまり普段と変わらなくなりそうですが。

これは、ダメだろうとおもいます。それならば、まじめに期待値計算したほうが正確で時間がかからないでしょう。

現行のアルゴリズムでは枝狩り対象になってしまい前提すら上がってこない手順の中に隠れている妙手を、モンテカルロ法で見つけることが可能ならば、モンテカルロを使う意義がありそうです。
ただ、今まで自分で実験したり、WEBで調べている感じでは、1つの妙手を打つ前に数千数万の疑問手を重ねそうな気がします。

投稿: kmo2 | 2007/03/29 00:45

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: 2chのスレ:

« 牌譜データ提供のお願い | トップページ | 鳴き仕掛けに対して降りるべきと判断したケース »