在动态规划中,子问题图被认为是有向非循环图(dag),但是当子问题图包含一个循环时如何解决?例如,子问题(a)的解决方案取决于子问题(b)和子问题(c)的解决方案,再次解决子问题(b)取决于子问题的解决方案(a)...
答案 0 :(得分:0)
在目前的形式中,这个问题只是无法解决。如果不解决A
,则无法解决B
,反之亦然。
你有更具体的问题吗?也许你的分析错了,子问题不是循环的。
也许您可以拆分子问题,这样就可以解决critical step
解析循环依赖关系而不dynamic programming
。
答案 1 :(得分:0)
在某些情况下(恰好当函数的值彼此线性相关时),您可以减少解决线性方程组的问题。例如,如果您知道
a b c value
eq.1 1 -1 -1 0
eq.2 0 1 -2 5
eq.3 -1 0 1 -1
然后你可以制作一个看起来像矩阵的线性系统。在这种情况下,它将是
GridLayout.LayoutParams parem = new LayoutParams(GridLayout.spec(GridLayout.UNDEFINED, 1f), GridLayout.spec(GridLayout.UNDEFINED, 1f));
所以,你有一个矩阵A和一个向量 c ,你想找到这样的 x ,A x = ç即可。矢量 x 将按顺序包含变量的值。这可以使用标准线性代数算法来完成,可能是高斯变换。