【发布时间】:2017-07-18 01:43:21
【问题描述】:
我无法理解教科书中的以下伪代码。特别是,我不了解第一个功能。在我们计算了v ← MAX-VALUE(state, −∞, +∞) 之后,我们如何继续计算值为v 的动作?价值为v 的操作是什么意思?是否意味着为每个动作计算MAX-VALUE(Result(state, a) , −∞, +∞),并返回与v ← MAX-VALUE(state, −∞, +∞)相同的动作。通常,我可以毫无困难地实现本书中的伪代码,但这次我被严重卡住了。有人可以帮我解释一下吗?
function ALPHA-BETA-SEARCH(state) returns an action
v ← MAX-VALUE(state, −∞, +∞)
return the action in ACTIONS(state) with value v
function MAX-VALUE(state, α, β) returns a utility value
if TERMINAL-TEST(state) the return UTILITY(state)
v ← −∞
for each a in ACTIONS(state) do
v ← MAX(v, MIN-VALUE(RESULT(state, a), α, β))
if v ≥ β then return v
α ← MAX(α, v)
return v
function MIN-VALUE(state, α, β) returns a utility value
if TERMINAL-TEST(state) the return UTILITY(state)
v ← +∞
for each a in ACTIONS(state) do
v ← MIN(v, MAX-VALUE(RESULT(state, a), α, β))
if v ≤ α then return v
β ← MIN(β, v)
return v
【问题讨论】:
-
它只是意味着返回与值关联的操作。如果您从
MIN-VALUE和MAX-VALUE函数返回tuples,您可以在调用堆栈中返回操作,例如return a, v -
@AChampion 这是有道理的。所以我们只在 MIN-VALUE 和 MAX-VALUE 函数的每个 return 语句中返回元组 (a,v)。如果动作空间是空的,你会只返回空动作吗?
标签: algorithm graph-algorithm alpha-beta-pruning game-theory