开始电脑围棋的胡思乱想、瞎琢磨
来源:互联网 发布:网络直复营销理论 编辑:程序博客网 时间:2024/04/28 18:39
这里的博客,很久没有新内容了。现在,打算用1-2年的时间,专心琢磨电脑围棋的问题。
我觉得,电脑围棋,自有史以来,直到今天的蒙特卡罗算法,一直在瞎掰。
他们的路子,就是尽量撇开围棋知识,用编程中的“搜索算法”解决围棋问题,甚至PK人肉对手。在传说中的“量子计算机”出现之前,这条路是死胡同。因为,“搜索算法”对硬件依赖极大,目前的电子计算机无法满足需求。
电脑围棋的alpha-beta pruning,这个方法足够好用,缺的是管用的“启发函数”,说到底是围棋知识的计算机表示。
要解决“启发函数”问题,不妨拿《发阳论》做实验。如果能正确求解其中的全部难题,电脑围棋应该有些实质性的进步。如果对《发阳论》束手无策,这电脑围棋趁早收摊吧。
实际上,我是从零开始的,只能边学边做。
以下是大致的设想。
电脑围棋系统设计开发方案
一、以求解《发阳论》全部死活题为目标,以专家系统为核心,以alpha-beta pruning方法为基本解题策略,以Erlang为开发平台(主要包括Eresye,wxErlang和mnesia等工具)。
1、系统任务目标是求解《发阳论》全部死活题
这个任务的难度,比《玄玄棋经》封闭有界死活题之类的求解难度要大得多,但比完整棋局的人机对弈容易得多,是一项难度适中的编程任务。
2、解题系统的核心是“专家系统”
围棋死活题求解,乃至围棋的基本问题,可以归结为“棋形逻辑”问题,即由黑白棋子构成的棋形之间的逻辑关系。
棋形逻辑,也就是棋形知识,可由专家系统的知识库存取,并通过专家系统的逻辑规则机制进行处理。
解题系统的开发,困难较多较大,必须人机交互、循序渐进。采用专家系统方式,便于人机交互和修改程序,降低开发难度,有利于较快实现系统原型。
3、系统的基本解题策略是alpha-beta pruning方法
alpha-beta pruning 方法是博弈解题的传统方法,已经成功运用于桥牌、国际象棋、中国象棋等领域。
alpha-beta pruning 方法的关键问题,是构建“启发函数”。它负责对解题过程中每一步棋的利弊价值进行评估,以确定下一步棋的盘面落点位置。价值评估的依据,就是当前的棋形(事实库中的事实),以及棋形之间的逻辑关系(相关的棋形知识)。解题系统的智能化程度,取决于“启发函数”的品质高低。
在专家系统中,“启发函数”表现为逻辑规则。
alpha-beta pruning 方法实现的原理,是“先深搜索+回溯”。
以下涉及开发平台Erlang中的主要工具。
4、Eresye 推理机解题服务器
① Eresye推理机简单实用,是处理求解问题的好工具;
② Eresye推理机使用“正向推理”,对应的搜索策略是“先宽搜索”;
③ 要把Eresye推理机改成“反向推理”,并增加“回溯”机制;
④ Eresye 的函数 assert 和 retract,可以方便地管理知识库、事实库和其他工作内存,不必再用 ets、array 等模块的函数;
⑤ 将推理机做成解题服务器,集中实现系统的逻辑任务处理,使其与GUI功能各自独立,有利于系统运行稳定、维护方便、兼容多种GUI。
5、解题系统的客户机GUI界面
wxErlang
- 开始电脑围棋的胡思乱想、瞎琢磨
- 开始的一直的胡思乱想
- 电脑围棋
- 电脑围棋领域的研究概述
- 电脑围棋领域的研究概述
- 电脑围棋领域的研究概述
- 关于电脑围棋
- 电脑围棋门径
- 电脑围棋中的人工智能技术
- 电脑围棋中的人工智能技术
- 电脑围棋世界冠军-陈志行教授
- 电脑围棋中的人工智能技术
- 电脑围棋中的人工智能技术
- 蒙特卡洛算法与电脑围棋
- 琢磨
- 四则运算的动态执行(瞎琢磨版)
- 我的胡思乱想
- 项目管理的胡思乱想
- 在C#中实现Socket端口复用
- 谢谢你
- .net 3.5平台上的Socket开发
- xp怎么设置默认登录用户
- 由洗牌想到的不重复随机数的生成
- 开始电脑围棋的胡思乱想、瞎琢磨
- PHP与MySQL开发中页面乱码的产生与解决
- PHP页面显示乱码的解决方案
- ORACLE自增长字段实现(转)
- MySQL+PHP产生乱码的原因及解决方法
- 基于Comet变体技术的WEB应用服务器BEINGX
- 学生成绩管理程序
- Spring 注释
- ORACLE 使用DBMS_METADATA.GET_DDL获取DDL语句