开始电脑围棋的胡思乱想、瞎琢磨

来源:互联网 发布:网络直复营销理论 编辑:程序博客网 时间: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 


 

 

 

原创粉丝点击