Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 有能力段塞流动态规划_Optimization_Dynamic Programming_Np Complete_Np Hard - Fatal编程技术网

Optimization 有能力段塞流动态规划

Optimization 有能力段塞流动态规划,optimization,dynamic-programming,np-complete,np-hard,Optimization,Dynamic Programming,Np Complete,Np Hard,Def 1:缓动图G=(V,E)是一个有向无环图,其中V={T1,T2,…,Tm}是一组行程,E是节点之间可传递的一组有向边,即如果E中的(Ti,Tj)和E中的(Tj,Tk),那么E中的(Ti,Tk) Def 2:给定段塞流图G=(V,E),段塞流图Gs=(V,Es),E中的Es是满足以下条件的G的子图:(i)对于Es中的所有(Ti,Tj),没有k!=j使(Ti,Tk)在Es中;(ii)对于Es中的所有(Ti,Tj),Es中不存在(Tk,Ti)的k 基本上,(i)表示Ti最多可以合并到一个其他行

Def 1:缓动图G=(V,E)是一个有向无环图,其中V={T1,T2,…,Tm}是一组行程,E是节点之间可传递的一组有向边,即如果E中的(Ti,Tj)和E中的(Tj,Tk),那么E中的(Ti,Tk)

Def 2:给定段塞流图G=(V,E),段塞流图Gs=(V,Es),E中的Es是满足以下条件的G的子图:(i)对于Es中的所有(Ti,Tj),没有k!=j使(Ti,Tk)在Es中;(ii)对于Es中的所有(Ti,Tj),Es中不存在(Tk,Ti)的k

基本上,(i)表示Ti最多可以合并到一个其他行程中,(ii)表示Ti可以合并到另一个行程中,当且仅当没有其他Tk合并到Ti中时

Def 3:给定一个缓动图G=(V,E),效益是与E中的每条边(Ti,Tj)相关联的值。效益值由R+中的函数B(Ti,Tj)给出。B的值仅取决于sorce边,即B(Ti,Tj)=B(Ti,Tk)=B(Ti,Tm)等等

定义4:总效益是段塞流计划Gs=(V,Es)中B(Ti,Tj)的总和,即Es中的(Ti,Tj),B(Gs)

Def 5:每次旅行Ti都有乘客数量和可用座位数量。如果Ti并入Tj,Ti的乘客将占据Tj的部分可用座位。Tj的可用座位数量因此减少。如果Ti的乘客人数超过Tj的可用座位,则Ti无法合并到Tj中,因此Es中没有(Ti,Tj)

问题:给定缓动图G=(V,E)和定义1-5,找出缓动计划Gs=(V,Es),E中的Es,其总效益最大B(Gs)


有关问题的详细说明,请访问并参阅第3.3小节



我必须用动态规划来解决这个问题。在我看来,这在某种程度上与0-1背包有关。例如,决定是否将Ta、Tb和Tc合并到Tj中类似于拥有对象a、b和c,然后尝试以利润最大且保持行李容量的方式将其放入行李j中。然而,在这个问题中,Ta、Tb和Tc可能会变成一个袋子而不是一个物体。基于此,我无法找到最优子结构来开始考虑动态规划细节。有人能帮我一把吗?

如果我理解的是正确的,你可以使用手工制作的
floyd warshall
来查找所有对的最短路径。这可以转换为所有配对最大效益(使用
max()
和benfit代替成本)。为Def 5添加一个添加的
if
语句,即仅当节点的乘客座位多于乘客座位时才包括节点,实际上不是这样。我们的目标不是找到所有配对的最大好处。参见DEF2,它有点扼杀了这个想法。这更像是一种多重0-1背包。问题是,根据配置,行李也可能是东西。对于某些输入,成为一个包的好处大于成为另一个包的对象的好处。