Questions tagged «network-flow»

网络流量用于对概念进行建模,例如交通或水管系统。基本思想是通过容量有限的边缘将尽可能多的流量单位从源移动到汇聚节点。

2
实际中是否已将链接剪切树用于最大流量计算或其他应用程序?
通过使用动态树(也称为链接剪切树),我通常会看到许多实现的最大流算法,狄尼克算法,推入重贴标签以及其他算法可以改善其渐近时间成本。 推重贴标签通常在或或,但带有动态树Ø (V2Ë)Ø(V2Ë)O(V^2E)Ø (V3)Ø(V3)O(V^3)Ø (V2Ë--√)Ø(V2Ë)O(V^2\sqrt{E})Ø (VË日志(五2/ E))Ø(VË日志⁡(V2/Ë))O(VE \log(V^2/E)) Dinic的算法在,但具有动态树Ø (V2Ë)Ø(V2Ë)O(V^2E)Ø (VË日志(五))Ø(VË日志⁡(V))O(VE\log(V)) 但是,大多数库中的最大流算法的实际实现似乎并未利用此数据结构。在实践中是否曾使用动态树进行最大流量计算?还是它们承担了过多的开销以至于无法解决现实世界中的问题规模? 是否还有其他使用链接剪切树的问题域? 这个问题与我在cstheory上提出的一个问题有关:现有技术中的最大流量算法是否可行?

5
二部图的最大独立集
我正在尝试寻找Biparite图的最大独立集。 在“ 1998年5月13日-华盛顿大学-CSE 521-网络流的应用”的一些注释中,我发现以下内容: 问题: 给定一个二分图G=(U,V,E)G=(U,V,E)G = (U,V,E),找到一组独立的U′∪V′U′∪V′U' \cup V'这是尽可能大的,在那里U′⊆UU′⊆UU' \subseteq U和V′⊆VV′⊆VV' \subseteq V。如果集合的元素之间没有EEE边,则集合是独立的。 解: 构造上的顶点的流图U∪V∪{s,t}U∪V∪{s,t}U \cup V \cup \{s,t\}。对于每个边缘(u,v)∈E(u,v)∈E(u,v) \in E有一个无限容量边缘从uuu到 vvv。对于每个u∈Uu∈Uu \in U,存在从单元容量边缘sss到uuu,并且对于每个v∈Vv∈Vv \in V,存在从单元容量边缘vvv到 ttt。 查找有限容量切口(S,T)(S,T)(S,T),与s∈Ss∈Ss \in S和t∈Tt∈Tt \in T。让 U′=U∩SU′=U∩SU' = U \cap S和V′=V∩TV′=V∩TV' = V \cap T。该组U′∪V′U′∪V′U' \cup V',因为没有无限容量的边缘交叉的切断是独立的。切口的大小是|U−U′|+|V−V′|=|U|+|V|−|U′∪V′||U−U′|+|V−V′|=|U|+|V|−|U′∪V′||U - U'| + |V - V'| …

