NP中的超级马里奥流?


15

最大流量问题的一个经典扩展是“随时间的最大流量”问题:您将得到一个有向图,将其两个节点分别作为源和汇,其中每个弧具有两个参数,每容量-单位时间和延迟。同时,也给出一个时间跨度Ť。目的是计算随时间变化的流量,该流量在时间从源到接收器获得最大数量的物料。可以通过多项式时间中的最小经典最大流量的巧妙经典归约来计算最大值的流量。Ť

我对此模型的扩展感兴趣,该模型的边缘具有第三个“寿命”参数。如果电弧的寿命为,并且是最早的正向电弧通过的时间,那么我们在时间处销毁电弧。您可以将其视为“超级马里奥兄弟”中的平台,踩到平台后不久就会掉落或被破坏,或者可以将它们视为为边缘供电所需的电池,在开启后无法关闭。(编辑:)决策问题是,当还给定流量值下限,是否可以调度同时满足时间范围上限和流量值下限的流量。ŤŤ+

到目前为止,我可以看到此问题对NP来说非常困难(通过3分区)。但是,我实际上并不知道它是否包含在NP中:是否可以保证有一种紧凑表达解决方案的方法?在经典版本中,使用某些特殊类型的最优流来规避此问题。

注意:由于您可能允许或不允许在节点上存储流量,因此上述模型的指定有点不足,并且您可能具有离散时间模型或连续模型。解决这些模型中的任何一个问题都是非常好的。


1
我不确定我是否理解。为什么在紧凑地表达特定的流量计划并验证折流时间内总流量至少为F时会出现问题?
Suresh Venkat

3
您可能正在考虑如何证明优化问题的输出(其输出是定时流)可以在多边形时间内检查其最优性。但是,通常会显示出只有YES / NO答案的决策问题在NP中,并且最大化某些功能(例如流)的优化问题通常会通过在输入中添加下界值B而变成决策问题,并且决策问题变成“是否有一个价值至少为B的解决方案?”
andy_fingerhut 2011年

苏雷什(Suresh):在离散模型中,表达流计划的自然方法是为每个圆弧使用整数,但这不是多项式,只是输入大小中的伪多项式。在连续模型中,类似地,我看不到如何压缩它。Ť
daveagp 2011年

安迪:您是正确的,从形式上来说,我最好将其表示为决策问题,除了在时间范围之外还具有下限值,那么我们可以询问它是否存在于NP中。
daveagp 2011年

1
@daveagp:您是否尝试过PSPACE硬度,例如将QBF降低到您的问题?
冈本

Answers:


13

已经很长时间了,但是我很确定这个问题在P中。

我在1995年撰写了我的博士学位论文。请参阅Bruce Hoppe提交给Cornell CS部门的“高效动态网络流算法”。在线http://dspace.library.cornell.edu/bitstream/1813/7181/1/95-1524.pdf

有关“致命边缘”的信息,请参见第8章“扩展”第8.1节


3
“那是一个黑暗而暴风雨的夜晚。杰克一动不动地躺在他的小屋里-除了他的肚子一动不动,他的肠子像疯狂的狂欢节一样在肠子里旋转……”(第十三页,作者讨论了实际应用)。
Neal Young

好的报价,尼尔!:) BTW daveagp提出了一个很好的观点,即需要伪多项式空间来存储回答决策问题的“流”。如何不仅找到最佳流,而且如何在P中表示流,这是我论文的第1-7章
Bruce Hoppe 2012年

优秀!我终于读完了所有这些。一旦我们确定了第一次流量到达边缘,证明网络的可行性(产生的开始和结束时间)在P中(假设允许保留),因此最初的问题在NP中:我们的多项式大小的证书列出了开始时间每个边缘。因此,超级马里奥赛车完全可以进入NP。随机问题:禁止保留会改变什么吗?有一个不错的近似算法吗?
daveagp

2

编辑:答案是错误的。我做出了一个(愚蠢的)隐含假设,即当路径流在时间s开始并在时间t结束并经过边缘e时,它将在此持续时间内阻塞边缘e。但是,事实并非如此。参见*。

注意:也许这种方法不必要地复杂或不正确。尽管我确实尝试验证并仔细记录下来-我并没有花费大量时间。

假设不允许“堆存”,例如必须立即转移流量。令表示边数,N表示输入长度。由于没有考虑连续时间或离散时间,因此未指定。我可以肯定,它应该适用于离散思想,可以连续进行。ñ

然后,我们可以将解决方案描述为从源到汇的一组“路径流”。路径流是一个四元组,它由以下各项组成:从源到宿的简单路径P;路径流s的开始时间;通过路径a的流量; 吞吐率rPs一种[RPs一种[R

通过路径流的集合给出解决方案。我们可以验证这些路径流给出的解在| |中的时间多项式上是否正确。F | NF|F|ñ

  • 对于每个边缘和时刻t,将在t时刻经过e的所有路径流的吞吐率相加。每个路径流都有开始时间和结束时间,因此,我们只需要考虑路径流开始或结束的时刻(在这些时刻之间,对于经过边e的路径流没有任何变化。ËŤËŤË
  • 对于每个路径流,我们可以验证其所有流是否在时间之前到达接收器。Ť
  • 对于每个边缘,我们可以验证路径流在销毁之后是否通过。
  • 通过累加流路的流量,我们可以简单地检查流量的下限。

现在,我们只是需要证明路径流的数量是多项式。ñ

对于给定的解决方案,我们可以确定一些流经过边缘的时间以及边缘被破坏的时间。用等效的解决方案将其转换为问题:何时可以使用边缘,何时不能使用边缘,则每个边界都有硬边界-开始时间和结束时间。让表示集合中的所有这些时间。{Ť1个Ťķ}

考虑一些非紧凑型解决方案,以及(最初)空路径集。这个想法是,我们迭代地在非紧凑型解决方案中找到一个路径流,将其删除并将其存储在我们的路径流集中。

找到在t j之间开始和结束的路径流,i < j但在t pt q之间不结束,因此[ t pt q ] [ t it j ]。令F i j表示t jt j之间具有上述性质的路径流的集合。Ť一世ŤĴ一世<ĴŤpŤq[ŤpŤq][Ť一世ŤĴ]F一世ĴŤĴŤĴ

假设我们已经删除了所有比更小的间隔的所有路径流。贪婪地找到路径流入该开始和结束[ Ĵ ]。当我们找到一个时,从解决方案中删除该流,并相应地调整顶点的吞吐率,以及从源发送到接收器的流量。对于此路径流,我们将吞吐量最大化。这意味着至少有一个边缘我们达到了它的最大吞吐率,或者在除去此路径流之后,该边缘上不再有流量。注意,这在周期[ t i + 1t j[一世Ĵ][Ť一世ŤĴ][Ť一世+1个ŤĴ-1个]|Fs,t|m

Fti,tjti+1tj1

i,j[k]|Fi,j|cm3c


在我看来,分解界限似乎是错误的,我将尝试给出一个说明性的反例。假设网络只是一个源->接收边缘,容量为100,延迟为0,寿命为100。现在考虑此流调度:在时间间隔[0,1)中以1的速率发送流;在时间间隔[0,1)中发送流。[1,2)中的速率为2,以此类推,直到[99,100)中的速率为100。据我了解,任何分解都需要> = 100的路径流,这与您的主张相矛盾。我应该提到,福特和富尔克森通过考虑一种特定类型的最优解决方案,而不是一个任意的最优解决方案,避免了经典解决方案中的这一障碍(无寿命)。
daveagp 2011年

也可以通过最大程度延长流的“寿命”来避免这种情况,但是证明中还有另一个问题,我对其进行了编辑以使其清楚。
Ruub 2011年

1

以我的理解,每个弧只需要存储一个数字,代表流开始通过弧发送的瞬间。那是假设在那之后,电弧就变得不可用了。否则,如果在停止使用电弧后可以再次使用电弧,则它的溶液应随时间推移尽可能接近最大流量(因为流量可能会在任意短的时间内停止发送,然后再次开始泵送) )。


我不明白你的主张是什么。
伊藤刚(Tsuyoshi Ito)

我认为这是不正确的。例如,假设一个网络具有三个节点,即源s,终端t和另一个节点v,三个弧度分别为a1 =(s,v),a2 =(s,v),a3 =(v,t)。弧的容量全部为1,行进时间对于a1和a3设置为0,对于a2设置为100。a1的寿命为1,a2和a3的寿命为1000。然后,在时间0处,可以从a到t通过a1和a3发送一个流量单位,并开始通过a2发送一个流量单位。在时间1到99期间,由于a1消失了,所以a3没有流量,但是在时间100,流经a2的流量到达v,并且再次使用a3。
冈本

如果我理解正确,您会部分声称,一旦边缘的生/死时间固定,就可以使用经典的最大时间流方法来解决剩余的问题,但是我不知道这种情况如何。
daveagp 2011年

@Yoshio:在那种情况下,如果不是立即立即沿a2发送一个单位的流量,而是在可以任意短时间再使用a1之后完全停止发送流量,那将会产生更好的解决方案。
Leandro M.

@戴夫:不,那不是我所说的。我的意思是,每个弧只能使用有限次数,或者问题的解决方案应任意近似最大流量的解决方案。简而言之,我担心问题定义的细节。
Leandro M.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.