赞
踩
大家好,小编为大家解答python编程人工智能小例子的问题。很多人还不知道python人工智能有趣例子,现在让我们一起来看看吧!
人工智能实验博弈树搜索
博弈树搜索
目录
人工智能实验博弈树搜索 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 版权所有,并保留所有权利。