首页 > 编程语言 >人工智能五子棋游戏——(3)算法模块简介

人工智能五子棋游戏——(3)算法模块简介

时间:2023-02-19 16:12:52浏览次数:52  
标签:博弈 游戏 人工智能 简介 五子棋 搜索算法 算法 搜索 节点

 

游戏的运算能力是决定整个游戏性能和性能的关键因素。算法是软件的核心,所以当你自己的工作要做某些事情的时候,它就必须要有一个演算法。一个好的方法可以减少错误率,高效地完成对收到的资料的分析和处理,并且通过优化运算来加快运算的速度。算法的设计主要包括框架代码的设计和内层算法设计两部分。游戏的算法流程图如下所示

 

极大极小算法

Minmax算法是游戏树搜索算法的基础,最早于1950年提出。基于博弈树的搜索算法称为搜索,本质上是模拟两个棋手下棋,先自己走棋,再考虑对方走棋。这样循环下去,形成博弈树。极大极小值算法是在己方下棋时下棋最优,在对手下棋时下棋最不利。为清楚起见,将玩家的一侧放在 MAX 一侧,将敌人放在 MIN 一侧。

当你使用极大极小值算法在博弈树的每一层中搜索节点时,所有节点都被搜索到。这种搜索虽然很全面,但是随着搜索深度的加深,博弈树变得很大,算法的搜索效率大大降低。 Alpha-Beta剪枝算法就是用来解决这个问题的。

 

Alpha-Beta剪枝算法

在电脑游戏领域,主要研究的是一个知识完备的两人零和游戏,五子棋就是其中之一。在电脑游戏中,双方玩家的信息是完整的,他们根据情况和游戏规则相互影响,最终决定游戏过程的输赢。这样,博弈过程中所有可能的情况就形成了博弈树。接下来,要找到最佳运动,另一方方必须寻找博弈树。这对计算机来说并不难,但找到整个游戏树的时空成本是巨大的。因此,为了减少时空过剩,博弈树的展开深度通常是有限的,在深度有限的情况下,利用搜索算法对博弈树进行优化,减少不必要的搜索。

在人工智能五子棋中,搜索算法主要采用Alpha-Beta算法。 alpha-beta割算法是在极大极小值算法的基础上发展起来的。在搜索过程中,它从博弈树中去除了一些不必要的节点,减少了极大极小值算法的搜索冗余,并且对博弈树中每个节点的评估没有影响,提高了搜索速度。但是在使用Alpha-Beta剪枝法进行搜索时,由于搜索深度和播放时间的限制,该算法的游戏水平并不高。同时,其算法的效率与博弈树中检索到的平均节点数有很大的比值[5]。检索到的平均节点数越低,算法的效率就越高。然而,随着搜索深度的不断增加,搜索节点的数量会迅速增加。

局部搜索算法

使用alpha-beta剪枝算法,将参数 Alpha 和 Beta 确定为正无穷大和负无穷大,它们的值在递归过程中不断变化。随着搜索的进行,它们的有限区域不断缩小,区域外的节点越来越多,剪枝算法的效率也越来越高。执行过程设置为搜索区域。这将提高程序的搜索效率。

局部搜索就是这样一种算法。由于有一定的搜索限制,在这个限制范围内定义了切分区域来检索、处理和限定对局,这样能够大大提高整个棋局的速度和效率。简而言之,本地搜索是一种既容易又贪心的方法。在人工智能领域,本文提出了一种基于元启发性的求解方法。每次选择最优解作为当前解的相邻解空间的当前解,直到达到局部最优解。

 

 

标签:博弈,游戏,人工智能,简介,五子棋,搜索算法,算法,搜索,节点
From: https://www.cnblogs.com/yenaibo/p/17134909.html

相关文章

  • SQL简介
    SQL简介DB(Database)数据库,保存一组有组织的数据的容器;DBMS(DatabaseManagementSystem)数据库管理系统,又称为数据库软件,用于管理DB中的数据;SQL(StructuredQueryLanguage)......
  • MongoDB简介与应用场景、Docker安装Mongo、整合SpringBoot实现CRUD
    (目录)1MongoDB相关概念1.1业务应用场景传统的关系型数据库(如MySQL),在数据操作的“三高”需求以及应对Web2.0的网站需求面前,显得力不从心。解释:“三高”需求:•Hi......
  • 软件测试|教你使用Python实现五子棋游戏(一)
    前言五子棋是我们传统的益智游戏之一,老少皆宜,上手简单,对于锻炼逻辑思维,增强思考能力有很大帮助。那么,我们能不能使用Python来写出五子棋的程序呢,毕竟不是什么时候都有对手和......
  • 95、商城业务---消息队列---RabbitMQ简介
    其中点对点式指只能有一个发送者,但是可有有多个接收者并且只能由一个接收者可以获得消息JMS和AMQP是两大规范......
  • 94、商城业务---消息队列---MQ简介
    1、异步处理2、应用解耦3、流量控制......
  • 从0到1一步一步玩转openEuler--18 openEuler 管理服务-简介
    18管理服务简介systemd是在Linux下,与SysV和LSB初始化脚本兼容的系统和服务管理器。systemd使用socket和D-Bus来开启服务,提供基于守护进程的按需启动策略,支持快照和系统状......
  • 【Redis】Redis 数据库 安装、配置、访问 ( Redis 简介 | 下载 Redis 安装包 | 安装 R
    文章目录​​一、Redis数据库简介​​​​二、Redis数据库操作场景实例​​​​三、下载Redis安装包​​​​1、Windows安装包下载​​​​2、Linux安装包下载​​​......
  • 怎样才能给人工智能注入有趣的灵魂?
    以ChatGPT为代表的人工智能,理论上无法像人类一样拥有灵魂,但可以通过以下方式赋予其一定的趣味性:个性化-为人工智能添加特定的个性和语言风格,使其在与人类交互时更加......
  • 人工智能导论
    importnumpyasnpimportmatplotlib.pyplotaspltimportpandasaspdimportseabornassnsfromsklearn.linear_modelimportSGDRegressorimportjoblibimport......
  • Presto简介
    Presto简介Presto是一个由Facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto是一个运行在多台服务器上的分布式系统。完整安装包括一......