Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ネットワークフロー問題
Search
NearMeの技術発表資料です
PRO
June 30, 2023
Technology
0
130
ネットワークフロー問題
NearMeの技術発表資料です
PRO
June 30, 2023
Tweet
Share
More Decks by NearMeの技術発表資料です
See All by NearMeの技術発表資料です
2つの曲線を比較する方法ってあるの? 〜フレシェ距離を試してみた〜 with Python
nearme_tech
PRO
1
18
Constrained K-means Clustering (クラスタサイズの制限をしたK-means法) を調べてみた
nearme_tech
PRO
0
16
VRPの近傍操作SWAP*について調べてみた
nearme_tech
PRO
1
49
新人エンジニアが読んでためになった本
nearme_tech
PRO
2
21
Object–relational mapping and query builder battle 1: Intro to Prisma
nearme_tech
PRO
1
29
深層学習モデルの最適化 -Deep Learning Tuning Playbookを読む-
nearme_tech
PRO
1
52
機械学習を支える連続最適化
nearme_tech
PRO
1
44
サードパーティクッキーの終焉と Topics APIによる代替の可能性
nearme_tech
PRO
1
81
ONNXハンズオン
nearme_tech
PRO
2
28
Other Decks in Technology
See All in Technology
Scaling Technical Excellence at 104: Evolution in AWS and Developer Empowerment
scotthsieh825
1
160
Classmethod流のPlatform Engineering / classmethod-platform-engineering-devio2024
tomoki10
0
480
ACRiルーム最新情報とAMD GPUサーバーのご紹介
anjn
0
160
AIエージェントを現場に導入する目線とは
masahiro_nishimi
1
1.5k
What is DRE? - Road to SRE NEXT@広島
chanyou0311
3
630
ゆめみのアクセシビリティの現在地と今後
ryokatsuse
3
290
AWS IAMのアンチパターン/AWSが考える最低権限実現へのアプローチ概略(JAWS-UG朝会#59資料改修20分版)
htan
0
330
RAGのサービスをリリースして1年3ヶ月が経ちました
segavvy
4
960
Azure OpenAI Service Dev Day / LLMでできる!使える!生成AIエージェント
masahiro_nishimi
3
810
サーバーレスAPI(API Gateway+Lambda)とNext.jsで 個人ブログを作ろう!
shuntaka
PRO
0
560
CEL(Common Expression Language)で書いた条件にマッチしたIAM Policyを見つける / iam-policy-finder
fujiwara3
0
720
エンジニア向け会社紹介資料
caddi_eng
14
230k
Featured
See All Featured
4 Signs Your Business is Dying
shpigford
178
21k
Thoughts on Productivity
jonyablonski
64
4.1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
662
120k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
78
15k
How GitHub Uses GitHub to Build GitHub
holman
471
290k
Designing for Performance
lara
604
67k
GitHub's CSS Performance
jonrohan
1026
450k
Statistics for Hackers
jakevdp
792
220k
Large-scale JavaScript Application Architecture
addyosmani
506
110k
Building a Modern Day E-commerce SEO Strategy
aleyda
25
6.7k
How to Think Like a Performance Engineer
csswizardry
4
590
We Have a Design System, Now What?
morganepeng
46
7k
Transcript
0 ネットワークフロー問題 2023-06-30 第50回NearMe技術勉強会 Yuki Nonaka
1 目次 1. グラフの連結度 2. 最小カット問題 3. ネットワークフロー 4. ネットワークフロー問題
1
2 頂点sから頂点tまでの経路で、互いに辺を共有しないs-tパスは最大 で何本とれるでしょう? 問題 2 s 2 1 3 4
5 6 7 9 t 8 10
3 2本 答え 3 s 2 1 3 4 5
6 7 9 t 8 10
4 S 頂点集合Sから出ている辺が2本しかないのでこれ以上にはならない。 考え方 4 s 2 1 3 4
5 6 7 9 t 8 10
5 前ページの値をグラフの2頂点s,tに対する辺連結度という。これは、グラフネット ワークの頑健性を評価するものとして研究されている。互いに辺を共有しないこと を辺素であるという。 辺連結度 5 s 2 1 3
4 5 6 7 9 t 8 10
6 T S 頂点の集合VをS,Tに分割することをカットといい、Sに始点を持ちTに終点を持つ 辺の本数をカットの容量 c(S,T)と定義した時、最小のc(S,T)はいくつか。 最小カット問題 6 s 2
1 3 4 5 6 7 9 t 8 10 T S s 2 1 3 4 5 6 7 9 t 8 10 c(S,T) = 4 c(S,T) = 2
7 辺連結度とカットの最小容量について次のことが成り立つことがわかる。 さらに次のことも成り立つことが証明されている。 辺連結度と最小カット問題の関係 7 辺素なs-tパスの最大本数 ≦ s-tカットの最小容量 T S
s 2 1 3 4 5 6 7 9 t 8 10 辺素なs-tパスの最大本数 = s-tカットの最小容量
8 基本的にs-tパスを取れなくなるまでとるという 貪欲法に基づいたアルゴリズムで求める。しか し、パスを取った後はパス上の辺に対して逆向 きの有向グラフを張り直した残余グラフを用い て処理を繰り返す。(下図) 辺連結度の求め方 8 s 2
1 3 4 5 6 7 9 t 8 10 s 2 1 3 4 5 6 7 9 t 8 10 パスの本数をf = 0 で初期化 残余グラフG’を元のグラフGで初期化 while G’においてs-tパスPが存在するならば: fを1増やす G’をPに関する残余グラフにする return f アルゴリズム
9 T S T S • 元のグラフGにおいてSから出ている任意の辺は辺素 なs-tパスのいずれかの中に含まれている。 • 元のグラフGにおいてSへ入っている任意の辺は辺素
なs-tパスのいずれにも含まれていない。 辺連結度の求め方 9 s 2 1 3 4 5 6 7 9 t 8 10 s 2 1 3 4 5 6 7 9 t 8 10 S→Tの辺は辺素なs-tパス に一対一対応するので、 c(S,T) = kとなり、kは辺素な s-tパスの最大本数となる。 G G’
10 グラフ構造にエッジ容量を加えたものであり、下図のように各辺には流量の上限 を表す容量c(e)が設けられている。各辺eに対して流量を表すx(e)が存在する。 ネットワークフロー 10 s 2 1 3 4
t 5 5 37 4 3 9 56 9 2
11 流量x(e)に対し、以下の条件を満たすときにフローと呼ぶ。 • 任意の辺eに対して0≦x(e)≦c(e) • 任意のs,t以外の頂点vにおいて、vに入る辺eに対するx(e)の総和と、vか ら出ていく辺eに対するx(e)の総和が等しい また、sから出るxの最大フローを求める問題を最大流問題という。 ネットワークフロー 11
s 2 1 3 4 t 5/5 4/5 1/37 4/4 3/3 2/9 0/56 7/9 2/2
12 最大流問題は最小カット問題の辺に重みがついたバージョンとして考えることが できる。最小カット問題の双対問題である辺連結度の問題があったが、「辺素」と いう条件は容量が1の辺に2以上の流量を流せないことに相当する。 最大流問題はフォード・ファルカーソン法というアルゴリズムで解くことができる。 (最小カット問題を解くアルゴリズムと本質は同じ。) 最大流問題 12
13 ネットワークフローを用いて解くことができる問題は色々ある! • 二部マッチング問題 • 点連結度 • プロジェクト選択問題(露天採鉱問題など) 応用 13
14 参考文献 ・アルゴリズムとデータ構造, 大槻兼資(著), 秋葉拓哉(監修), 講談社, 2020 14
15 Thank you