象棋游戏里的人机走棋通常是算法与题库结合的方式,二者在不同阶段发挥作用,具体如下:
题库的应用
开局库:开局阶段局面相对固定,且有大量经过实战验证的最优走法。开局库收录了这些经典开局套路,人机在开局时会优先匹配库中的局面,直接采用成熟走法。例如常见的 “中炮对屏风马”“仙人指路” 等开局,若当前局面与库中记录一致,人机无需计算即可快速走棋,既节省搜索时间,又能保证开局的合理性。
残局库:残局阶段棋子数量少,局势相对简单,且存在许多必胜或必和的固定模式。残局库收录了这些残局的最优解,当人机检测到局面进入残局库范围时,会按照库中策略走棋,确保在优势局面下获胜,或在劣势局面下寻求和棋。比如 “单车胜士象全”“马兵胜单士” 等残局,人机可通过匹配残局库精准走棋。
算法的核心作用
搜索算法:这是人机在中局阶段(开局库和残局库未覆盖的局面)的核心决策依据。由于中局局面复杂多变,无法通过题库覆盖,需通过算法模拟后续走法并选择最优解。常见的搜索算法包括:
极小极大算法:模拟双方轮流走棋,假设己方追求最大收益,对方追求最小化己方收益,通过递归遍历后续多步走法,计算每种走法对应的局面得分,最终选择对己方最有利的走法。
Alpha-Beta 剪枝算法:是极小极大算法的优化版本,通过设置 α(己方最低可接受得分)和 β(对方最高可接受得分)两个参数,剪去不可能成为最优解的分支,大幅减少搜索量,提高计算效率。
蒙特卡洛树搜索(MCTS):通过随机模拟大量棋局,统计不同走法的胜率,优先探索胜率高的分支,逐步优化决策,常用于顶级象棋 AI 程序。
局面估值算法:配合搜索算法使用,用于对当前棋局进行量化评分,判断局面优劣。估值通常综合以下因素:
棋子价值:**不同棋子设定不同分值(如车 > 马 > 炮 > 兵),将(帅)分值极高,确保人机优先保护将帅。
位置价值:棋子在不同位置的价值不同(如车在中路价值高于边路,过河兵价值高于未过河兵),通过位置矩阵量化评分。
威胁与保护价值:评估棋子是否受敌方威胁或被己方保护,受威胁的棋子会扣分,被保护的棋子会加分,引导人机做出攻防决策。
算法与题库的协同逻辑
开局阶段:优先匹配开局库,快速走棋,避免冗余计算。
中局阶段:若局面超出开局库范围,启动搜索算法(如 Alpha-Beta 剪枝)结合局面估值,模拟后续多步走法并选择最优解。
残局阶段:实时检测局面是否匹配残局库,若命中则按库走棋;未命中则继续使用算法优化走法。