【人工智能】博弈搜索(极小极大值、α-β剪枝)

news2025/3/1 21:57:45

1. 极小极大值算法

  人工智能中 “博弈” 通常专指博弈论专家们称为有完整信息的、确定性的、轮流行动的、两个游戏者的零和游戏(如国际象棋)。术语中,这是指在确定的、完全可观察的环境中两个 Agent必须轮流行动,在游戏结束时效用值总是相等并且符号相反。例如下国际象棋,一个棋手贏了,则对手一定是输了。正是 Agent 之间效用函数的对立导致了环境是对抗的。

博弈的游戏通常被 AI 作为一个好的问题来进行研究主要是因为:

  • 玩家需要向人一样的智慧
  • 游戏可能非常复杂(如象棋、围棋)
  • 需要在一定的时间限制内做出决策
  • 游戏是容易被定义的而且可以重复
  • 游戏完全可观察并且有有限的环境
  • 可以直接将人与AI进行比较

以井字棋为例我们可以得到下面的博弈树:
在这里插入图片描述
  通过以上博弈树可以得知游戏的终止会有两种结果MAX得到+1,MIN就会是-1,MAX是-1,MIN就会是+1,也就是一名玩家最大化结果,另一名玩家的结果就会最小。

  假设两个玩家(MAX为计算机、MIN为其对手)都发挥最佳效果,那么在计算机移动后,对手将选择最小化(但对于对手来说是最有利的操作)的移动,由此可得计算机应在考虑其移动和对手的最佳移动的情况下选择最佳移动,如下图所示:
在这里插入图片描述

  如上图所示计算机在根节点有四种选择方式,每种选择之后其对手又有不同种选择方式,在其对手选择完成后就会进入终止状态产生结果,计算机 (MAX) 为确保自己所获利益最大,应当选择B、C、D、E中最大的值,因为对手 (MIN) 总会选择对自己最有利的决策,所以B值的由来是F、G中的最小值、C的由来是H、I、J的最小值,由此就可以得到了极小极大值的算法,极小代表的是在计算机 (MAX) 决策后其对手 (MIN) 总会选择对于计算机 (MAX) 来说获利最小的操作,极大值代表的是计算机 (MAX) 需要在所有的决策中(所有的极小值中),选择最大的值,通过以上分析可得运用递归的方法是比较容易实现以上操作的,具体伪代码如下:

function MINIMAX_DECISION(state) returns an action
	inputs: state,current state in game
	return the a in Actions(state) maximizing MIN-VALUE(RESULT(a,state))

function MAX-VALUE(state) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = -for a,s in SUCCESSORS(state) do 
		v = MAX(v,MIN-VALUE(s))

function MIN-VALUE(state) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v =for a,s in SUCCESSORS(state) do 
		v = MIN(v,MAX-VALUE(s))

  从如上代码中可以得到 MAX-VALUE 函数与 MIN-VALUE 函数相互调用,通过深度优先搜索与逆向的归纳实现了极小极大值算法流程。

2. α-β剪枝

假设有如下博弈搜索树:
在这里插入图片描述
其正常的深搜顺序如下所示:
在这里插入图片描述
但根据极小极大值算法来看,我们发现有些搜索是没有必要进行的,请看以下分析:
在这里插入图片描述
  查看上图得知,MAX已完成了对第一个子节点的搜索,此时 MAX 在未搜索到其它节点的情况下的选择应该是大于等于3的 (目前所得到的极小极大值为3)。
在这里插入图片描述
  继续对第二个子节点进行搜索,但在第二个子节点的孩子节点搜到 2 时,我们就得知第二个子节点的值只会 ≤2 ,比第一个节点的值要小,因为我们要在所有子结点中选择最大值,因此在搜完第二个子节点的 2 节点之后,第二个子节点的孩子节点就没有搜索的必要了。
