Submit Search
Upload
ネットワークフロー
•
Download as PPTX, PDF
•
2 likes
•
3,263 views
Kohei Shinohara
Follow
競技プログラミング練習会のフロー回で発表したスライド
Read less
Read more
Technology
Report
Share
Report
Share
1 of 22
Download now
Recommended
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Inc.
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
Abc009
Abc009
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
AtCoder Inc.
abc032
abc032
AtCoder Inc.
Recommended
グラフネットワーク〜フロー&カット〜
グラフネットワーク〜フロー&カット〜
HCPC: 北海道大学競技プログラミングサークル
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Inc.
最大流 (max flow)
最大流 (max flow)
HCPC: 北海道大学競技プログラミングサークル
最小カットを使って「燃やす埋める問題」を解く
最小カットを使って「燃やす埋める問題」を解く
shindannin
Abc009
Abc009
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Regular Contest 033 解説
AtCoder Regular Contest 033 解説
AtCoder Inc.
abc032
abc032
AtCoder Inc.
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説
AtCoder Inc.
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
Indeedなう B日程 解説
Indeedなう B日程 解説
AtCoder Inc.
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説
AtCoder Inc.
WUPC2012
WUPC2012
Dai Hamada
Square869120 contest #2
Square869120 contest #2
AtCoder Inc.
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
双対性
双対性
Yoichi Iwata
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
AtCoder Inc.
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
More Related Content
What's hot
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説
AtCoder Inc.
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
Indeedなう B日程 解説
Indeedなう B日程 解説
AtCoder Inc.
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
Takuya Akiba
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Inc.
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説
AtCoder Inc.
WUPC2012
WUPC2012
Dai Hamada
Square869120 contest #2
Square869120 contest #2
AtCoder Inc.
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
Takuya Akiba
双対性
双対性
Yoichi Iwata
What's hot
(20)
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 029 解説
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
Indeedなう B日程 解説
Indeedなう B日程 解説
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
プログラミングコンテストでのデータ構造 2 ~平衡二分探索木編~
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
写像 12 相
写像 12 相
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 024 解説
AtCoder Regular Contest 024 解説
WUPC2012
WUPC2012
Square869120 contest #2
Square869120 contest #2
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
双対性
双対性
Viewers also liked
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
AtCoder Inc.
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
Minero Aoki
様々な全域木問題
様々な全域木問題
tmaehara
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
Kumano Ryo
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
Hiroshi Shimizu
SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)
Takanori Ogata
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
K Moneto
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
AtCoder Inc.
東方紅魔郷AI
東方紅魔郷AI
aki33524
KMC 競技プログラミング練習会 Advanced 第3回 ふろー
KMC 競技プログラミング練習会 Advanced 第3回 ふろー
kyoto university
Viewers also liked
(11)
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
Cookpad Summer Intern 2015 - Programming Paradigm
Cookpad Summer Intern 2015 - Programming Paradigm
様々な全域木問題
様々な全域木問題
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
SQLおじさん(自称)がBigQueryのStandard SQLを使ってみた
エクセルで統計分析 統計プログラムHADについて
エクセルで統計分析 統計プログラムHADについて
SSD: Single Shot MultiBox Detector (ECCV2016)
SSD: Single Shot MultiBox Detector (ECCV2016)
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
東方紅魔郷AI
東方紅魔郷AI
KMC 競技プログラミング練習会 Advanced 第3回 ふろー
KMC 競技プログラミング練習会 Advanced 第3回 ふろー
Recently uploaded
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
danielhu54
Recently uploaded
(9)
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
ネットワークフロー
1.
ネットワークフロー
2.
最大フロー問題 次の問題を考える 「下のグラフにおいてS(source)からT(sink)までフロー(非圧縮性流体みたいな もの)を流すことを考える。但し、各辺には流せるフローの最大値(整数)が設 定されている。流すことのできるフローの最大値を求めよ。」
3.
1.フローを流す余裕のある辺のみを用いたsからtへのパスを 見つける 2-A.そのようなパスが存在しなければ終了 2-B.そのようなパスが存在したら、そのパスに流せる限り のフローを流す。1に戻る 取り敢えず次のようなgreedyを実行してみる
4.
s→1→2→t に沿って5流す (流したフロー/流せるフロー)
5.
s→1→3→t に沿って5流す これで流せるパスはなくなった
6.
実はまだs→2→1→3→tに沿ってフロー1流すことができる 既にフローをfだけ流した路には最大でfまでフローを「逆流させる」ことができる 以上の手続きでフローの最大値が求まっている(後で証明)
7.
Ford-Fulkerson法 まとめると次のようなアルゴリズムを実行している 1.フローを流す余裕のある辺、またはフローを「逆流できる」辺を用いたsか らtへのパスを見つける 2-A.そのようなパスが存在しなければ終了 2-B.そのようなパスが存在したら、そのパスに流せる限りのフローを流す。1 に戻る Step1でパスの探索はO(|E|)で行うことができ、少なくともフローは1だけ流れ るから、計算量はO(F|E|)
8.
//Ford-Fulkerson's algorithm struct edge{int
to,cap,rev;}; const int INF=1e9; //g[e.to][e.rev] で逆辺を操作できる void addEdge(vector<vector<edge> > &g,int from,int to,int cap){ g[from].push_back((edge){to,cap,(int)g[to].size()}); g[to].push_back((edge){from,0,(int)g[from].size()-1}); } int dfs(vector<vector<edge> > &g,vector<bool> &used,int v,int t,int f){ if(v==t) return f; used[v]=true; for(int i=0;i<(int)g[v].size();i++){ edge& e=g[v][i]; if(!used[e.to] && e.cap>0){ int d=dfs(g,used,e.to,t,min(f,e.cap)); if(d>0){ e.cap-=d; g[e.to][e.rev].cap+=d; return d; } } } return 0; }
9.
int FordFulkerson(vector<vector<edge> >
&g,int s,int t){ int flow=0; for(;;){ vector<bool> used(g.size(),false); int f=dfs(g,used,s,t,INF); if(f==0) return flow; flow+=f; } }
10.
最小カット カット:ある頂点集合𝑆 ⊂ 𝑉に対して、Sから出ていく辺の集合 カットの容量:
カットの各要素の容量の和 𝑠 ∈ 𝑆, 𝑡 ∈ 𝑉 ∖ 𝑆 であるとき、カットに含まれるすべての辺を除去することでsか らtへのパスが存在しなくなる。このようなカット(S,V\S)をs-tカットと呼ぶ。 ここで次の問題を考えることができる 「sからtへのパスが存在しなくなるために除去しなければならない辺の容量の和 の最小値を求めよ」(最小カット問題)
11.
このとき(最小)カットの容量は14である
12.
最大フロー最小カット定理 任意のs-tフローFと任意のs-tカットを考える sourceとsink以外の頂点では出るフローと入るフローは等しいから (Fの流量)=(Sから出る辺の流量) - (Sに入る辺の流量) 従って、 (Fの流量)<=(Sから出る辺の流量)=(カットの容量) これは任意のフローとカットについて成り立つから、あるフローF’について (F’の流量)=(カットの容量) が成り立てばF’は最大フローである。 ここでFord-Fulkerson法で得られるフローは上式を満たす
13.
実際、Ford-Fulkerson法で得られたフローF’’に対して、その点までは フローを流せる又は逆流させられる点の集合をSとすると、(S,V\S)は s-tカットである(もしsからtへのパスが存在すれば、そのパスにそって フローを流しているはず)。ある辺にフローを流せないということは、 既に最大までフローを流していること(或いは全く逆流がないこと)と同 値であるから、 (F’’の流量) =(Sから出る辺の流量) -
(Sに入る辺の流量) =(Sから出る辺の容量) – 0 =(カットの容量) 故にF’’は最大フローである。また、最小カットが最大フローが等しいこ とも示された。
14.
二部マッチング 「二部グラフに対し、互いに端点を共有しないような辺集合の大きさの最大値 を求めよ」
15.
この問題はsinkとsourceを追加することで最大フロー問題に帰着される
16.
最小費用流 流量Fのフローを流したいとする。各辺eには流せるフローの上限c(e)があり、フ ローをx流すとコストがd(e)xかかる。必要なコストの最小値を求めよ
17.
各辺eに流しているフローをfとしたとき、容量がc(e)-f,フローを1流すごとのコス トが-d(e)であるような逆辺をネットワークに追加して、最短路にフローを流して いけば最小コストが得られる。このとき、負のコストをもつ辺があるため、 Dijkstra法ではなくBellman-Ford法を使う。(証明は適当なグラフ理論の本を参照し て下さい)
18.
s→2→tに沿って2流す
19.
s→1→3→2→tに沿って3流す
20.
s→1→3→tに沿って3流す
21.
s→1→2→3→tに沿って1流して流したフローの総量が9になった
22.
実装例 Ford-Furkerson法 http://ideone.com/5LsbdT (Verified by AOJ
1163) 最小費用流 http://ideone.com/WxaIbd (Verified by AOJ 2293)
Download now