タグ付けされた質問 「network-flow」

ネットワークフローは、交通システムや水道管システムなどの概念をモデル化するために使用されます。基本的な考え方は、限られた容量のエッジを介して、ソースノードからシンクノードにフローの単位を移動することです。

2
最大フロー計算または他のアプリケーションのために、実際にリンクカットツリーは使用されていますか?
私がよく実装する多くの最大フローアルゴリズム、ダイニックのアルゴリズム、プッシュ再ラベルなどでは、動的ツリー(リンクカットツリーとも呼ばれます)を使用することで漸近的な時間コストを改善できます。 プッシュ再ラベルは、通常またはまたはますが、動的ツリーO (V 3)O (V 2 √O (V2E)O(V2E)O(V^2E)O (V3)O(V3)O(V^3)O(VElog(V2/E))O (V2E−−√)O(V2E)O(V^2\sqrt{E})O (VEログ(V2/ E))O(VElog⁡(V2/E))O(VE \log(V^2/E)) Dinicのアルゴリズムはで実行されますが、動的ツリーO (V E log (V ))O (V2E)O(V2E)O(V^2E)O (VEログ(V))O(VElog⁡(V))O(VE\log(V)) ただし、ほとんどのライブラリでのmax-flowアルゴリズムの実用的な実装では、このデータ構造を使用していないようです。ダイナミックツリーは、実際には最大フロー計算に使用されていますか?または、実際の問題のサイズに役立つにはオーバーヘッドが大きすぎますか? リンクカットツリーが使用される他の問題ドメインはありますか? この質問は、cstheoryで私が尋ねた質問に関連しています。最先端のMaximum Flowアルゴリズムは実用的ですか?

5
二部グラフの最大独立セット
私はバイパライトグラフの最大独立セットを見つけようとしています。 「1998年5月13日-ワシントン大学-CSE 521-ネットワークフローのアプリケーション」というメモで次のことがわかりました。 問題: 二部グラフ与えられると、可能な限り大きな独立集合を見つけます。ここで、およびです。セットの要素間にのエッジがない場合、セットは独立しています。G = (U、V、E)G=(U,V,E)G = (U,V,E)うん′∪ V′U′∪V′U' \cup V'うん′⊆ UU′⊆UU' \subseteq UV′⊆ VV′⊆VV' \subseteq VEEE 解決: 頂点フローグラフを作成します。各エッジには、から までの無限の容量エッジがあります。各には、からまで単位容量エッジがあり、各には、から までの単位容量エッジがあります。U∪V∪{s,t}U∪V∪{s,t}U \cup V \cup \{s,t\}(u,v)∈E(u,v)∈E(u,v) \in Euuuvvvu∈Uu∈Uu \in Usssuuuv∈Vv∈Vv \in Vvvvttt 有限容量カット検索と、と。レッツ と。セットは、カットを横切る無限の容量のエッジがないため、独立しています。カットのサイズは。これは、独立セットを可能な限り大きくするために、カットを可能な限り小さくします。(S,T)(S,T)(S,T)s∈Ss∈Ss \in St∈Tt∈Tt \in TU′=U∩SU′=U∩SU' = U \cap SV′=V∩TV′=V∩TV' = V \cap TU′∪V′U′∪V′U' \cup V'|U−U′|+|V−V′|=|U|+|V|−|U′∪V′||U−U′|+|V−V′|=|U|+|V|−|U′∪V′||U - U'| …

1
最小カットはネットワークフローより簡単ですか?
max-flow min-cut定理のおかげで、任意のアルゴリズムを使用してネットワークグラフの最大フローを計算し、 -min-cut を計算できることがわかります。したがって、最小の計算の複雑さ最大値の計算の複雑度以下である留分 -flowを。(s 、t )(s 、t )(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t)(s,t) 少なくてもいいですか?最小カットを計算するアルゴリズムは、max-flowアルゴリズムよりも高速ですか?(s 、t )(s,t)(s,t) 私は、削減の削減発見しようとしたに)-max-フローの問題を -minカット問題は、しかし、私は1つを見つけることができませんでした。私が最初に考えたのは、分割統治アルゴリズムを使用することでした。まず、グラフを2つの部分に分割する最小カットを見つけます。ここで、左部分の最大フローと右部分の最大フローを再帰的に見つけ、それらをカットを横断するすべてのエッジと結合します。これは実際に最大フローを生成するために機能しますが、その最悪の場合の実行時間は、min-cutアルゴリズムの実行時間の倍にもなります。より良い削減はありますか?(s 、t )O (| V |)(s 、t(s,t(s,t(s 、t )(s,t)(s,t)O (| V| )O(|V|)O(|V|) max-flow min-cut定理は、max-flowの値を計算する複雑さがmin-cutの容量を計算する複雑さと同じであることを示していますが、それは私が求めていることではありません。最大フローを見つけ、最小カットを(明示的に)見つける問題について質問しています。 これは、以下を除き、min-cutからのmax-flowの計算と非常に密接に関連しています。おそらく与えられた我々は見つけることができますいくつかのグラフの最小カットするような、それは簡単の最大フローを計算することができます、他の質問の範囲外だものです。G ' G ' GGGGG′G′G'G′G′G'GGG

2
最小カットから最大フローを計算する
最大フローの応答を計算することを知っています。容量のあるネットワークの最小カットは同等です。cf. 最大フロー最小カット定理。 最大フローを計算するためのアルゴリズム(多少効率的)があり、最大フローが与えられた場合の最小カットの計算も難しくも高価でもありません。 しかし、その逆はどうですか?最小カットが与えられた場合、最大フローをどのように決定できますか?もちろん、ゼロからMax-Flowを解決することなく、できればそれよりも高速です。 いくつかの考え: 最小カットから、最大流量値がわかります。この情報が標準パスのAugmenting-PathおよびPush-Relabelのアプローチにどのように役立つかはわかりませんが、後者の適応はやや理にかなっています。 最小カットを使用してネットワークを2つの部分に分割して再帰することはできません(最悪の場合(1つのパーティションがシングルトンの場合)、問題を縮小しないためです)。また、小さなインスタンスの最小カットもありません。 最大フロー速度の値を知っていると、おそらく補完的なスラックネス条件によって、Max-Flow LPを解くことができますか?

2
最大流量の残差グラフ
ここで最大流量問題について読んでいます。残余グラフの背後にある直感を理解できませんでした。フローを計算するときにバックエッジを考慮するのはなぜですか? Residual Graphの概念を理解してくれる人はいますか? 無向グラフのアルゴリズムはどのように変わりますか?

2
スケジューリング問題のこの特殊なケースは線形時間で解決できますか?
学生のアリスは、今後数週間にわたって多くの宿題をします。宿題の各項目には、ちょうど1日かかります。また、各アイテムには期限があり、期限に間に合わなかった場合、成績にマイナスの影響があります(実数、比較可能性のみを想定した場合のボーナスポイント)。 (期限、成績への影響)のリストを指定して、成績への悪影響の合計を最小化する、その日のうちに宿題を行うスケジュールを計算する関数を作成します。 すべての宿題は最終的に行われなければなりませんが、彼女がアイテムの締め切りに間に合わなかった場合、彼女がそれを遅らせることは重要ではありません。 別の定式化では: ACME corpは、顧客に水を供給したいと考えています。彼らはすべて1つの上り坂に沿って住んでいます。ACMEには、通り沿いにいくつかの井戸があります。各井戸には、1人の顧客に十分な水が供給されます。顧客は、提供する金額を変えて入札します。水は下り坂でしか流れません。提供する顧客を選択して、収益を最大化します。 バケットの並べ替えを使用して期限を並べ替えることができます(または、既に期限で並べ替え済みであると仮定します)。 グレードの影響を降順に並べ替えれば、貪欲なアルゴリズムで問題を簡単に解決できます。その解決策はO(n log n)に勝るものはありません。 Median of Mediansとランダム化線形最小スパニングツリーアルゴリズムに触発され、単純なスケジューリング/フローの問題を(ランダム化?)線形時間でも解決できると思います。 を探しています: (潜在的にランダム化された)線形時間アルゴリズム または、線形時間は不可能であるという議論 踏み台として: 期限までにどの項目を実行できるかを知るだけで、完全なスケジュールを線形時間で再構築するのに十分であることをすでに証明しました。(この洞察は、証明書についてのみ質問している2番目の定式化の根底にあります。) 単純な(積分!)線形プログラムでこの問題をモデル化できます。 このプログラムの双対性を使用すると、双対プログラムの解も与えられている場合、候補の提案された解の最適性を線形時間で確認できます。(両方の解は線形のビット数で表すことができます。) 理想的には、グレードの影響の比較のみを使用し、そこでの数値を想定しないモデルでこの問題を解決したいと考えています。 この問題には2つのアプローチがあります。1つは期限とインパクトを使用したトレープに基づいており、もう1つはランダムピボット要素の選択とインパクトによるアイテムの分割に基づいています。どちらも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 } 一般的なタイプ情報から始めて、より具体的なタイプを推測しようとしているので、自然な選択は絞り込みタイプです。たとえば、条件演算子は、trueブランチとfalseブランチの型の和集合を返します。単純なケースでは、非常にうまく機能します。 ただし、次のタイプを推測しようとしたときに、思わぬ障害に遭遇しました。 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
最大フローを2部マッチングに削減しますか?
最大の2部マッチング問題からmax-flow問題への有名で洗練された削減があります。ソースノード、ターミナルノード、およびマッチングする各アイテムに対して1つのノードでネットワークを作成し、適切なエッジを追加します。sssttt 多項式時間で最大フローを最大二部マッチングに削減する方法は確かにあります。これらは両方とも多項式時間で個別に解決できるためです。ただし、最大フロー(一般的なグラフ)から最大2部マッチングへの「素敵な」多項式時間短縮はありますか?


1
負のサイクルをキャンセルする
ジェネリックネガティブサイクルキャンセリングアルゴリズムを使用して、最小コストフローの問題を解決したいと考えています。つまり、ランダムな有効フローから始めて、最小平均コストサイクルなどの「良い」負のサイクルは選択せず、Bellman-Fordを使用して最小サイクルを発見し、発見されたサイクルに沿って拡張します。ましょうグラフ内のノードの数であり、Aのエッジの数、Uグラフにおけるエッジの最大容量、Wグラフにおけるエッジの最大コスト。次に、私の学習資料は次のように主張しています。VVVああAUUUWWW 最初の最大コストはA U W以下にする必要がありますA UWあUWAUW 1つの負のサイクルに沿った増加により、コストが少なくとも1ユニット削減されます 負のコストを許可しないため、最小コストの下限は0です。 負の各サイクルはO (VA )O(Vあ)O(VA) そして、アルゴリズムの複雑さはであると彼らは言う。私は各主張の背後にある論理を理解していますが、複雑さは異なると思います。具体的には、拡張の最大数は、拡張ごとに1単位のフローによって与えられ、A U Wからゼロまでのコストを取って、最大A U Wの拡張を提供します。それぞれについて負のサイクルを発見する必要があるので、増加の最大数にサイクルを発見するのに必要な時間(V A)を掛けてO (A 2 V UO (V2A UW)O(V2あUW)O(V^2AUW)A UWあUWAUWA UWあUWAUWVあVあVAアルゴリズム。O (A2VUW)O(あ2VUW)O(A^2VUW) これは学習教材の誤り(これは、コースからの学生のメモではなく、教授から提供されたテキストです)ですか、それとも私の論理は間違っていますか?

3
サイクルキャンセルアルゴリズムの負のサイクルを見つける
最小コストのフロー問題の最適なソリューションを見つけるために、サイクルキャンセリングアルゴリズムを実装しています。残余ネットワークで負のコストサイクルを見つけて削除することにより、各ラウンドの総コストが削減されます。負のサイクルを見つけるために、私はベルマンフォードアルゴリズムを使用しています。 私の問題は、Bellman-fordはソースから到達可能なサイクルのみを検出しますが、到達不可能なサイクルも検出する必要があります。 例:次のネットワークでは、すでに最大フローを適用しています。エッジ(A,B)(A,B)(A, B)は非常に高価になります。残余ネットワークでは、容量負のコストサイクルがあります111。これを削除すると、エッジとを使用した安価なソリューションが得られますが、ソースからは到達できません。(C 、T )S(A 、C)(あ、C)(A, C)(C、T)(C、T)(C, T)SSS ラベル:フロー/容量、コスト もちろん、各ノードをソースとしてベルマンフォードを繰り返し実行することもできますが、それは良い解決策のようには思えません。私が読んだすべての論文がこのステップをスキップしているように見えるので、私は少し混乱しています。 ベルマンフォードを使用して、すべての負のサイクル(到達可能かどうか)を見つける方法を教えていただけますか?そしてそれが不可能な場合、他にどのアルゴリズムを提案しますか?

4
フローネットワークにおけるXORのような動作
XORは正しい名前ではありませんが、ある種の排他的な動作を探しています。 現在、フローネットワークをモデル化し、min-cost-max-flowアルゴリズムを実行することで、さまざまな(割り当て)問題のセットを解決しています。フローネットワークは、多くの問題を簡単かつ理解可能な方法でそれらに削減できるため、非常に便利です。私の場合、これらはいくつかの追加の制約との一致です。これらの制約がより複雑になるにつれて、特定の動作をモデル化するための既存の構造があるかどうか疑問に思っていました。 この場合、ノードの発信フローを単一のエッジに制限します。 グラフ場合、積分容量とコスト。任意のノードをと呼びます。直接の隣人はと呼ばれます。エッジ(赤)をいくつかの構成に置き換えて、1つのエッジのみがフローを受け取ることができるようにできますか?つまり、がフロー(例:)を取得した場合、他の(赤い)エッジはフローを受信できません。C (U 、V )、K (U 、V )A B 1、。。B N A B 1、。。。A B nG=(V,E)G=(V,E)G=(V, E)c(u,v)c(u,v)c(u,v)k(u,v)k(u,v)k(u,v)AAAB1,..BnB1,..BnB_1, ..B_nAB1,...ABnAB1,...ABnAB_1,...AB_n 5 / 10AB1AB1AB_15/105/105/10 中間ノード/エッジを追加して、コストと容量を試すことができます。私たちの新しい建設の総容量は同じままでなければならず、さまざまな代替案のコストは何らかの形で比例し続けなければなりません。 だから私の質問は: このような構造は一般にありますか?(任意のキーワード、リンク、論文) 私の特定の問題の解決策を提案できますか?

1
CLRS-Maxflow Augmented Flow Lemma 26.1-defの使用を理解していません。証明で
コーメンら al。、Introduction to Algorithms(3rd ed。)、私は補題26.1の証明で、拡張されたフローはフローであり、st | f \ uparrow f'であることを示す行を取得しません。| = | f | + | f '| (これはpp。717-718です)。f↑f′f↑f′f\uparrow f'GGG|f↑f′|=|f|+|f′||f↑f′|=|f|+|f′||f\uparrow f'| =|f|+|f'| 私の混乱:フロー保護について議論するとき、最初の行でf \ uparrow f 'の定義を使用しf↑f′f↑f′f\uparrow f'て、各u∈V∖{s,t}u∈V∖{s,t}u\in V\setminus\{s,t\} ∑v∈V(f↑f′)(u,v)=∑v∈V(f(u,v)+f′(u,v)−f′(v,u)),∑v∈V(f↑f′)(u,v)=∑v∈V(f(u,v)+f′(u,v)−f′(v,u)), \sum_{v\in V} (f\uparrow f')(u,v) = \sum_{v\in V} (f(u,v)+f'(u,v) - f'(v,u)), ここで、拡張パスは次のように定義されています (f↑f′)(u,v)={f(u,v)+f′(u,v)−f′(v,u)0if (u,v)∈E,otherwise.(f↑f′)(u,v)={f(u,v)+f′(u,v)−f′(v,u)if (u,v)∈E,0otherwise. (f\uparrow f')(u,v) = \begin{cases} f(u,v)+f'(u,v) - …

2
2部グラフの最小頂点カバーを最大フローに削減
二部グラフの最小頂点カバーが最大フロー問題に削減できることを示すことは可能ですか?または、最小カットの問題(次に、max-flow min-cutの定理に従うと、主張は成立します)。 直感的に:各フローについて、1つのエンドポイントを選択すると、2部グラフの最小頂点カバーになります。しかし、それを厳密に示すことはできますか?

2
行列乗算プログラムの入れ子ループの不変式
Hoareロジックを使用して2つの行列を乗算するためのプログラムの正確性を証明することについて、卒業論文を作成しています。これを行うには、このプログラムの入れ子ループの不変式を生成する必要があります。 for i = 1:n for j = 1:n for k = 1:n C(i,j) = A(i,k)*B(k,j) + C(i,j); end end end 私は最初に内部ループの不変式を見つけようとしましたが、今までは本当のものを見つけることができません。上記のプログラムの不変式を見つけるのを手伝ってくれる人はいますか?
7 algorithms  loop-invariants  correctness-proof  formal-languages  regular-languages  pumping-lemma  logic  logic  programming-languages  lambda-calculus  term-rewriting  operational-semantics  complexity-theory  time-complexity  computability  proof-techniques  reductions  digital-preservation  distributed-systems  storage  algorithms  dynamic-programming  check-my-algorithm  reference-request  cryptography  quantum-computing  formal-languages  regular-languages  context-free  formal-grammars  algorithms  graphs  network-flow  algorithms  data-structures  randomized-algorithms  lists  computability  proof-techniques  undecidability  terminology  distributed-systems  parallel-computing  artificial-intelligence  heuristics  search-problem  algorithms  computational-geometry  algorithm-analysis  asymptotics  recurrence-relation  mathematical-analysis  master-theorem  algorithms  algorithm-analysis  runtime-analysis  computability  reductions  turing-machines  formal-languages  context-free 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.