在这里插入图片描述
  但如果在搜索第三个节点时搜索到了值为 14 的节点,剩余的节点是还要继续搜索的,因为我们不知道第三个子节点的最小孩子节点是多少,所以需要继续搜索。
  以上过程只是展示了 MAX 在搜索中的剪枝过程,同理我们也可以得到 MIN在搜索时,也可以利用同样的优化方案,此时我们就可以得到 α-β 剪枝的伪代码:

function ALPHA-BETA-SEARCH(state) returns an action
	v = MAX-VALUE(state,-∞,+)
	return the action in ACTIONS(state) with value v

function MAX-VALUE(state,α,β) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = -for each a in ACTIONS(state) do
		v = MAX(v,MIN-VALUE(RESULT(s,a),α,β))
		if v ≥ β then return v
		α = MAX(α,v)
	return v
	
function MIN-VALUE(state,α,β) returns a utility value
	if TERMINAL-TEST(state) then return UTILITY(state)
	v = +for each a in ACTIONS(state) do
		v = MIN(v,MAX-VALUE(RESULT(s,a),α,β))
		if v ≤ α then return v
		β = MIN(β,v)
	return v

  其中 α 表示到目前为止路径上发现的 MAX 的最佳 (即极大值) 选择,β表示到目前为止路径上发现的 MIN 的最佳 (即极小值) 选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1653402.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MCP3008-I/SL 模数转换器ADC SPI接口 模拟信号采集

