我们玩麻将并不是为了争名夺利棋牌游戏技巧,并不是为了金钱,而只是为了给平淡的生活之中增添一丝快乐的色彩。更多的福建麻将规则,等待您来更好的发觉。因此,我们只要是平心气和玩麻将游戏,并且与其他的游戏玩家开一些玩笑,如此才是能够交到更多的朋友棋牌游戏技巧,而且与朋友们一起相互嘻戏,玩耍,这样才是能够感受到生活之中的一种浪漫。
14
2022
03
麻将程序对和牌判断的逻辑是什么有比「暴力搜索」更先进的算法么
发布日期:2022-03-14 00:32 点击次数:91
先进算法当然有啊,http://hp.vector.co.jp/authors/VA046927/mjscore/mjalgorism.html有详细的介绍,思路非常屌爆。大体意思如下(以下掺杂我的个人理解,可能有解释错误之处。会日语的读者请尽量阅读链接原文):暴力拆解比较吃计算,查表法比较吃内存,虽然这两者对于当今的PC都不是问题,但如果平台机能特别有限,可以采用改进的查表法。基础的查表法,是给每种牌编一个id,麻将中共34种牌因此需要至少6位空间。手牌14张也就是84位。要保存和牌的全部组合约1700万种需要约175MB存储。改进的思路是先给手牌排序,然后不管具体牌面,只计算连续牌的张数,得到一个「牌型」,再从表中查牌型是否胡。例如222456万345678饼北北,可以编码为30111011111102(三张相同牌,三张连续牌,六张连续牌,两张相同牌,中间隔开)。下一步是将其二进制化,采用如下特制规则:1→02→1103→111104→111111010→1020→111030→11111040→11111110很容易看出,这样编码后每张牌只占用1到2位空间,最恶情况子下(十四张不连单牌)仅占用27位。跟之前的84位相比,单组数据压缩了三分之二以上。更牛逼的是,和牌表从1700万种具体组合下降到仅仅9362种形状排列!另外,作者反复强调:查表时需要大量整型比较运算,将数据控制在32位以内对于(2008年成文当时主流的)32位CPU本身也是优化(省操作次数)。结论上,根据作者测试,优化后的查表算法比暴力拆解快大约50倍,而且速度特别稳定。相对地,传统的拆解法碰上清一色这种同色牌多的牌型会变慢。还有一个是役的计算,分为事后判定(先检查是否和牌、再检查役种)和事前判定(检查和牌的同时检查役种)。文中的算法支持一部分役的事前判定。最后再贴一遍地址:http://hp.vector.co.jp/authors/VA046927/mjscore/mjalgorism.html。文末有全部源码(Java)。
- 上一篇:棋牌游戏技巧 我被楼下用震楼器震了怎么办
- 下一篇:真人棋牌游戏 你对父母有多失望
- 相关棋牌游戏技巧