热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

求助:亚马逊棋(Amazons)设计,如何进行高效搜索?

亚马逊棋的博弈树过大,一般的搜索方式都行不通。在尝试了多种搜索算法后,近日使用蒙特卡洛,表现的效果离预期效果相差甚远。于是,希望破灭,程序进展再次陷入僵局。我是这样使用蒙特卡洛的:首先从可走的
亚马逊棋的博弈树过大,一般的搜索方式都行不通。
在尝试了多种搜索算法后,近日使用蒙特卡洛,表现的效果离预期效果相差甚远。于是,希望破灭,程序进展再次陷入僵局。
我是这样使用蒙特卡洛的:首先从可走的那些着法中去掉垃圾着法,保留一些比较好的;然后对保留下的那些着法逐个使用蒙特卡洛的思想进行模拟对局(对局至2至6步),模拟对局的局数为10000局;最后对10000个局面进行整体评估。问题就随之而来了,一个着法模拟对局10000局,每次模拟对局2步,一个着法耗费的时间达到约1秒!于是100个着法的模拟对局会耗费100秒!这种速度是无法容忍的。
与蒙特卡洛算法一起的还有一个UCT算法,我没有用UCT,UCT是使程序有选择的展开那些胜率比较高的着法,应该不会对模拟对局的速度有影响呀。
总之,现在是一头雾水。
希望大家能帮我看看,我想我一定是哪里错了,专家说Amazons使用蒙特卡洛算法的计算速度非常快,而我的却慢如蜗牛。。。

7 个解决方案

#1


怎么,没人(⊙_⊙)?。。。。求助哇

#2


亚马逊棋 没做过,以前做过象棋,
http://topic.csdn.net/u/20090706/18/4361fdac-a26a-431f-bb3a-8a093b471c7c.html

刚开始的时候也一直纠结于纯搜索算法,但事实证明,光有好的算法也没用,一但搜索深度增加到一定程度,博弈树就会成千万倍的增加。
所以需要结合棋谱,过滤掉大部分的无用节点,搜索深度会有很大的提高。

如果还需要继续增加,可以考虑使用分布式结构。使用搜索服务程序分布到局域网中,然后主程序把节点数据依次发给各服务器计算。
以前做的那个象棋程序,我使用了9台机计算机做分布计算。搜索到128层只用了11秒,如果你用单台计算,估计算上几天也算不完。

#3


谢谢楼上的朋友。你讲的很对,但使用多台计算机加快搜索对我来讲是没有条件实现的。

#4


9台计算机11秒能算完,一台最多99秒就能算完了,人家的分布式计算,那是要成千上万的处理器工作的

#5


引用 4 楼 y490095999 的回复:
9台计算机11秒能算完,一台最多99秒就能算完了,人家的分布式计算,那是要成千上万的处理器工作的


LS的朋友可以自己试试。
没有动过手就没有话语权!

节点剪枝+棋谱过滤+9台双核电脑.
一刚开始一部分的节点剪枝过滤算法过滤掉了,然后其它计算机分担计算,而且每一步都会有大量的节点被滤掉,一但有计算机空闲时又可以接受从节点多的计算机发送过来的节点数据。
所以单台计算机运算时间不是11*9=99这样计算的!

另外分布式计算不在于计算机的多少,哪怕是2台计算机,那也叫分布计算。

#6


用CUDA写,一台机器可以搞定吧??

#7


“然后对保留下的那些着法逐个使用蒙特卡洛的思想进行模拟对局(对局至2至6步)”
对局至2到6步是什么意思?就是说不是模拟至游戏结束?

推荐阅读
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 分布式计算助力链力实现毫秒级安全响应,确保100%数据准确性
    随着分布式计算技术的发展,其在数据存储、文件传输、在线视频、社交平台及去中心化金融等多个领域的应用日益广泛。国际知名企业如Firefox、Google、Opera、Netflix、OpenBazaar等均已采用该技术,推动了技术创新和服务升级。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 本文探讨了使用Python实现监控信息收集的方法,涵盖从基础的日志记录到复杂的系统运维解决方案,旨在帮助开发者和运维人员提升工作效率。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 初探Hadoop:第一章概览
    本文深入探讨了《Hadoop》第一章的内容,重点介绍了Hadoop的基本概念及其如何解决大数据处理中的关键挑战。 ... [详细]
  • 如何高效学习鸿蒙操作系统:开发者指南
    本文探讨了开发者如何更有效地学习鸿蒙操作系统,提供了来自行业专家的建议,包括系统化学习方法、职业规划建议以及具体的开发技巧。 ... [详细]
  • 如何寻找程序员的兼职机会
    随着远程工作的兴起,越来越多的程序员开始寻找灵活的兼职工作机会。本文将介绍几个适合程序员、设计师、翻译等专业人士的在线平台,帮助他们找到合适的兼职项目。 ... [详细]
  • 本文提供了一个详尽的前端开发资源列表,涵盖了从基础入门到高级应用的各个方面,包括HTML5、CSS3、JavaScript框架及库、移动开发、API接口、工具与插件等。 ... [详细]
  • 笔记说明重学前端是程劭非(winter)【前手机淘宝前端负责人】在极客时间开的一个专栏,每天10分钟,重构你的前端知识体系& ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • 尽管在WPF中工作了一段时间,但在菜单控件的样式设置上遇到了一些基础问题,特别是关于如何正确配置前景色和背景色。 ... [详细]
  • 利用Node.js实现PSD文件的高效切图
    本文介绍了如何通过Node.js及其psd2json模块,快速实现PSD文件的自动化切图过程,以适应项目中频繁的界面更新需求。此方法不仅提高了工作效率,还简化了从设计稿到实际应用的转换流程。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
author-avatar
郭昊天886688
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有