MCP3008-I/SL 模数转换器ADC 贴片SOIC16 MCP3008-I/SL 是一款模数转换器(ADC),属于 SAR(逐次逼近寄存器)架构的 ADC。它具有以下特点: 8 通道单 ADC 最大采样率:200ksps(千样点每秒…

MySQL-ELK基础

1:什么是 ELK ELK是由一家elastic公司开发的三个开源项目的首字母缩写,这三个项目分别是:Elasticsearch、Logstash 和 Kibana。三个项目各有不同的功能,之后又增加了许多新项目, 于是 从5.X版本后改名为Elastic Stack Elastic S…

STM32CubeMX学习笔记32---FreeRTOS资源管理

一、CPU利用率简介 1 基本概念 CPU 使用率其实就是系统运行的程序占用的 CPU 资源,表示机器在某段时间程序运行的情况,如果这段时间中,程序一直在占用 CPU 的使用权,那么可以人为 CPU 的利用率是 100%。CPU 的利用率越高&#xf…

C语言:__attribute__((packed))

一、简介 在使用结构体的时候,经常要根据结构体的长度来进行相关判断。但是按照C语言的规则,会对不同类型的数据类型进行自动对齐。有时候就会造成一些问题,如果不需要使用自动对齐的功能,就需要使用到本章的关键字。 二、自动对…

CFETS系统介绍

CSTP服务是什么 CSTP(CFETS Straight Through Process)是交易中心为外汇市场提供的数据直通式处理接口服务。用户通过标准式接口将本方交易数据直接从交易中心的服务器接收下来,根据需要对数据进行处理并导入到中、后台系统。其基本功能包括…

【JUC】并发编程 Synchronized 锁升级原理

Synchronized如何实现同步/互斥的效果? monitorenter: 将锁对象对象头中Mark Word的前30bit替换成指向操作系统中与其关联的monitor对象,将锁记录位状态改为10 monitorexit: 将锁对象对象头中Mark Word进行重置,重新恢…

活动预告 | 5月16日 Streaming Lakehouse Meetup · Online 与你相约!

随着 Apache Flink 技术社区的不断成熟和发展,越来越多企业开始利用 Flink 进行流式数据处理,从而提升数据时效性价值,获取业务实时化效果。与此同时,在大数据领域数据湖架构也日益成为新的技术趋势,越来越多企业开始采…

从谚语:“一手交钱,一手交货来”谈谈什么是数据库事务

事务与交易 一手交钱,一手交货 一手交钱,一手交货,谚语,意思是指钱和货当场相交,互不拖欠。出自明朝施耐庵《水浒传》第二一回。 Transaction 意思 我们先来看一下来自于剑桥英-英词典的解释: transac…

手游广告归因新选择:Xinstall助力精准衡量投放效果

在手游市场竞争日益激烈的今天,广告主们面临着如何精准衡量广告投放效果的难题。手游广告归因平台的出现,为广告主们提供了一种全新的解决方案。而Xinstall,作为其中的佼佼者,正以其独特的优势,助力广告主们破解这一难…

GIS 中的空间模式

空间模式显示了地球上事物的相互联系方式。这些图案可以是天然的或人造的。当我们使用 GIS 时,我们可以看到事物的位置以及它们之间的关系。今天,让我们关注地理和 GIS 领域的空间模式。 点分布的类型 点分布是将特定位置映射为地图上的单个点的方式。这…

如何用二维码实现现代仓库管理?(附详细实现过程)

简道云团队曾参与过近300企业的仓库管理软件的部署,要想知道如何实现用二维码管理仓库,首先要对整体流程有清晰的框架! 1、产品数据的录入2、设计电子库存卡3、库存盘点单4、库存盘点报表 总结一下就是——数卡单表,四步实现&…

USB3.0接口——(1)基础知识

1.背景 USB 3.0是一种USB规范,该规范由英特尔等公司发起。 USB协议版本 命名约定 USB-IF组织引入命名约定,将端口列为 USB 5 Gbps、USB 10 Gbps、USB 20 Gbps 、USB 40 Gbps,而不使用版本号。获得 USB-IF 认证的 USB 产品的制造商会获得带…

WEB基础--JDBC基础

JDBC简介 JDBC概述 数据库持久化介绍 jdbc是java做数据库持久化的规范,持久化(persistence):把数据保存到可掉电式存储设备(断电之后,数据还在,比如硬盘,U盘)中以供之后使用。大多数情况下,特别是企业级…

oc渲染器如何设置调渲染更快?oc云渲染加速助力

OC渲染器是Cinema 4D软件中广泛使用的渲染工具,它利用GPU进行硬件加速渲染,具备强大的计算性能。这使得它能够为产品和动画制作人员提供卓越的渲染质量。此外,OC渲染器还支持云渲染技术,这在需要进行大规模渲染任务时非常有用&…

我独自升级崛起账号注册 我独自升级怎么注册账号

近期,《我独自升级》这部动画凭借爆棚的人气,在各大平台上掀起了一阵观看热潮,其影响力不容小觑。借此时机,韩国游戏巨头网石集团敏捷响应,顺势推出了同名游戏《我独自升级:ARISE》,为粉丝们搭建…

微信社交平台的未来展望,2024微信的重点发展趋势

WeChat社交媒体平台概述 截至2024年,WeChat的月活跃用户超过13亿,预计到今年年底,WeChat用户将超过16.7亿。当然,全球WeChat用户数量的数字表明,该应用程序在世界上最受欢迎的应用程序中排名第五(仅次于Fa…

程序员有什么实用神器?

程序员的实用神器 在软件开发的海洋中,程序员的实用神器如同航海中的指南针,帮助他们导航、加速开发、优化代码质量,并最终抵达成功的彼岸。这些工具覆盖了从代码编写、版本控制到测试和部署的各个环节。 程序员常用的一些神器包括&#xf…

强烈推荐-程序员必备工具

uTools 新一代效率工具平台。呼之即来,即用即走,打造你的个人效率助理https://u.tools/?cxdawijbcmx

WebDAV之π-Disk派盘 + 溯记

“溯记”是一款提供丰富功能的时间轴日记应用,旨在帮助用户记录生活中的碎片化想法和事件,并提供便捷的回顾和管理功能。根据您提供的描述,这款应用具有丰富的特性,包括时间轴浏览、多媒体支持、实时存储、模糊搜索、日历视图、故事关联和随机回溯。这些功能将帮助用户记录…

后端常用技能:基于easy-poi实现excel一对多、多对多导入导出【附带源码】

0. 引言 在业务系统开发中,我们经常遇到excel导入导出的业务场景,普通的excel导入导出我们可以利用 apache poi、jxl以及阿里开源的easyexcel来实现,特别easyexcel更是将excel的导入导出极大简化,但是对于一些负载的表格形式&…