赞
踩
人工智能实验博弈树搜索
博弈树搜索
目录
人工智能实验博弈树搜索 1
博弈树搜索 1
input:type, state, depth, last_a, last_b /* 输入:节点类型、 当前状态、深度(越大则越浅)、父节点的α和β值 */ output: act, a, b /* 输出:当前节点取到极值的动作、当前节点的α和β值 */ def NodeSummon(type, state, depth, last_a, last_b): /* 生成叶子节点则直接打分 */ if depth == 0 then return Null, getScore(state),getScore(state) /* 依据节点类型初始化α和β值 */ a = -infin b = infin if type == Max then b = last_b else a = last_a /* 遍历每个可行的动作 */ for eachAct that possible newState = changeState(state, eachAct) /* 依据动作改变当前状态 */ _, next_a, next_b = NodeSummon(type, chesses, depth-1, a, b) /* 递归生成子节点 */ /* 依据节点类型更新α或β值,保存取极值的状态 */ if type == Max && a<next_a then act = eachAct a = next_a if type == Min && b>next_b then act = eachAct b = next_b /* 剪枝判断 */ if a>b then return act, a, b end return act, a, b
需要注意的是,根节点没有父节点,故父节点的α和β值分别设置为负无穷和正无穷。叶子节点不需要向下拓展,而是直接进行打分。打分同时作为该叶子节点的
α
\alpha
α和
β
\beta
β值即可将叶子节点也视作中间节点,方便统一处理。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。