1
min cut比网络流更容易吗?
感谢最大流量最小割定理,我们知道我们可以使用任何算法来计算网络图中的最大流量来计算最小割。因此,计算最小 -cut的复杂度不超过计算最大 -flow 的复杂度。(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t) 会更少吗?是否有一种算法可以计算出比任何最大流量算法都快的最小切割?(s,t)(s,t)(s,t) 我试图找到一种减少方法,以将)-最大流量问题减少为 -min-cut问题,但我找不到。我的第一个想法是使用分治法:首先找到一个最小割,将图形分为两部分;现在,递归地找到左侧部分的最大流和右侧部分的最大流,并将它们与穿过切口的所有边合并在一起。这确实可以产生最大流量,但是最坏的运行时间可能是最小切割算法运行时间的倍。有更好的减少方法吗?(s,t(s,t(s,t(s,t)(s,t)(s,t)O(|V|)O(|V|)O(|V|) 我意识到最大流量最小割定理表明,计算最大流量值的复杂度与计算最小割容量的复杂度相同,但这不是我要问的。我要问的是找到一个最大流量和一个最小切割(显式)的问题。 这与从最小切割计算最大流量非常相关,除了:(1)我愿意允许Cook减少(Turning减少),而不仅仅是Karp减少(多对减少),以及(2)也许在给定我们可以找到一些图,使得的最小使计算的最大流变得容易,这在另一个问题之外。GGGG′G′G'G′G′G'GGG

2
从最小切割计算最大流量
我们知道计算最大流量。具有容量的网络的最小割断是等效的;cf. 的最大流最小割定理。 我们有(或多或少有效率的)算法来计算最大流量,在给定最大流量的情况下计算最小切割既不困难也不昂贵。 但是相反呢?给定最小割口,我们如何确定最大流量?当然,如果不从头开始解决Max-Flow,最好也要比那快。 一些想法: 从最小切割,我们知道最大流量值。我看不到这些信息如何帮助标准方法扩展路径和推入重贴标签,尽管对后者进行调整似乎更为合理。 我们不能使用最小分割来将网络分为两部分并递归,因为在最坏的情况下(如果一个分区是单例),这不会缩小问题。同样,对于较小的实例,我们也没有最低限度的削减。 知道最大流量的值是否可以通过补充的松弛条件来加快求解最大流量LP?


2
调度问题的这种特殊情况是否可以在线性时间内解决?
爱丽丝(Alice)是一名学生,在接下来的几周里要完成很多作业。每一项家庭作业都需要她一天的时间。如果每个项目都错过了截止日期,那么每个项目都有一个截止日期,并且会对她的成绩产生负面影响(假设为实数,仅假设可比性,则获得加分)。 编写一个函数,该函数给出了(截止日期,成绩影响)列表,该时间表列出了在哪一天进行作业的时间表,以最大程度地减少对她的成绩造成的负面影响。 所有作业都必须最终完成,但是如果她错过了某个项目的截止日期,那么上交多晚都没关系。 在替代公式中: ACME公司希望向客户供水。他们都住在一条上坡路。ACME在这条街上分布着几口井。每口井可容纳一名顾客的水。客户出价要提供的金额不同。水只下坡。通过选择供应哪些客户来最大化收入。 我们可以使用存储桶排序对截止期限进行排序(或者假设我们已经按截止期限进行了排序)。 如果我们首先按降级影响进行排序,则可以使用贪婪算法轻松解决该问题。该解决方案不会比O(n log n)好。 受到中位数中位数和随机线性最小生成树算法的启发,我怀疑我们也可以在(随机化的)线性时间内解决我的简单调度/流程问题。 我在寻找: (潜在随机化)线性时间算法 或者替代地,认为不可能有线性时间 作为垫脚石: 我已经证明,仅知道在截止日期之前可以完成哪些项目,就足以在线性时间内重建完整的计划。(这种见解是我仅询问证书的第二种提法的基础。) 一个简单的(积分!)线性程序可以对这个问题进行建模。 使用该程序的对偶性,如果还为对偶程序提供了解决方案,则可以在线性时间内检查候选提议的解决方案是否最优。(两个解都可以用线性位数表示。) 理想情况下,我想在仅使用坡度影响之间比较而不在此处假设数字的模型中解决此问题。 对于这个问题,我有两种方法-一种基于使用截止日期和影响的挖掘,另一种类似于QuickSelect的方法,其基于选择随机枢轴元素并按影响对项目进行划分。两者都具有迫使O(n log n)或更坏的性能的最坏情况,但是我无法构造一个简单的特殊情况来降低两者的性能。

1
推断优化类型
在工作中,我的任务是推断一些有关动态语言的类型信息。我将语句序列重写为嵌套let表达式,如下所示: return x; Z => x var x; Z => let x = undefined in Z x = y; Z => let x = y in Z if x then T else F; Z => if x then { T; Z } else { F; Z } 由于我从一般类型信息开始,并试图推断出更具体的类型,因此自然的选择是精简类型。例如,条件运算符返回其真假分支类型的并集。在简单的情况下,它效果很好。 但是,在尝试推断以下类型时遇到了障碍: function …
11 programming-languages  logic  type-theory  type-inference  machine-learning  data-mining  clustering  order-theory  reference-request  information-theory  entropy  algorithms  algorithm-analysis  space-complexity  lower-bounds  formal-languages  computability  formal-grammars  context-free  parsing  complexity-theory  time-complexity  terminology  turing-machines  nondeterminism  programming-languages  semantics  operational-semantics  complexity-theory  time-complexity  complexity-theory  reference-request  turing-machines  machine-models  simulation  graphs  probability-theory  data-structures  terminology  distributed-systems  hash-tables  history  terminology  programming-languages  meta-programming  terminology  formal-grammars  compilers  algorithms  search-algorithms  formal-languages  regular-languages  complexity-theory  satisfiability  sat-solvers  factoring  algorithms  randomized-algorithms  streaming-algorithm  in-place  algorithms  numerical-analysis  regular-languages  automata  finite-automata  regular-expressions  algorithms  data-structures  efficiency  coding-theory  algorithms  graph-theory  reference-request  education  books  formal-languages  context-free  proof-techniques  algorithms  graph-theory  greedy-algorithms  matroids  complexity-theory  graph-theory  np-complete  intuition  complexity-theory  np-complete  traveling-salesman  algorithms  graphs  probabilistic-algorithms  weighted-graphs  data-structures  time-complexity  priority-queues  computability  turing-machines  automata  pushdown-automata  algorithms  graphs  binary-trees  algorithms  algorithm-analysis  spanning-trees  terminology  asymptotics  landau-notation  algorithms  graph-theory  network-flow  terminology  computability  undecidability  rice-theorem  algorithms  data-structures  computational-geometry 

2
减少最大流量以二分法匹配?
从最大二分匹配问题到最大流问题有一个著名而优雅的减少:我们为每个要匹配的项创建一个具有源节点,终端节点和一个节点的网络,然后添加适当的边。sssttt 当然,有一种方法可以将多项式时间内的最大流量减少到最大二分匹配,因为这两个函数都可以分别在多项式时间内求解。但是,从最大流量(在一般图中)到最大二分匹配是否有“精妙”的多项式时间减少?


1
为什么取消负周期的复杂度?
我们想用通用的负周期抵消算法来解决最小成本流问题。也就是说,我们从随机有效流开始,然后我们不选择任何“良好”负周期,例如最小平均成本周期,而是使用Bellman-Ford发现最小周期并沿发现的周期增加。设为图中节点的数量,为边的数量,为图中边缘的最大容量,为图中边缘的最大成本。然后,我的学习资料声称:VVVAAAUUUWWW 开始时的最高费用不得超过AUWAUWAUW 沿一个负周期的增加将成本降低至少一个单位 最低费用的下限是0,因为我们不允许负费用 每个负周期都可以在O(VA)O(VA)O(VA) 并且他们从中得出算法的复杂度为。我理解每个声明背后的逻辑,但认为复杂性不同。具体来说,最大扩充数量由每个扩充的一个流量单位给出,将的成本降至零,从而为我们提供了最大的扩充。我们需要为每个发现一个负循环,因此我们将最大扩增次数乘以发现一个循环所需的时间(),并得出算法的。O(V2AUW)O(V2AUW)O(V^2AUW)AUWAUWAUWAUWAUWAUWVAVAVAO(A2VUW)O(A2VUW)O(A^2VUW) 这可能是学习资料中的错误(这是教授提供的文字,而不是课程中的学生笔记),还是我的逻辑错误?
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.