标签:src dijkstra str lifo inline 最优 apt 符号 比较
在离散规划中,状态是“可数”的,有限的。
离散可行规划:
为了方便表达离散可行规划的定义,通常采用有向状态转移图来表示,图上的顶点集合表示状态空间 X,只有当两顶点之间可状态转移时,图上两顶点之间的有向边才存在。初始状态和目标集可以表示为图上特别指定的顶点。
上图显示了通用图搜索算法模板,其中有几点需要注意:Q 内部如何排序,如何判断状态属于目标状态,如何得到计划(动作序列),如何判断该状态是否已经访问过,是否需要更新状态代价值(如在Dijkstra 和 A* 算法)
几种前向搜索算法,区别在于定义了Q 这个优先级队列内部不同的排序方式
当两棵搜索树相遇时,搜索结束,返回成功。如果其中任一搜索树的优先级队列为空, 且两颗树未相遇,则搜索结束,返回失败。
上述所有的搜索算法遵循以下一些共同的模式:
\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\)
通过引入代价项Lf(xf)这一技巧,将离散可行规划中的约束转换为优化问题代价函数中的一项。
基本思想: 最优规划解决方案的子组成方案也是最优的,于是可以通过动态规划方法解决。在最优定长规划中,采用一种迭代算法,称为 值迭代,它的主要思想是在状态空间中迭代计算最优的 cost-to-go(或 cost-to-come)。Dijkstra’s algorithm 也是 值迭代的一种方式。
基本思想: 在状态空间中迭代计算最优的 cost-to-go 代价值。在特殊场景下,该方法退化为 Dijkstra 方法。
符号: $ G_{k}^{ \ast} $ :F 表示最后一步,$ G_{k}^{ \ast} $ 表示从第 k 步到 最后一步(F 步)最佳计划下的累计代价
初始条件: $ G_{F}^{ \ast}\left ( x_{F} \right ) = l_{F}\left ( x_{F} \right ) $
结论:
推导过程:
值迭代过程:
$ G_{F}^{ \ast}\rightarrow G_{K}^{ \ast}\rightarrow G_{K-1}^{ \ast}\cdots G_{k}^{ \ast}\rightarrow G_{k-1}^{ \ast}\rightarrow\cdots G_{2}^{ \ast}\rightarrow G_{1}^{ \ast} $
时间复杂度: $ O\left ( K\left | X \right |\left | U \right | \right ) $
离散最优规划标准定义\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\),该时间复杂度为 $ O\left | U \right |^K $,通过引入动态规划,极大降低了复杂度。
举例:
如上图,a 列 $ G_{1}^{ \ast} $ 的值 $G_{1}^{ \ast}\left ( a \right ) $ 代表了 5 步定步长最优规划的累计代价为 6 。那么如何体现动态规划思想降低时间复杂度呢?
当计算 $ G_{4}^{ \ast} $ 的值时,只有 b 和 c 可以只经过 1 步到达 d,再经过1 步到达目标 e,因此只有\(G_{4}^{ \ast}\left ( b \right )\)、\(G_{4}^{ \ast}\left ( c \right )\)为有限值。再计算 \(G_{3}^{ \ast}\) 的值时,只有经过 b 和 c 的路径才可能经过 5 步到达 目标 e,因此缩小了考虑的范围,具体程序表现为选择到达下一顶点的最小累计代价的行为。
那么,得到了最佳cost-to-go的表,如何提取最佳计划(或路径)?
一种解决方案是为每个顶点存储最优 \(G_{n}^{ \ast}\)所对应的行为,因此这样需要的内存复杂度为 \(O(K\left | X \right |)\) 。
基本思想: 在状态空间中迭代计算最优的 cost-to-come 代价值。
下图为上例,根据正向值迭代得到的最优 cost-to-come 代价值表。
\(L\left ( \pi _{K} \right ) = \sum_{k=1}^{K}l(x_{k},u_{k}) + l_{F}(x_{F})\)
通过引入代价项Lf(xf)这一技巧,将离散可行规划中的约束转换为优化问题代价函数中的一项。
对比最优定长规划问题和最优不定步长规划的区别,主要在于终止条件的设置。
定长问题:
不定步长:允许不同长度的计划
在最优不定步长问题中,从\(x_{I}\)到\(X_{G}\)的两步计划\(\left ( u_{1}, u_{2}\right )\)等效于从\(x_{I}\)到\(X_{G}\)的五步计划\(\left ( u_{1}, u_{2},u_{T},u_{T},u_{T}\right )\),因此最优定长规划中的正(反)向值迭代优化方法都可以扩展用于最优不定步长问题中。
当状态空间巨大时,对于计算机去解决这样的规划问题会比较困难,基于逻辑的表示形式在定义离散规划问题时比较流行,因为输出的结果是逻辑可解释的,但是由于基于逻辑的表示形式难以泛化,因此在连续空间、感知不确定、多决策的规划问题中,状态空间的表示形式仍然适用。
举例: 放电池到手电筒内
标签:src dijkstra str lifo inline 最优 apt 符号 比较
原文地址:https://www.cnblogs.com/zwk-coder/p/11097876.html