资讯动态

计算机博弈竞赛核心:棋类参数、博弈树剪枝与评估函数

发布时间:2026/10/27 2:32:39 来源:尧图企业网站定制
简介《计算机博弈竞赛辅导资料》是一份面向计算机博弈竞赛参赛者及人工智能博弈方向学习者的PPT讲义侧重帮助读者建立从棋类对象、软件架构到搜索与评估的知识框架。压缩包内含1个PPT文件大小约2.57MB内容以课堂讲义形式组织适合赛前梳理概念、对照复习与专题查漏补缺已有330人学习。讲义围绕棋类介绍与分类展开涉及中国象棋、国际象棋、围棋、五子棋、六子棋及部分民间棋类并讲解计算机博弈基本原理、博弈软件构成、棋局评估、博弈树展开与分析以及基于搜索的方法学特点和学科关系。读者可借助这份材料快速理解竞赛题目背后的博弈模型、搜索思路与评估要点形成较完整的备赛知识地图。1. 开场题五子棋已被证明先手必胜为什么还要考禁手计算机博弈竞赛辅导资料翻到棋类那一页很多人会愣一下五子棋那一行写着「已被证明先手胜」紧跟着又是「禁手、换手」。既然先手必胜禁手考什么这道反直觉的小题恰好点出这场竞赛的考法它不考你会不会下棋考的是你能不能把一盘棋拆成可计算的东西——棋盘多大、着法怎么生成、博弈树怎么展开、评估函数怎么给分。分值也集中在这三块棋类参数与分类是送分区博弈树与搜索是主考区棋局评估和软件构成是拉开差距的压轴区。适合已经写过搜索、但没系统梳理过棋类规则的人。先把参数表背成条件反射再拿一棵树手推剪枝最后练评估函数的口述这条路比闷头刷十盘棋有用得多。2. 棋类参数与分类送分题最密集的一块卷子发下来第一道大题十有八九落在棋类参数上棋盘几乘几、几个兵种、多少子、怎么判胜负。这块钱最好拿也最容易漏——漏一个特殊规则整道简答就从满分掉到及格线。这一章把主流棋种的硬参数摊开再讲两套分类轴怎么用最后拿三道真题走一遍答题路径。2.1 主流棋种的棋盘、兵力与胜负判定参数题的特点是「记错一个数字就全错」所以别贪多先记结构棋盘尺寸、兵种与子数、胜负判定、特殊规则四栏填满就算过关。棋种棋盘兵力配置胜负判定特殊规则中国象棋9×10红黑各 7 个兵种、16 子将死对方或将帅被吃长将长捉、时间约束、60 步不吃子判和国际象棋8×8王 1、后 1、车 2、象 2、马 2、兵 8共 16 子王被杀即输王车易位长、短、兵升变、吃过路兵围棋19×19黑白轮流入子占地盘多者胜先手贴目 5–7难度最大常缩到 9×9五子棋15×15轮流入子五子连珠禁手、换手、金球制一类的改进球制六子棋19×19轮流入子六子连珠先手下一子之后每手两子点格棋点阵连边轮流入子连边占格多者胜占格者继续连边死格、双环、长链、短链、环苏拉卡尔塔盘面走子双方等量棋子吃光对方棋子除吃子外每步一格沿完整弧线吃子亚马逊盘面走子每方 4 个「后」无子可动者负每着含移动与设障比活动范围这张表里藏着几道高频小题。中国象棋的「7 个兵种 16 子」是固定说法别写成 6 个兵种「60 步不吃子判和」常和「长将长捉」一起考问的是规则完备性——为什么一个博弈程序必须处理这些和棋与循环条款因为搜索树在循环局面上会无限展开。国际象棋的重点在不对称规则兵首步可走两格、吃过路兵、走到底线升变、王车易位分长易位和短易位这四条任何一条漏掉着法生成器就会漏着。围棋那栏要记住两个数字19×19 和贴目 5–7。规则最简单、计算难度最大这句话术在简答题里非常好用。它的工程含义是分支因子大、单步评估难所以常见做法是先缩到 9×9也就是常说的四分之一棋盘把问题规模压下来再谈搜索。答题时把「贴目」和「先手优势」挂上钩说明贴目是给后手方的补偿逻辑就闭合了。国际象棋的相对子力值是必背的一组数字以兵为 1马约 3、象约 3、车约 5、后约 9。注意「相对」两个字——它只在同一盘棋内部用来比较交换是否划算不是绝对得分。这一条在评估函数题里会反复出现第 4 章还会展开。五子棋和六子棋几乎是同一道题的两面。五子棋 15×15规则简单但先手优势大到必须打补丁禁手限制先手不能走某些成形点换手让后手有机会接管先手的局面改进球制再往前一步。六子棋干脆改规则本身——棋盘放大到 19×19先手只下一子此后每手两子用「每步多下一子」把先手优势削掉。这道对比常被拿来问「怎么设计规则削弱先手优势」答案就两句要么限制先手着法禁手要么改变下子节奏每手两子。民间棋类不是凑数的它们常出现在「分类判断」和「规则理解」两类题里。三通棋全盘 64 个小正三角形即 64 个棋位双方各 32 枚轮流布子、每着一枚乙方有一次连下两着的权利先实现三通者胜——注意那个「只有一次」的乙方双着权是平衡手段。二虎棋里虎方先走、可跳吃、每次吃一子吃够一定数量即胜犬方每次只走一子到邻近空位靠围困取胜把虎方全部棋子堵到无法走动才算赢。一字棋走子距离不限至少一步、至多走到终点不准逆行一次可以动任一个棋位上的一个或多个棋子但必须停在同一个目标棋位上。点格棋的考点偏概念邻近两点连成一边四边围成一个方格最后一个占边者拿走这个格子并且必须再连一边最后占格多者胜。真正拉开差距的是那几个术语死格、双环、长链、短链、环。答这类题要能说出「死格」为什么叫死——一旦某个格子只剩一边没连而轮到对手去连对手就白白拿走它这类格子在中盘是战略资源。苏拉卡尔塔的规则一句话就能概括除吃子外每步只走一格可沿垂直或对角吃子必须沿弧线并经过一个完整的弧。答题时把「沿弧吃子」和「必须完整」两个限定词写出来才算答完整。亚马逊每方 4 个「后」每着由移动和设障两部分组成双方争的是活动范围无子可动判负本质上是一种「憋死」类游戏。华容道是滑块类单人游戏把最大方块移到下方中央箭头处即完成它常被用来问「单人游戏算不算博弈」——这正好接上下一节的分类轴。2.2 两套分类轴按人数、按着法分类题的失分多半不是不知道类别而是答了一半。题目问「棋类怎么分类」标准答法是先给轴、再给类、最后给例三句话说完。第一根轴按参与人数双人、单人、多人。双人弈棋占绝大多数象棋、围棋、五子棋、国际象棋都是单人的典型是华容道这类滑块游戏多人的典型是跳棋。这根轴的意义在于状态空间的对手建模——单人游戏本质是路径规划双人游戏才有对抗搜索多人游戏则要考虑联盟与次序三种问题的算法路线完全不同。第二根轴按着法走子类、填子类、混合类。走子类是开局前双方摆好、开局后轮流走动棋子象棋、国际象棋、跳棋、牛角棋、苏拉卡尔塔、亚马逊都属于这一类。填子类是开局盘面无子、开局后轮流往盘上放子围棋、五子棋、点格棋在这一类。混合类最容易被漏开局盘面无子、轮流放入一定条件之后转为轮流走动棋子典型是五道棋兼有填子、走子、吃子日本将棋则是走子、吃子、填子三者都有。这两根轴交叉起来就是一盘棋的完整定位。答题时最好再补一句工程含义走子类必须实现合法性判定和吃子处理填子类重点在落点枚举和连通性判断混合类要维护「阶段切换」的状态标志。这句话一出来阅卷的人就知道你不是在背名词。还有一个概念性的分组必须记住棋类是完全信息动态博弈牌类是不完全信息动态博弈。这条区分不是文字游戏——完全信息意味着双方对盘面一无所知的部分为零所以可以老老实实展开博弈树牌类有隐藏信息博弈树这条路直接走不通得换概率与信念更新的思路。凡是题目问「为什么计算机下棋比打牌进展快」答案就落在这里。2.3 真题演练三道参数与分类题怎么答满第一题「棋类和牌类在博弈论意义上有什么区别这个区别对算法选择有什么影响」答题思路分三层。先定性棋类是完全信息动态博弈牌类是不完全信息动态博弈。再解释完全信息指任何时刻双方对局面信息的掌握是对称且完整的因此可以把「我走一步、对手走一步」展开成一棵树用搜索求值不完全信息下同一局面存在多种可能状态树上的节点不是一个确定局面而是一个信念集合。最后落到算法前者走博弈树加剪枝这条路后者要走概率采样与信息集上的决策。三层写完这题基本满分切忌只答「一个有信息一个没信息」。第二题「点格棋按着法属于哪一类为什么它的难点在哪」先答类别属于填子类因为开局盘面没有棋子双方轮流往盘面上添加边。再给理由整局的主要动作是「加边」而非「移动已有棋子」虽然占格后会再连一边但仍是添加动作。最后答难点局面评估不只看占格数还要看链结构——长链、短链、双环、死格决定了中后盘的得失节奏程序如果只会数格子进入长链阶段就会被对手牵着走。这题的分水岭在最后一段答出链结构才算真懂。第三题「五子棋先手优势明显工程上有哪些平衡手段六子棋的思路有什么不同」先摆事实五子棋在自由规则下已被证明先手胜所以正式规则要加平衡手段。再列举禁手限制先手在特定成形点的着法换手让后手可以选择接手先手的局面金球制一类的改进球制进一步调整先后手关系。然后对比六子棋不是给先手加限制而是改节奏——先手下一子此后每手两子用「每步多下一子」摊薄先手第一子的价值同时把棋盘放大到 19×19让复杂度显著提高。收尾可以加一句这两种思路分别对应「限制行动」和「改变节奏」是规则设计的两个基本方向。提示参数类简答最怕「只写数字不写含义」。棋盘尺寸后面跟一句「决定分支因子量级」子力值后面跟一句「用于交换判断」字数不多但卷面档次完全不同。3. 博弈树与搜索竞赛主考场的答题骨架参数题拿的是基础分真正决定排名的在这一章。给一个局面、给一棵树、给一组分支因子让你手推估值回传、数剪枝节点、估复杂度——这类题年年有答不上来的原因往往不是不会写代码而是脑子里没有那张三层结构的图。这一章先把树画清楚再上剪枝最后用真题练手推。3.1 博弈树的三层结构与估值回传博弈树的骨架只有三层根节点是当前待决策的局面下一层是「我」走完一步后的所有局面再下一层是「对手」应对后的所有局面如此交替直到叶子。习惯上把「我」的层叫 MAX 层因为这一层选估值最大的分支对手的层叫 MIN 层选估值最小的分支。这个命名不是装饰它决定了回传规则。回传的逻辑说穿了很朴素叶子节点由评估函数打分分数从叶子往根方向传遇到 MAX 层取子节点最大值遇到 MIN 层取子节点最小值。为什么 MIN 层取最小因为对手也在为自己争最好结果而评估函数是从「我」的角度打的分对手得分越低对我越有利。这棵树的规模由两个参数决定分支因子 b 和搜索深度 d。全展开的叶子数是 b 的 d 次方。中国象棋中局分支因子大致几十取 b40、d6叶子数就是 40 的 6 次方四十多亿任何机器都搜不完。所以「为什么必须剪枝」这道题的答案不是「剪枝更快」而是「不剪枝根本不可行」。这句话在简答里值分。理解了规模再说评估函数的接入点。评估函数只在叶子或达到深度上限的节点被调用中间节点只做比较。这就带来一个必考的取舍深度加一层看得更远但代价乘上分支因子深度减一层快但容易在战术上翻车。答题时把「搜索深度与评估精度的权衡」这句话写出来通常能拿到关键分。还有一个常考的小点着法生成必须过滤非法着法。把不合法的着法送进搜索等于让程序自己制造幻觉估值再准也没用。中国象棋的长将长捉、60 步不吃子判和国际象棋的吃过路兵与王车易位条件五子棋的禁手点都必须在生成阶段处理掉。3.2 Alpha-Beta 剪枝手推与代码两条路Alpha-Beta 的核心是两个边界值α 是 MAX 层当前已经拿到的最好分数下界β 是 MIN 层当前已经能压到的最好分数上界。沿着树往下走时这两个值不断收紧一旦出现 α ≥ β说明这个分支的结果不可能影响到上层决策直接放弃。手推题的固定流程是从左到右遍历叶子先算完最左边一支得到初始 α 和 β再逐支推进每进入一个 MIN 节点就把 β 往下压压到不超过 α 就划掉剩余子节点。答题时把「当前 α、当前 β、被剪掉哪几支」三样写清楚过程分就稳了。代码这条路更能体现理解深度INF float(inf) # 极小极大搜索 Alpha-Beta 剪枝 # board当前局面对象depth剩余搜索深度 # alphaMAX 层已知最好下界betaMIN 层已知最好上界 # maximizingTrue 表示当前是「我」的层MAXFalse 表示对手层MIN def alphabeta(board, depth, alpha, beta, maximizing): if depth 0 or board.is_terminal(): return board.evaluate() # 叶子节点交给评估函数打分 if maximizing: value -INF for move in board.legal_moves(): # 着法生成阶段已过滤非法着法 board.make(move) value max(value, alphabeta(board, depth - 1, alpha, beta, False)) board.undo(move) # 必须回溯否则局面被污染 alpha max(alpha, value) # MAX 层抬高下界 if alpha beta: # 剪枝对手层不会走到这里 break return value else: value INF for move in board.legal_moves(): board.make(move) value min(value, alphabeta(board, depth - 1, alpha, beta, True)) board.undo(move) beta min(beta, value) # MIN 层压低上界 if alpha beta: break return value这段代码里board承担局面表示与走子回溯depth控制搜索层数alpha和beta是剪枝窗口maximizing决定当前层的取大还是取小。make和undo必须成对出现漏一个undo后面的兄弟分支就在错误的局面上展开结果全错而且极难排查这是最典型的翻车点。alpha beta这个条件要能解释清楚当 MAX 层已经有一个不差于 β 的结果时上层的 MIN 节点绝不会选择进入这个分支因为对手有更差对他更有利的选择。所以剪掉的不是「错的」分支而是「不可能被选中的」分支。这句话是简答题的得分句务必背下来。剪枝的收益取决于着法排序。理想情况下最优叶子数从 b 的 d 次方降到大约 2 乘以 b 的 d/2 次方等于把指数砍半搜索深度翻倍。但如果着法顺序很糟糕剪枝几乎不起作用退化成全搜索。所以工程上常见「先试吃子、先试杀手着法」的排序策略答题时能提一句排序对剪枝效率的影响是加分项。3.3 真题演练剪枝节点数与复杂度估算第一题「分支因子 40、搜索深度 6全展开的叶子节点是多少理想剪枝后大约多少说明了什么」先算40 的 6 次方约为 4.1×10 的 9 次方四十亿量级。再算理想剪枝约 2 乘以 40 的 3 次方也就是十二万量级。最后说结论两者相差四个数量级以上剪枝把「不可行」变成「可行」本质是把指数从 d 降到 d/2。这题的分不在算术在最后那句结论。第二题「给出一棵深度为 4、分支因子为 2 的完全二叉树叶子估值从左到右依次为 3、5、2、8、1、4、6、0请手推 Alpha-Beta 剪枝过程指出被剪掉的分支。」答题步骤第一步最左一支走完MAX 层拿到 3MIN 层上界收紧到 3。第二步进入第二支遇到第一个叶子 5 时MIN 层发现 5 大于 3说明这一支对 MAX 更有利MIN 层不会选它于是剪掉该节点剩余子节点。第三步按同样逻辑推进后续分支逐个记录被剪的节点。答题时画简图、标注 α 和 β 的当前值比纯文字描述清楚得多。第三题「为什么评估函数只在叶子节点调用如果把评估放在中间节点会怎样」要点有三一是成本中间节点数量远小于叶子但调用评估意味着每个节点都要做一次特征提取整体代价会大幅上升二是语义中间节点的估值没有考虑对手的反击容易高估三是结构搜索的意义就在于用「对手会还手」这一假设去修正静态评估。答完这三点再补一句「所以中间节点只做取大取小」逻辑就完整了。第四题「同一深度下着法排序好坏对搜索结果有影响吗」答案是对最终结果没有影响对耗时影响巨大。剪枝是安全的它只跳过不可能被选中的分支不改变根节点的最优着法但排序决定了有多少分支能被跳过。最优排序接近理论下界最差排序退化为全搜索。答题时把这句「结果不变、效率大变」写出来是标准的得分表述。注意手推剪枝题一定要从左到右、逐支推进不要跳着看。跳跃推演是失分重灾区因为你无法证明中间某个分支为什么被剪。4. 棋局评估与软件构成从能搜到会判断搜索解决的是「怎么选」评估解决的是「凭什么选」。一盘棋搜到叶子程序必须给出一个分数这个分数好不好直接决定棋力。竞赛里评估函数的设计题经常以「请为某个棋种设计评估函数」的形式出现答得好不好看的是你能不能把棋类规则翻译成分数项。这一章先讲评估的四个来源再讲软件的模块分工最后拿两道设计题收尾。4.1 评估函数的四类打分来源评估函数的第一来源是子力。国际象棋的相对子力值是最标准的模板兵 1、马 3、象 3、车 5、后 9。中国象棋没有统一到小数点后的标准值但思路一样车、炮、马价值高兵卒过河后升值士象在防守端有固定价值。答题时先给「以兵为 1 的相对值体系」再说明它是用于交换判断而非绝对胜负这一句能挡住追问。第二来源是位置。同样是马站在中心和控制要道的价值完全不同同样是中国象棋的兵过河前后是两个量级。位置分的常见做法是维护一张位置权重表按棋子的落点查表加分。这类设计题的关键不是表长什么样而是说清楚「位置分必须和子力分同量纲」否则位置分很容易盖过子力分程序会为了抢一个好点白送一个车。第三来源是机动性也就是可走着法的数量。机动性高的局面通常更主动但这条不能滥用某些局面下着法多恰恰意味着防线松散。答题时给一句限定——机动性分只作辅助项权重压低避免程序为了凑着法数而乱走。第四来源是特殊规则项这一项最容易被漏也最能体现区分度。中国象棋要处理长将长捉与 60 步不吃子的和棋倾向如果程序在优势局面下反复循环就会被判和评估函数里要能识别「循环无进展」并对己方不利。五子棋要处理禁手先手走成禁手点直接判负评估函数必须在候选着法阶段就把禁手点降权甚至排除。国际象棋要处理兵升变一个即将升变的通路兵价值远高于普通兵。把这些规则写成分数项评估函数才算落地。四个来源之间要配权重。常见的答法是给一个层级子力为主位置次之机动性与特殊规则作修正项最后做归一化。这样的回答既有结构又不会被追问「权重具体是多少」时卡住——权重靠对局调参不靠拍脑袋。4.2 软件四大模块的分工与接口计算机博弈软件的构成标准四件套是用户界面、棋盘模拟、搜索算法、评估函数。这四个模块的分工要在答题时说清楚否则容易被追问「界面和搜索怎么解耦」。用户界面负责棋盘显示、走子输入、计时与对局控制。它的职责边界是「不参与决策」任何把搜索逻辑写进界面的做法都会让程序难以测试。棋盘模拟负责局面表示、着法生成与合法性判定它是整个系统的基础所有模块都通过它读写局面。搜索算法负责博弈树展开与剪枝评估函数负责给叶子打分。四个模块的接口可以这样描述界面调用棋盘模拟把用户输入转成着法再交给搜索模块求最优着法搜索过程中反复向棋盘模拟请求合法着法、向评估函数请求叶子估值最后把结果回传给界面渲染。这条链路说清楚等于把整个软件架构讲完了。局面表示是常考追问。棋盘模拟内部可以用一维数组、二维数组或位棋盘存局面选择依据是着法生成的效率与合法性判定的复杂度。答题时不必给具体实现但要说明「局面表示的选择服务于着法生成」这句话能挡住大部分追问。还有一条工程经验值得写进答案搜索与评估之间最好约定一个纯函数式接口评估函数只读局面、不修改局面。这样评估函数可以被单独测试也可以被替换成不同版本做对比。这个约定在笔试里不算硬考点但在设计题里是明显的加分项。4.3 真题演练两道评估函数设计题怎么答第一题「请为中国象棋设计一个基本的局面评估函数说明各分数项与权重思路。」答题框架分四段。第一段给子力项以兵为基准值车、炮、马给固定分值兵卒按过河与否分档。第二段给位置项车占开放线加分马居中心加分炮在中路与底线各有不同权重士象在防守位置加分。第三段给特殊项被将军扣分将帅暴露扣分长将循环无进展扣分残局阶段子力项权重上调、位置项权重下调。第四段给权重与归一化子力为主项位置与特殊项为修正输出统一到同一量纲。这题的分水岭在第三段。只写子力和位置说明你只会下棋写出长将与和棋规则的处理说明你想过「程序怎么输在自己手里」。第二题「五子棋的评估函数和象棋有什么本质不同禁手怎么处理」先答相同点都要有子力这里对应棋子数量与形态与位置分。再答不同点五子棋的胜负是形态判定不是吃掉对方所以评估的核心是「形」——活三、冲四、活四、连五这些形态的威胁等级而不是棋子值多少分。常见做法是扫描所有线路统计各方向的连子形态并加权同时考虑攻防两侧。最后答禁手禁手点属于规则层面的非法着法最稳妥的处理是在着法生成阶段直接过滤而不是靠评估函数扣分因为一旦走进禁手点棋局立刻结束扣多少分都来不及。这题的高分句是「规则性非法着法在生成阶段处理策略性不利着法在评估阶段处理」。把这两类问题分开说明你理解了模块边界。5. 常见错误五个最容易翻车的失分点复习到后面最怕的不是不会而是「以为自己会」。下面五条是从答题纸和代码里反复见到的错法每一条都按「错在哪、为什么错、怎么答对」拆开。5.1 把棋类和牌类混成一类错在哪被问到博弈分类时答「棋牌都是双人对抗游戏都属于完全信息博弈」。为什么错牌类存在隐藏信息每个玩家看到的局面不同属于不完全信息动态博弈。把两者混为一谈后面所有关于搜索可行性的推论都会跟着错。怎么答对先给出「棋类是完全信息动态博弈、牌类是不完全信息动态博弈」这一组对照再补一句「完全信息才能把对局展开成树这是搜索类方法的前提」。一句话把分类和算法连起来追问也挡得住。5.2 子力值当绝对分背错在哪把「马 3、车 5、后 9」直接写进评估函数当绝对得分叶子上限只有几十结果位置分一加就盖过子力分。为什么错这组数字是相对值原始定义是以兵为 1 的相对比较用来判断交换是否划算不是用来当总分的。怎么答对先说明「相对值以兵为 1」再说明使用方式——乘一个基准系数后计入总分位置分与特殊项按比例缩放保证同量纲。答题时补一句「权重靠对局调参确定」比硬报一个数字安全。5.3 认为剪枝会改变搜索结果错在哪回答「Alpha-Beta 剪枝可以剪掉不好的分支所以结果可能和全搜索不一样但更快」。为什么错剪枝只跳过不可能被选中的分支根节点的最优着法不变。说结果会变等于承认剪枝不安全这是概念性错误。怎么答对标准表述是「结果等价、效率提升」。再补一句前提剪枝的正确性依赖于着法生成不遗漏、估值回传方向正确。这两条一提说明你知道剪枝在什么条件下才成立。5.4 先手必胜与禁手的关系答反错在哪答「五子棋有禁手所以先手不一定必胜」。为什么错因果颠倒。是因为先手优势过大、在自由规则下已被证明先手胜才需要用禁手、换手这些手段去平衡。禁手是补丁不是原因。怎么答对按「先手优势明显 → 已被证明先手胜 → 引入禁手与换手做平衡 → 六子棋改用每手两子改变节奏」这条线答顺序不能乱。这个顺序本身就是一道题的答案结构。5.5 评估函数只写子力错在哪设计题只答「按棋子价值求和」没有位置、机动性和规则项。为什么错只算子力的程序在中局会走出「子力不亏但局面崩盘」的棋而且处理不了和棋、禁手、升变这些规则性事件实战中会输得很莫名。怎么答对按「子力为主、位置次之、机动性与特殊规则作修正」的层级答并且至少具体写出一个规则项比如中国象棋的长将循环扣分、五子棋的禁手点在生成阶段过滤。有一个具体例子整段就立住了。提示这五条错法有一个共同点——都能靠「先给定义、再给条件、最后给影响」三步说清。答题时养成这个顺序比背结论稳。6. 押题思路三天把六类题练成肌肉记忆押题不是猜题目是把题型收敛到几条固定路径上。这份辅导资料覆盖的内容落到卷面上无非六类棋种参数、分类判断、博弈树与剪枝、评估函数设计、软件模块分工、规则与胜负判定。每一类的答法都能练成条件反射关键是别按章节顺序看按「输出形式」练。第一天练参数和分类。拿一张白纸不看资料把中国象棋、国际象棋、围棋、五子棋、六子棋、点格棋、苏拉卡尔塔、亚马逊八种棋的棋盘、子数、胜负条件、特殊规则默写一遍写不出来的地方做个记号第二遍只默记号处。默完再练分类轴随便报一个棋名三秒内说出它按人数属于哪类、按着法属于哪类、依据是什么。这一步练熟送分区基本不会丢。第二天练树和剪枝。找一棵深度 4、分支因子 2 的树自己写八个叶子估值手推一遍剪枝边推边在纸上标 α 和 β 的当前值推完对照代码逻辑检查。然后练复杂度估算b40 时把 d4、5、6 的全展开叶子数和理想剪枝叶子数各算一遍记住数量级。最后用嘴说一遍「为什么剪枝不改变结果」说到不用想为止。第三天练评估和模块。挑一个棋种五分钟内口述一个评估函数先说子力项怎么给再说位置项怎么给再说一个规则项怎么处理最后说权重怎么配。说完换一个棋种再来一遍。模块题用固定句式「界面负责显示与输入棋盘模拟负责局面与着法生成搜索负责树展开与剪枝评估负责叶子打分四者通过局面对象交互」。我自己的血泪经验是手推剪枝那一步千万不能只在脑子里过。我第一遍复习时觉得逻辑很顺真到纸上推走到第三支就忘了 α 该不该更新白白丢了过程分。从那以后我每次练剪枝都强制走一遍「画图、标 α/β、写剪掉哪几支」的流程哪怕题目只问结论。参数表也一样我现在每次默写都强制把特殊规则栏填满宁可多写一条和棋条款也不留空。希望帮到你。资料里这几块内容是按考点顺序整理的参数表、手推示例、评估函数模板都在同一份文档里照着上面三天的顺序过一遍比零散搜题省时间。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