问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C++五子棋ab剪枝法 结构怎么设计。。

发布网友 发布时间:2022-04-29 12:21

我来回答

1个回答

热心网友 时间:2022-06-27 14:51

我也是初学,最近也要做一个类似的东西,略作探讨。


感觉博弈树这种东西节点用很多数据结构都能表示,没有什么特别要求。可以用这种链表型的数结构,也可以用只有指向第一个子节点和兄弟节点的结构,甚至只是使用几个队列或者数组就能表示。

博弈树不可能保存所有的节点,那样会把内存撑爆的。需要的只是第一步所有的节点和第二到第N步的一个(或一组)节点,不是构建整个树后评估,而是让 函数递归 来构建这种树形结构。


附件里是一个简化的版本,结构体有2个指向第一个子节点和兄弟节点的指针.

为了简便,产生下一轮和本轮其他步的走法可以直接产生,而且每个节点都有value值,这样可以简化评估函数。因为不同游戏产生下一步和评估函数都是不同的,这里只用一些简化写法代替。

#define MAX 100000000

#define MIN -100000000

#define LEAF 0

#define MAX_LEVEL 4 

#define MAX_BRO_NUM 100 

定义MAX节点,MIN节点,叶子节点,最大的层数MAX_LEVEL,最多兄弟节点数MAX_BRO_NUM,初始定义4层,每层100个节点,剪枝后大约剩几百万个节点(原本1亿个),

都不需要评估局势,还需要300毫秒左右。


每次都要在适当的时候释放内存,附件里只是一种写法。

typedef struct Node
{
    int value;
    int flag;
    int level;
    int brother_num;
    struct Node* first_child;
    struct Node* next_brother;
}Node;


我现在考虑用几个数组(或者队列)直接表示,有几层就需要几个数组,因为每层最多同时需要一个数组。

最后一层才是需要评估的,评估完之后就清空了,将得分传到上一层,然后根据上一层(倒数第二层)的下一个产生下一轮的走法填满刚才清空的最后一轮的数组,评估完再清空得分给上一层。........直到上一层填满就清空了将得分返回上上层......直到最上面的一层得到走法。。。


只是个人见解,仅供参考。如果不理解附件里的某些内容,欢迎追问。



声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
U盘更新专用需要电脑打开怎么让我的U盘和电脑文件夹同步更新啊_百度知 ... 为什么我的硬盘一打开就弹出对话框说选择打开方式. 倒霉的是右键也打... 磁盘右键是打开方式怎么办 我双机盘符总是打开 打开方式 让我选择,右健第一项是打开.不知道是中了... 罗技Lightspeed怎么用? 罗技无线鼠标怎么样?怎么连接电脑使用? 为什么不建议去融资公司上班 融资担保公司一般账务处理及所涉及的会计科目有哪些 月经期间可以游泳吗 经期能不能游泳 手机游戏与屏幕大小不一样怎么办? beta剪枝是相对于什么结点而言 剪枝算法怎么弄 大数取模 求 用于五子棋AI的 α—β 剪枝搜索算法 苹果13游戏屏幕大小怎么调整 求αβ剪枝算法应用于五子棋中,急!!! 怎么把手机游戏调整到合适手机屏幕大小? 玩旧版安卓系统的游戏时怎么把游戏界面调小? 陈冠希晒女儿下厨体验,退出娱乐圈的他如今过的怎么样? 陈冠希晒女儿照片,粉丝看到身上的配饰:这哪是晒娃,是在炫富!你怎么看? 陈冠希近况如何?怎么颜值都崩了? 陈冠希一家三口拍广告,三岁女儿长相像妈,网友却在评论提起阿娇,为什么? 陈冠希女儿奢侈生活惹争议,为什么陈冠希退圈多年,依然这么豪? 陈冠希晒女儿萌照,送的甜甜圈比脸大,Alaia眼神冷漠搞怪,你看过吗? 陈冠希更新全家福,和女儿躺在秦舒培怀里卖萌,这是模范家庭的模样吗? 满脸褶子却藏不住笑容,陈冠希对女儿的爱有多深? 陈冠希再晒女儿庆生现场照 ,画面温馨,大家觉得他现在过的怎么样? 陈冠希女儿近照曝光,Alaia长高不少造型可爱,萌到你了吗? 陈冠希晒女儿的礼物,妻子把父女俩难得的画面拍摄下来,非常温馨你羡慕吗? 陈冠希为什么会变成“女儿奴”? 10、填空在AlphaBeta剪枝算法中,我们把一个结点可能取值的上界记作____值 剪枝算法和A*算法的区别 博弈算法里的剪枝怎么用?(具体的) 极大极小算法有些不明白? 删除路径算法与剪枝算法一样吗? 在AlphaBeta剪枝的方法中,对树进行分析的顺序包括()。+A+由左往右+B+由右往左_百度问一问 【急】AlphaBeta算法该怎么理解? 在安排了alphabeta剪枝的方法中+,对树进行分析的顺序包括- 问一问 极大极小算法问题 谁能帮我在pudn上下载一份《c++实现的一个五子棋人机对弈程序 使用了alpha-beta剪枝算法》这个程序吗? win10终止服务一定要更新吗 什么是分支算法 C语言的枚举求解的循环问题 win10即将终止服务一定要更新吗 A*算法的复杂度是? 今天360提示我电脑的win10系统这版本已经终止,叫我更新升级,需要吗 win10免费更新要结束了,我要不要更新win10系统? 为什么win10有时间关机一定要更新? 帮忙起个好听的班级QQ群名字 我是9班 帮忙起个好听的班级QQ群名字,我们是9.2班。还有群标签和群简介~