计算机系统应用教程网站

网站首页 > 技术文章 正文

python alpha-beta剪枝算法六子棋

btikc 2024-11-13 09:40:59 技术文章 3 ℃ 0 评论

大家好,我叫超伟。这期视频继续介绍用python实践alphabet六字旗简知博弈的算法。之前是用夕颜实现的,无法满足广大朋友的需求,所以这边有时间的拍摄。这边先夜景看一下。

python时间跟夕颜时间有什么不同?因为python的运行速度比夕颜要慢。阿尔法贝塔简直算法便利次数达到了惊人的几十万次。收纳会造成什么?延长几十秒的情况。如果便利是几次?排损运行跟夕颜运行是没有什么区别的,但是达到了比较次数几十万次的情况。

能为了解决这个问题给排损代码加入现场处理。正常情况是怎么样的?脚这边有个什么边的点?怎么判断位置玩家是否赢了?有四个方向,这边这个方向还有什么?还往这边便利。只要这几个方向出现连续六个棋子连在一起,那么就赢了。

这个方向没有,跟这个方向是对立的,本质来说都是一样的。所以只要考虑这四个方向是为了解决运行速度慢的问题,给这四个方向只要现场处理,只有任何一个方向赢了,其他三个方向就不需要再便利的直接停进程。

代码可以这边看一下,这边定制了什么?定义四个县城,执行四个方向的边例,同时执行下面就对它进行阻塞。这边会阻塞,直到所有的运行完成之后才不会阻塞。所以还需要为这四个线程来定义共享的变量,也就是这个变量。

这个变量本质上是一把锁,只要其中一个方向找到连续六个棋子连在一起,就对它进行上锁。上完锁之后期待进程会判断,如果锁已经被上掉了,说明这四个方向是存在任何一个方向是可以连成六个棋子的,最终标记为三。

其他县城如果发现锁已经被上掉了就不会便利了,因为已经找到其他方向存在连成六个棋子的情况,这些方向就没必要再便利了,所以这部分代码不会执行。

下面如果找到指定的现场id,说明已经找到了方向有六个棋子连在一起的情况,说明锁就已经被删掉了,所以还需要再对锁进行清除的操作。主要代码还是阿尔法贝塔定制,这边先应景看一下。黑色是玩家下的,白色是电脑下的。在控制台这边会输入输执行的时间,执行的时间实际就是电脑的思考时间被堵住了。

还挺聪明的,这边要连成六个棋子,再下一个就已经输掉了,这边刚好连变成六个棋子,这个是电脑下的,输了中的头一个弹窗,这边显示电脑赢了。大致是这种情况的,

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表