值迭代算法的时间复杂度是多少?

人工智能 强化学习 算法 时间复杂度 价值迭代
2021-10-28 13:00:21

最近,我遇到了一个信息(这个加州大学伯克利分校AI课程的MDPs的第8讲和第9讲),值迭代算法每次迭代的时间复杂度是O(|S|2|A|), 在哪里|S|是状态的数量和|A|动作的数量。

这是每次迭代的方程式:

Vk+1(s)maxasT(s,a,s)[R(s,a,s)+γVk(s)]

我不明白为什么时间复杂度是O(|S|2|A|). 我搜索了互联网,但没有找到任何好的解释。

1个回答

您显示的值迭代的更新方程是时间复杂度O(|S×A|)每次更新到单个V(s)估计,因为它遍历所有要执行的操作maxa以及所有接下来的状态s.

您找到的来源可能将整个状态空间扫描计为“迭代”,即 sS:Vk+1(s)maxasT...这增加了另一个因素|S|使整体复杂性O(|S×S×A|)或者O(|S|2|A|)

这种迭代的定义是有意义的,因为基本值迭代算法需要扫描整个状态空间才能收敛。这也符合标准收敛测试,该测试在每次完整扫描后进行,并检查扫描结束时最大的绝对更新是什么——如果它低于某个准确度目标值,则该过程被宣布完成。