1、 人 工 智 能 导 论 课 程 报 告课 题 名 称 : 五 子 棋姓 名 : X X 学 号 : 114304xxxx课 题 负 责 人 名 ( 学 号 ) : X X114304xxxx同 组 成 员 名 单 ( 学 号 、 角 色 ) :x x1143041325XXX1143041036指 导 教 师 : 张 建 州评 阅 成 绩 :评 阅 意 见 :提 交 报 告 时 间 : 2014 年 1 月 9 日课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-1-五 子 棋计 算 机 科 学 与 技 术 专
2、业学 生 XXX 指 导 老 师 张 建 州摘 要 人 类 之 所 以 不 断 在 进 步 , 是 因 为 我 们 人 类 一 直 不 断 的 在 思 考 , 五子 棋 游 戏 程 序 的 开 发 符 合 人 类 进 步 也 是 促 进 人 类 进 步 的 一 大 动 力 之 一 。 五 子 棋游 戏 程 序 让 人 们 方 便 快 捷 的 可 以 下 五 子 棋 , 让 人 们 在 何 时 都 能 通 过 下 棋 来 提 高逻 辑 思 维 能 力 , 同 时 也 培 养 儿 童 的 兴 趣 以 及 爱 好 , 让 孩 子 更 加 聪 明 。同 时 , 五 子 棋 游 戏 程 序 的 开 发
3、也 使 得 五 子 棋 这 个 游 戏 得 到 了 广 泛 的 推 广 ,让 世 界 各 地 的 人 们 知 道 五 子 棋 , 玩 上 五 子 棋 , 这 已 经 不 是 局 限 。 五 子 棋 游 戏 程序 使 得 越 来 越 多 的 人 喜 欢 上 了 五 子 棋 , 热 爱 下 五 子 棋 , 它 是 具 有 很 好 的 带 动 性的 。 关 键 词 : 五 子 棋 进 步 思 考课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-2-目 录 人 工 智 能 导 论 课 程 报 告 .01 引 言 31.1
4、五 子 棋 简 介 .31.2 五 子 棋 游 戏 的 发 展 与 现 状 .32 研 究 问 题 描 述 .42.1 问 题 定 义 .42.2 可 行 性 研 究 .42.3 需 求 分 析 .52.4 总 体 设 计 .52.5 详 细 设 计 .62.6 编 码 和 单 元 测 试 63 人 工 智 能 技 术 .64 算 法 设 计 .74.1- 剪 枝 算 法 .74.2 极 大 极 小 树 74.3 深 度 优 先 搜 索 ( DFS) 84.4 静 态 估 值 函 数 95 软 件 设 计 和 实 现 95.1 数 据 结 构 定 义 .95.2 程 序 流 程 图 .176
5、性 能 测 试 .186.1 程 序 执 行 结 果 .187 总 结 .21参 考 文 献 .21课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-3-1 引 言1 .1 五 子 棋 简 介五 子 棋 是 一 种 两 人 对 弈 的 纯 策 略 型 汉 族 棋 类 益 智 游 戏 , 棋 具 与 围 棋 通 用 ,由 中 国 汉 族 人 发 明 , 起 源 于 中 国 上 古 时 代 的 传 统 黑 白 棋 种 之 一 。 主 要 流 行 于 华人 和 汉 字 文 化 圈 的 国 家 以 及 欧 美 一 些 地
6、区 。容 易 上 手 , 老 少 皆 宜 , 而 且 趣 味 横 生 , 引 人 入 胜 ; 不 仅 能 增 强 思 维 能 力 ,提 高 智 力 , 而 且 富 含 哲 理 , 有 助 于 修 身 养 性 。 已 在 各 个 游 戏 平 台 有 应 用 。古 代 五 子 棋 棋 盘 与 围 棋 棋 盘 是 通 用 的 , 汉 魏 时 为 十 七 路 ( 17 17) 棋 盘 ,至 南 北 朝 时 即 已 流 行 十 九 路 ( 19 19) 棋 盘 , 直 至 1931 年 出 现 所 谓 五 子 棋 专 用棋 盘 。1 .2 五 子 棋 游 戏 的 发 展 与 现 状目 前 , 连 珠 这
7、 一 棋 类 运 动 已 迅 速 在 国 际 上 发 展 起 来 。 外 国 人 都 十 分 看 好 这一 不 起 眼 的 智 力 游 戏 , 并 认 为 五 子 棋 不 仅 能 提 高 思 维 、 开 发 智 力 、 手 脑 并 用 、修 身 养 性 而 且 富 含 哲 理 , 具 有 东 方 的 神 秘 和 西 方 的 直 观 , 是 中 西 文 化 的 交 汇 点 。许 多 国 家 的 人 对 五 子 棋 都 有 不 同 的 爱 称 , 例 如 韩 国 人 把 五 子 棋 称 之 为 “ 情 侣 棋 ” ,言 下 之 意 是 情 人 之 间 下 五 子 棋 有 利 于 增 加 情 感 的
8、 交 流 ; 欧 洲 人 称 之 为 “ 中 老 年棋 ” , 表 示 五 子 棋 适 合 中 老 年 人 的 生 理 特 点 和 思 维 方 式 ; 美 洲 人 喜 欢 将 五 子 棋 称之 为 “ 商 业 棋 ” , 就 是 说 商 人 谈 生 意 时 可 一 边 下 棋 一 边 谈 生 意 , 棋 下 完 了 生 意 也谈 成 了 。 由 此 可 见 , 尽 管 国 度 不 同 , 语 言 各 异 , 但 人 们 都 可 以 借 助 五 子 棋 这 一简 单 而 又 深 奥 的 棋 艺 进 行 交 流 、 比 赛 , 增 进 友 谊 。当 前 , 有 多 个 国 家 和 地 区 都 在
9、下 五 子 棋 , 并 有 各 种 规 模 和 级 别 的 比 赛 。 年 月 在 日 本 京 都 、 年 月 在 俄 罗 斯 联 邦 的 莫 斯 科 、 年 月 在 瑞 典 、 年 月 在 爱 沙 尼 亚 的 塔 林 分 别 举 行 了 第 一 、 二 、 三 、四 届 世 界 锦 标 赛 。 除 第 三 届 的 冠 军 是 爱 沙 尼 亚 人 之 外 , 其 余 三 届 的 冠 军 都 是 日本 人 。 五 子 棋 的 世 界 锦 标 赛 , 每 两 年 举 办 一 次 , 其 申 国 竞 争 也 十 分 激 烈 。 日 本目 前 拥 有 自 己 的 五 子 棋 职 业 棋 手 , 并 且
10、 对 连 珠 ( 五 子 棋 ) 技 术 的 研 究 也 相 当 普遍 和 全 面 , 就 水 平 也 正 在 日 益 增 强 。 同 时 , 五 子 棋 的 理 论 研 究 与 探 索 也 呈 现 蓬勃 发 展 的 势 头 , 从 年 第 一 部 五 子 棋 专 著 问 世 以 来 , 目 前 , 全 世 界 有 多 种 五 子 棋 的 书 籍 及 期 刊 , 分 别 以 日 文 、 俄 文 、 英 文 、 瑞 典 文 及 中 文 出版 发 行 。 五 子 棋 在 我 国 的 北 京 、 上 海 、 天 津 、 云 南 、 浙 江 、 广 东 、 四 川 、 湖 北 、辽 宁 、 新 疆 、
11、 河 北 等 省 ( 区 ) 市 都 有 很 大 的 发 展 。 北 京 多 次 举 办 了 北 京 地 区 的五 子 棋 赛 , 如 “ 思 曼 杯 ” 、 “ 京 空 杯 ” 、 “ 奇 奇 童 杯 ” 、 “ 北 京 第 六 届 民 族 团 结 杯 ”和 “ 北 京 第 四 岂 民 族 运 动 会 ” 的 五 子 棋 比 赛 。 上 海 地 区 举 办 了 “ 上 文 杯 ” 五 子棋 大 赛 。 云 南 省 以 及 其 他 省 市 亦 举 办 过 许 多 五 子 棋 比 赛 。 所 有 这 些 赛 事 都 越 来越 多 地 吸 引 了 无 数 人 的 关 注 , 表 明 了 根 植 于
12、 中 国 的 五 子 棋 有 着 广 泛 的 群 众 基 础 ,课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-4-是 群 众 喜 闻 乐 见 的 体 育 活 动 。而 现 在 , 很 多 很 多 游 戏 平 台 上 面 都 有 五 子 棋 游 戏 供 我 们 玩 , 任 何 游 戏 平 台上 面 只 要 有 棋 牌 类 游 戏 的 , 那 么 它 就 有 五 子 棋 在 里 面 , 网 络 五 子 棋 比 赛 , 在 联众 , 263, QQ 游 戏 , UC 里 进 行 了 10 几 年 了 可 见 , 五
13、子 棋 游 戏 在 网 络 上 面 是 非常 火 暴 的 , 而 且 在 棋 牌 游 戏 里 面 玩 家 人 数 排 名 总 会 占 到 很 前 面 , 不 愧 是 风 靡 全球 的 棋 牌 游 戏 啊 ! 在 未 来 中 , 将 会 有 越 来 越 多 的 人 关 注 五 子 棋 , 喜 欢 五 子 棋 ,那 么 将 其 变 为 商 业 化 也 会 越 来 越 多 , 而 且 还 可 以 以 教 育 孩 子 的 方 式 来 将 其 嵌 套进 去 , 或 者 用 来 做 测 试 等 等 , 可 以 说 以 后 的 五 子 棋 游 戏 会 是 那 么 的 精 彩 , 那 么的 让 人 憧 憬 。
14、 那 么 对 于 它 的 游 戏 开 发 和 发 展 也 将 会 上 升 到 举 足 轻 重 的 地 位 去 ,它 的 发 展 会 是 相 当 之 快 的 , 就 让 我 们 拭 目 以 待 吧 。2 研 究 问 题 描 述2 .1 问 题 定 义问 题 定 义 的 一 个 的 关 键 问 题 是 “ 要 解 决 的 问 题 是 什 么 ” , 这 个 是 这 个 阶 段必 须 要 明 确 要 回 答 的 问 题 。 在 没 将 问 题 定 义 好 , 试 图 准 备 下 个 阶 段 的 任 务 。 这明 显 是 不 成 熟 , 甚 至 不 可 能 的 事 。本 次 系 统 设 计 中 首 先
15、 明 确 了 需 要 解 决 的 问 题 是 五 子 棋 AI 算 法 , 基 本 的 要求 是 设 计 一 款 能 够 实 现 人 机 对 战 、 人 人 对 战 和 禁 手 的 五 子 棋 游 戏 , 提 供 一 些 基本 的 操 作 如 退 出 系 统 , 向 后 悔 棋 等 操 作 , 重 点 是 放 在 AI 算 法 的 研 究 。 而 并 不是 美 工 设 计 , 也 不 是 为 了 提 供 各 种 操 作 丰 富 的 接 口 。 主 要 是 通 过 这 种 可 视 化 的界 面 探 讨 AI, 当 然 增 加 可 玩 性 和 美 工 会 给 系 统 润 色 不 少 。上 面 只
16、是 很 粗 略 的 明 确 大 概 的 方 向 , 严 格 按 照 软 件 工 程 的 方 法 这 个 阶 段 需要 生 产 一 份 书 面 报 告 。 需 要 通 过 对 系 统 的 实 际 用 户 访 问 调 查 , 扼 要 地 写 出 他 对问 题 的 理 解 , 并 在 用 户 和 使 用 部 门 负 责 人 的 会 议 上 认 真 讨 论 这 份 书 面 报 告 , 澄清 含 糊 不 精 的 地 方 , 改 正 理 解 不 正 确 的 地 方 , 最 后 得 出 一 份 双 方 都 满 意 的 文 档 。本 系 统 的 需 求 很 少 也 很 明 显 了 。2 .2 可 行 性 研
17、究这 个 阶 段 要 回 答 的 关 键 问 题 : “ 对 于 上 一 个 阶 段 所 确 定 的 问 题 是 否 可 行 ? ”为 了 回 答 这 个 问 题 , 我 们 需 要 进 行 一 次 大 大 压 缩 和 简 化 了 的 系 统 分 析 和 设 计 的过 程 , 也 就 是 在 较 抽 象 的 高 层 次 上 进 行 的 分 析 和 设 计 的 过 程 。可 行 性 研 究 应 该 比 较 简 短 , 这 个 阶 段 的 任 务 不 是 具 体 解 决 问 题 , 而 是 研 究问 题 的 范 围 , 探 索 这 个 问 题 是 否 值 得 去 解 , 是 否 有 可 行 的 解
18、 决 办 法 。可 行 性 研 究 应 该 比 较 简 短 , 这 个 阶 段 的 任 务 不 是 具 体 解 决 问 题 , 而 是 研 究问 题 的 范 围 , 探 索 这 个 问 题 是 否 值 得 去 解 , 是 否 有 可 行 的 解 决 办 法 。 可 行 性 研课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-5-究 以 后 的 那 些 阶 段 将 需 要 投 入 要 多 的 人 力 物 力 。 及 时 中 止 不 值 得 投 资 的 工 程 项目 , 可 以 避 免 更 大 的 浪 费 。根 据 这
19、 些 基 本 的 概 念 , 我 在 技 术 上 主 要 是 通 过 相 关 文 档 资 料 的 查 找 后 确 定可 行 性 , 凭 着 大 学 期 间 打 下 厚 实 的 专 业 科 基 础 , 特 别 是 数 据 结 构 和 算 法 , 能 够在 这 段 时 间 理 解 通 透 并 应 该 有 所 改 进 , 后 来 证 明 是 对 的 。 利 用 剩 下 时 间 也 应 该来 说 也 比 较 充 裕 的 。 经 济 上 暂 不 考 虑 。下 面 主 要 从 技 术 上 进 行 分 析 :工 具 : Java 是 一 种 可 以 撰 写 跨 平 台 应 用 软 件 的 面 向 对 象 的
20、 程 序 设 计 语 言 ,是 由 Sun Microsystems 公 司 于 1995 年 5 月 推 出 的 Java 程 序 设 计 语 言 和 Java 平台 ( 即 JavaSE, JavaEE, JavaME) 的 总 称 。 Java 技 术 具 有 卓 越 的 通 用 性 、 高 效性 、 平 台 移 植 性 和 安 全 性 , 广 泛 应 用 于 个 人 PC、 数 据 中 心 、 游 戏 控 制 台 、 科 学超 级 计 算 机 、 移 动 电 话 和 互 联 网 , 同 时 拥 有 全 球 最 大 的 开 发 者 专 业 社 群 。 在 全球 云 计 算 和 移 动 互
21、 联 网 的 产 业 环 境 下 , Java 更 具 备 了 显 著 优 势 和 广 阔 前 景 。 所以 用 java 来 编 写 是 一 个 很 好 的 选 择 。算 法 : 在 这 图 论 搜 索 技 术 这 方 面 , 前 人 已 有 很 成 熟 的 算 法 。 如 粗 糙 的 有 深度 优 先 算 法 (DFS)和 广 度 优 先 算 法 (BFS)这 两 个 基 本 的 算 法 , 关 键 需 要 解 决 的 是能 够 设 计 出 一 种 高 效 的 剪 枝 函 数 , 减 小 搜 索 问 题 的 规 模 。 目 前 博 弈 类 游 戏 中 的人 工 智 能 基 本 都 采 用
22、极 大 极 小 值 方 法 这 对 我 来 说 是 个 挑 战 , 而 剪 枝 的 则 采 用Alpha-Beta, 通 过 丰 富 的 文 档 资 料 初 步 了 解 到 这 些 技 术 已 经 很 成 熟 了 。 我 们 有信 心 能 解 决 好 这 个 问 题 。2 .3 需 求 分 析人 工 智 能 的 第 一 大 成 就 是 下 棋 程 序 , 在 下 棋 程 度 中 应 用 的 某 些 技 术 , 如 向前 看 几 步 , 把 困 难 的 问 题 分 解 成 一 些 较 容 易 的 子 问 题 , 发 展 成 为 搜 索 和 问 题 归纳 这 样 的 人 工 智 能 基 本 技 术
23、 。 今 天 的 计 算 机 程 序 已 能 够 达 到 下 各 种 方 盘 棋 和 国际 象 棋 的 锦 标 赛 水 平 。 但 是 , 尚 未 解 决 包 括 人 类 棋 手 具 有 的 但 尚 不 能 明 确 表 达的 能 力 。 如 国 际 象 棋 大 师 们 洞 察 棋 局 的 能 力 。 另 一 个 问 题 是 涉 及 问 题 的 原 概 念 ,在 人 工 智 能 中 叫 做 问 题 表 示 的 选 择 , 人 们 常 能 找 到 某 种 思 考 问 题 的 方 法 , 从 而使 求 解 变 易 而 解 决 该 问 题 。 到 目 前 为 止 , 人 工 智 能 程 序 已 能 知
24、 道 如 何 考 虑 它 们要 解 决 的 问 题 , 即 搜 索 解 答 空 间 , 寻 找 较 优 解 答 。在 设 计 本 系 统 时 考 虑 到 用 户 需 要 的 是 一 个 操 作 简 便 界 面 简 单 的 游 戏 软 件 ,同 时 要 提 供 人 机 和 人 人 这 样 的 功 能 , 特 别 是 人 机 部 分 , 要 考 虑 到 不 同 级 别 的 用户 , 电 脑 智 能 不 能 太 低 需 要 有 一 定 的 智 能 下 棋 功 能 等 等 。 所 以 采 用 - 剪 枝 法算 法 时 就 是 为 了 达 到 这 些 目 标 。2 .4 总 体 设 计这 个 阶 段 必
25、 须 回 答 的 关 键 问 题 是 : “ 概 括 地 说 , 应 该 如 何 解 决 这 个 问 题 ? ”课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-6-首 先 , 应 该 考 虑 几 种 可 能 的 解 决 方 案 。 如 , 目 标 系 统 的 一 些 主 要 功 能 是 用 计 算机 自 动 完 成 还 是 用 人 工 完 成 ; 如 果 使 用 计 算 机 , 那 么 是 使 用 批 处 理 方 式 还 是 人机 交 互 方 式 ; 信 息 存 储 使 用 传 统 的 文 件 系 统 还 是 数
26、 据 库 。 通 常 至 少 应 该 考虑 下 述 几 类 可 能 的 方 案 :低 成 本 的 解 决 方 案 。 系 统 只 能 完 成 最 必 要 的 工 作 , 不 能 多 做 一 点 额 处 的 工作 。 本 系 统 的 最 基 本 要 求 就 是 能 够 实 现 必 要 的 操 作 , 其 他 额 外 的 一 些 工 作 在 后面 完 成中 等 成 本 的 解 决 方 案 。 这 样 的 系 统 不 仅 能 够 很 好 地 完 成 预 定 的 任 务 , 使 用起 来 很 方 便 , 而 且 可 能 还 具 有 用 户 没 有 具 体 指 定 的 某 些 功 能 和 特 点 。 虽
27、 然 用 户没 有 提 出 这 些 具 体 要 求 , 但 是 系 统 分 析 员 根 据 自 己 的 知 识 和 经 验 断 定 , 这 些 附加 的 能 力 在 实 践 中 将 证 明 是 很 有 价 值 的 。这 个 成 本 方 案 在 完 成 上 面 的 低 成 本 方 案 后 添 加 的 。 如 增 加 保 存 棋 局 , 美 化界 面 , 实 现 观 看 电 脑 与 电 脑 之 间 的 对 战 等 功 能 。高 成 本 的 “ 十 全 十 美 ” 的 系 统 。 这 样 的 系 统 具 有 用 户 可 能 希 望 有 的 所 有 功 能 和特 点 。结 构 设 计 的 一 条 基
28、本 原 理 就 是 程 序 应 该 模 块 化 , 也 就 是 一 个 大 程 序 应 该 由许 多 规 模 适 中 的 模 块 按 合 理 的 层 次 结 构 组 织 而 成 。 总 体 设 计 阶 段 的 第 二 项 主 要任 务 就 是 设 计 软 件 的 结 构 , 也 就 是 确 定 程 序 由 哪 些 模 块 组 成 以 及 模 块 间 的 关 系 。通 常 用 层 次 图 或 结 构 图 描 绘 软 件 的 结 构 。2 .5 详 细 设 计总 体 设 计 阶 段 以 比 较 抽 象 概 括 的 方 式 提 出 了 解 决 问 题 的 办 法 。 详 细 设 计 阶 段的 任 务
29、 就 是 把 解 法 具 体 化 , 也 就 是 回 答 下 面 这 个 关 键 问 题 : “ 应 该 怎 样 具 体 地 实现 这 个 系 统 呢 ? ”这 个 阶 段 的 任 务 还 不 是 编 写 程 序 , 而 是 设 计 出 程 序 的 详 细 规 格 说 明 。 这 种 规 格说 明 的 作 用 很 类 似 于 其 他 工 程 领 域 中 工 程 师 经 常 使 用 的 工 程 蓝 图 , 它 们 应 该 包含 必 要 的 细 节 , 程 序 员 可 以 根 据 它 们 写 出 实 际 的 程 序 代 码 。2 .6 编 码 和 单 元 测 试这 个 阶 段 的 关 键 任 务
30、是 根 据 以 上 阶 段 分 析 的 软 件 模 型 , 编 写 各 个 功 能 模 块 。要 注 意 的 是 程 序 的 扩 张 性 和 可 读 性 。 以 便 以 后 软 件 的 升 级 修 改 。 同 时 要 仔 细的 测 试 每 个 功 能 编 写 好 的 功 能 模 块 。3 人 工 智 能 技 术人 工 智 能 也 就 是 所 谓 的 AI(Artificial Intelligence), 它 是 一 门 很 抽 象 的 技 术 ,课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-7-AI 程 序
31、的 编 写 不 需 要 依 据 任 何 既 定 的 思 考 模 式 或 者 规 则 。 尤 其 是 游 戏 中 的 AI可 以 完 全 依 程 序 设 计 者 本 身 的 思 考 逻 辑 制 作 。 我 个 人 认 为 人 工 智 能 的 核 心 应 该是 使 计 算 机 具 有 自 动 的 处 理 事 件 的 能 力 , 而 我 们 的 所 有 的 研 究 也 应 该 围 绕 着 这一 方 向 。 我 们 今 天 讨 论 的 是 策 略 类 的 人 工 智 能 。策 略 类 人 工 智 能 可 以 说 是 AI 中 比 较 复 杂 的 一 种 , 最 常 见 的 策 略 类 AI 游 戏就
32、是 棋 盘 式 游 戏 。 在 这 类 游 戏 中 , 通 常 的 策 略 类 AI 程 序 都 是 使 计 算 机 判 断 目前 状 况 下 所 有 可 走 的 棋 与 可 能 的 获 胜 状 况 , 并 计 算 当 前 计 算 机 可 走 棋 步 的 获 胜分 数 或 者 玩 家 可 走 棋 步 的 获 胜 分 数 , 然 后 再 决 定 出 一 个 最 佳 走 法 。 本 课 程 设 计是 基 于 AI 中 - 剪 枝 算 法 的 五 子 棋 的 博 弈 游 戏 , 下 面 让 我 们 来 具 体 介 绍 一 下相 关 的 内 容 。4 算 法 设 计4 .1 - 剪 枝 算 法我 们
33、的 程 序 主 要 是 用 - 剪 枝 法 实 现 的 。 其 基 本 思 想 或 算 法 是 , 边 生 成 博弈 树 边 计 算 评 估 各 节 点 的 倒 推 值 , 并 且 根 据 评 估 出 的 倒 推 值 范 围 , 及 时 停 止 扩展 那 些 已 无 必 要 再 扩 展 的 子 节 点 , 即 相 当 于 剪 去 了 博 弈 树 上 的 一 些 分 枝 , 从 而节 约 了 机 器 开 销 , 提 高 了 搜 索 效 率 。 具 体 的 剪 枝 方 法 如 下 :(1) 对 于 一 个 与 节 点 MIN, 若 能 估 计 出 其 倒 推 值 的 上 确 界 , 并 且 这 个
34、 值 不大 于 MIN 的 父 节 点 (一 定 是 或 节 点 )的 估 计 倒 推 值 的 下 确 界 , 即 , 则 就不 必 再 扩 展 该 MIN 节 点 的 其 余 子 节 点 了 (因 为 这 些 节 点 的 估 值 对 MIN 父 节 点的 倒 推 值 已 无 任 何 影 响 了 )。 这 一 过 程 称 为 剪 枝 。(2) 对 于 一 个 或 节 点 MAX, 若 能 估 计 出 其 倒 推 值 的 下 确 界 , 并 且 这 个 值 不小 于 MAX 的 父 节 点 (一 定 是 与 节 点 )的 估 计 倒 推 值 的 上 确 界 , 即 , 则就 不 必 再 扩 展
35、该 MAX 节 点 的 其 余 子 节 点 了 (因 为 这 些 节 点 的 估 值 对 MAX 父 节点 的 倒 推 值 已 无 任 何 影 响 了 )。 这 一 过 程 称 为 剪 枝 。4 .2 极 大 极 小 树目 前 绝 大 部 分 的 博 弈 类 游 戏 中 的 人 工 算 法 都 采 用 这 种 方 法 。 假 设 己 方 为MAX 点 , 对 方 则 为 MIN 点 。 如 果 当 层 的 节 点 为 奇 数 时 那 么 就 为 MAX 层 , 同样 为 偶 数 时 就 为 MIN 层 。 当 在 MAX 层 时 , 该 层 的 值 就 应 该 为 下 一 个 MIN 层中 的
36、 最 大 一 个 的 值 。 当 在 MIN 层 是 , 该 层 的 值 就 应 该 为 它 子 层 MAX 的 最 小 的一 个 。 通 俗 的 说 就 是 当 轮 到 我 方 时 , 我 们 就 应 该 选 择 一 个 最 有 利 于 我 们 的 点 ,预 测 对 方 可 能 下 的 最 有 利 他 方 的 点 ( 相 对 我 方 来 说 就 是 最 坏 的 点 ) 。 这 样 反 复 计算 下 去 就 能 够 得 到 根 节 点 的 最 大 值 , 这 个 点 也 就 是 我 们 最 佳 下 棋 点 。 在 计 算 这个 点 时 可 以 很 明 显 的 看 出 这 是 一 个 不 断 递
37、 归 的 过 程 , 到 达 叶 子 节 点 时 根 据 相 关课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-8-的 计 算 规 则 算 出 该 值 然 后 向 上 一 层 不 断 的 返 回 。 下 图 中 矩 形 代 表 极 大 层 , 椭 圆代 表 极 小 层 。4 .3 深 度 优 先 搜 索 ( DFS)在 图 论 中 有 两 个 很 重 要 的 遍 历 的 方 法 , 一 个 是 深 度 优 先 搜 索 ( DFS) ,另 外一 个 是 广 度 优 先 搜 索 (BFS).这 两 个 方 法 的 主
38、 要 区 别 在 于 下 一 个 节 点 的 选 择 。DFS 首 先 选 择 它 的 连 接 节 点 , 若 它 的 下 个 节 点 已 经 全 部 被 遍 历 过 或 者 不 存 在 的话 。 则 向 上 返 回 到 上 一 个 节 点 , 在 遍 历 其 他 的 未 被 访 问 过 的 点 。 很 容 易 想 到 这要 用 到 堆 栈 结 构 , 使 用 一 个 递 归 来 实 现 。 而 BFS 则 是 逐 个 的 遍 历 它 的 联 接 接 点 ,将 已 经 访 问 过 的 点 放 入 队 列 中 。 然 后 再 依 次 取 出 继 续 这 个 过 程 。DFS 遍 历 过 程 如
39、下 :首 先 从 A 点 出 发 访 问 它 的 领 接 点 B, 因 为 B 的 领 接 点 C,F 均 未 被 访 问 过 ,所 以 B 点 选 择 C( 当 然 也 可 以 选 择 F 点 ) 作 为 下 一 个 要 访 问 的 点 , C 点 的 领 接点 是 D,F 选 择 下 个 节 点 D, 而 D 的 邻 接 点 只 有 一 个 E 且 未 被 访 问 过 , 就 将 E 作为 了 它 下 个 节 点 。 这 时 因 为 E 已 经 没 有 可 访 问 的 邻 点 , 所 以 向 上 一 层 返 回 到 D,发 现 D 也 已 经 没 有 可 访 问 的 点 了 , 继 续 向
40、 上 层 返 回 到 C, 由 于 C 的 邻 节 点 F 未被 访 问 过 , 那 么 就 访 问 F 。 所 以 整 个 过 程 的 遍 历 结 果 为 :课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-9-ABECFD 。BFS 的 遍 历 过 程 为 ABECFD。4 .4 静 态 估 值 函 数当 极 大 极 小 树 到 达 叶 子 节 点 时 , 需 要 估 算 一 下 当 前 盘 面 的 值 。 这 个 就 根 据某 个 计 算 规 则 计 算 也 即 是 估 值 函 数 。 因 为 这 个 值 是
41、 已 经 确 定 的 所 以 称 为 静 态 。当 只 有 一 个 点 时 , 并 且 相 邻 的 无 对 方 的 棋 子 或 者 不 是 边 界 等 “ 阻 碍 物 ”就 给 他 50, 否 则 给 予 10。当 两 个 点 时 , 并 且 相 邻 的 无 对 方 的 棋 子 或 者 不 是 边 界 等 “ 阻 碍 物 ” 给 予1000, 若 存 在 一 方 有 “ 阻 碍 物 ” 则 给 以 100, 否 则 给 予 10。当 是 活 三 的 时 候 给 予 3600, 当 存 在 一 边 被 堵 时 , 就 给 予 500。 否 则 给 予 10。当 是 活 四 的 时 候 给 以 5
42、00000, 当 一 边 被 堵 时 , 给 予 50000。 否 则 给 予 10当 是 五 连 子 的 时 候 就 给 予 最 高 分 1000000。最 后 判 断 是 否 是 己 方 的 , 若 不 是 则 给 予 负 号 。静 态 估 值 函 数 会 很 严 重 的 影 响 到 算 法 的 智 能 , 所 以 可 根 据 在 下 棋 的 过 程 中不 断 的 做 出 调 整 , 使 其 更 加 的 合 理 。 根 据 一 些 测 试 , 这 组 静 态 估 值 函 数 能 够 很好 的 反 映 棋 盘 重 要 性 指 标 。5 软 件 设 计 和 实 现5 .1 数 据 结 构 定
43、义本 程 序 定 义 15*15 的 五 子 棋 棋 盘 , 实 现 算 法 , 在 算 法 中 采 用 的 数 据 结 构 包括 : int isChessOn描 述 当 前 棋 盘 , 0 表 示 黑 子 , 1 表 示 白 字 , 2 表 示 无 子 ; intpre用 来 记 录 棋 点 的 x, y 坐 标 。由 于 本 课 程 设 计 是 基 于 Java 语 言 开 发 的 , 在 Java 中 只 能 用 类 来 表 示 并 实现 所 定 义 的 数 据 结 构 。 所 以 下 面 将 用 类 来 描 述 相 应 的 数 据 结 构 及 算 法 :public class Ch
44、essPanel extends JPanelprivate ImageIcon map; /棋 盘 背 景 位 图private ImageIcon blackchess; /黑 子 位 图private ImageIcon whitechess; /白 子 位 图public int isChessOn ; /棋 局protected boolean win = false; / 是 否 已 经 分 出 胜 负protected int win_bw; / 胜 利 棋 色protected int deep = 3, weight = 7; / 搜 索 的 深 度 以 及 广 度publi
45、c int drawn_num = 110; / 和 棋 步 数int chess_num = 0; / 总 落 子 数 目课 程 名 称 : 人 工 智 能 原 理 及 其 应 用 学 生 姓 名 : 何 兵 学 生 学 号 : 1143041163-10-public int pre = new intdrawn_num + 12; / 记 录 下 棋 点 的 x,y坐 标 最 多 (drawn_num + 1) 个public int sbw = 0; /玩 家 棋 色 黑 色 0, 白色 1 public int bw = 0; / 当 前 应 该 下 的 棋 色0: 黑 色 (默 认
46、 ), 1: 白 色/ 边 界 值 ,用 于 速 度 优 化protected int x_max = 15, x_min = 0;protected int y_max = 15, y_min = 0;protected boolean able_flag = true; / 是 否 选 择 禁 手 标 志 0:无禁 手 1:有 禁 手 (默 认private int h; /棋 子 长private int w; /棋 子 宽private int insx; /插 入 棋 子 的 位 置private int insy;private Point mousePoint; /鼠 标 当 前
47、 位 置private int winer; /获 胜 方private boolean humanhuman=false; /是 否 是 人 人 对 弈private int plast=0; /走 了 几 步 了 ,public int BLACK_ONE; /0 表 黑 子public int WHITE_ONE; /1 表 白 子public int NONE_ONE; /2 表 无 子public int N; /棋 盘 边 长/-搜 索 当 前 搜 索 状 态 极 大 值 -/alpha 祖 先 节 点 得 到 的 当 前 最 小 最 大 值 , 用 于 alpha 剪 枝/bet
48、a 祖 先 节 点 得 到 的 当 前 最 大 最 小 值 , 用 于 beta 剪 枝 。/step 还 要 搜 索 的 步 数/return 当 前 搜 索 子 树 极 大 值protected int findMax(int alpha, int beta, int step) int max = alpha;if (step = 0) return evaluate();int rt = getBests(1 - sbw);for (int i = 0; i max)max = t;/beta 剪 枝if (max = beta)return max;return max;/-搜 索
49、当 前 搜 索 状 态 极 小 值 -/alpha 祖 先 节 点 得 到 的 当 前 最 小 最 大 值 , 用 于 alpha 剪 枝/beta 祖 先 节 点 得 到 的 当 前 最 大 最 小 值 , 用 于 beta 剪 枝/step 还 要 搜 索 的 步 数/return 当 前 搜 索 子 树 极 小 值 。protected int findMin(int alpha, int beta, int step) int min = beta;if (step = 0) return evaluate();int rt = getBests(sbw);for (int i = 0; i