最短路径游览问题(SPTP)包括从给定起点找到最短路径 节点s到有向图中具有非负弧长的给定目标节点t 最佳路径P应该连续从给定的至少一个节点通过的约束 节点子集T1,T2,... 。 。 TN(即,对于所有k,在通过子集T1 ... Tk-1中的至少一个节点之后,通过子集Tk中的某个节点。 我想我有一个基于动态编程的方法,希望获得正确性的反馈。
J[N,x[N]] = s(x[N],t) for x[N] in T[N] (i.e. shortest path from x[N] to t)
J[k,x[k]] = min:u in T[k+1] of (s(x[k],u) + J[k+1,u]) Here 0 <= k <= N-1 and x[k] in T[k]
Final output is J[0,s].
基本思想是,如果s,..,x [0],... x [1] ... x [2] ... x [N] .. t是该问题的最佳解决方案将x [i]放在T [i]中,则x [k] ... x [k + 1] ... x [N] .. t是从x [找到最短路径]的子问题的最佳解决方案k]到t,约束条件是路径应从子集T [k + 1] .. T [N]中连续通过至少一个节点。
为了解决A部分中的DP,我们将: