寻找捷径


10

动机:在标准的增强路径最大流算法中,内部循环需要在有向加权图中找到从源到汇的路径。从理论上讲,众所周知,为了使算法在边缘容量不合理时甚至终止,我们需要对找到的路径进行限制。例如,Edmonds-Karp算法告诉我们找到最短路径。

根据经验,已经观察到我们可能还想找到脂肪(是否有更好的术语?)。例如,当使用容量缩放时,我们发现可以承受至少流量的最短路径。路径的长度没有限制。当我们找不到任何路径时,我们减小并重复。εϵϵ

我对针对最大流的非常特定的应用优化扩充路径的选择感兴趣,并且我想探讨短路径与胖路径之间的这种权衡。(注意:我不必总是解决问题。我最感兴趣的是在最短的挂墙时间内找到最大的流量下限。)

问题:在最短路径方法和容量扩展方法之间是否存在标准的插值方法?也就是说,是否有一种算法可以找到短而胖的路径,理想情况下,某个参数可以控制我们愿意为胖而权衡的路径长度?在极端情况下,我希望能够在一端恢复最短路径,而在另一端恢复容量缩放样式的路径。


3
请注意,如果您尝试同时优化短缺和肥胖,则要进入多标准优化的领域,这在大多数情况下意味着NP硬度。
拉斐尔

@dan x:我知道最大流量的容量缩放算法,但是您所描述的具体算法不了解。您是否有详细描述您的容量扩展版本的参考资料(会议论文,期刊文章,书面演讲等)?我很好奇是否存在一种已知的“最佳方法”来初始化和递减(取决于定义的好坏,它很自然地会导致您所寻找的“参数化”算法)。ϵ
Daniel Apon

@Daniel Apon-这些幻灯片的第31页上有用于容量缩放的伪代码:cs.princeton.edu/~wayne/kleinberg.../07maxflow.pdf
dan_x 2010年

@Raphael-注意,我正在寻找一个单一的目标,例如,长度和脂肪的线性组合。那仍然被认为是多准则优化吗?
dan_x 2010年

另外,即使不是最佳选择,我也愿意采取“相当好的”方法。例如,在容量扩展中,我们采取的路径至少要和一样胖。我会喜欢一些兼顾矮胖和肥胖的类比。ϵ
dan_x 2010年

Answers:


2

本着您对“相当好,但不一定是最优”的评论精神,我提出以下想法,但绝对不能保证最优!

为了完整起见,这里是您引用的伪代码(备注:链接的算法假定边缘容量是1到C之间的整数,并且流量和剩余容量值是整数):

标度最大流量(G,s,t,C){
   foreach e∈E f(e)←0
   Δ←等于2的最小幂C
   G_f←残图

   而(Δ≥1){
      G_f(Δ)←Δ残图
      而(在G_f(Δ)中存在增强路径P){
         f←扩充(f,C,P)
         更新G_f(Δ)
      }
      Δ←Δ/ 2
   }
   返回f
}

观察到,当 = 1(伪码中为)时,您发现的路径最短到最长,而当大时,您发现的路径中(或多或少)最胖最苗条的订单。实际上,根据实例,容量缩放算法会在“足够流量”的“存储桶”中找到从最短到最长顺序的路径。ε = Δ εϵϵ=Δϵ

然后,添加另一个输入参数,该参数表示您在乎“胖”还是“矮”。为了确保我们不会严重影响运行时,我们进一步要求是一个有理数。ρ0ρ1ρ

然后,每次给分配一个值时,我们还采用加权算术平均值(我希望这是正确的项。)在1和它的当前值之间。那是,ρϵρ

ϵ(ρ)ϵ+(1ρ)

对于,我们最终得到一个纯粹的最短路径算法;对于,我们得到了一个最胖的纯路径算法;对于我们会得到一些介于两者之间的信息。特别是,对于某些中间值,将更快地收敛到,因此您将获得更多的最短路径和更少的最胖路径。ρ = 1 0 < ρ < 1 ε 1ρ=0ρ=10<ρ<1ϵ1


感谢您的想法-它已经接近我的想法了。我担心的是,这只是容量扩展的不同“衰减时间表”,对吗?
dan_x 2010年

当您更积极地衰减时,您会得到更短的路径,而当您不那么积极地衰减时,您将得到更胖的路径。我想到的是,每条路径都将基于其多胖和多短获得分数,然后该算法将找到分数大于某个阈值的所有路径。
dan_x 2010年

但是,如果没有标准的方法,我可以坐下来考虑一下,以获取可以满足自己需求的算法。
dan_x 2010年
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.