$30 off During Our Annual Pro Sale. View Details »

ネットワークフロー問題

 ネットワークフロー問題

More Decks by NearMeの技術発表資料です

Other Decks in Technology

Transcript

  1. 0
    ネットワークフロー問題
    2023-06-30 第50回NearMe技術勉強会
    Yuki Nonaka

    View Slide

  2. 1
    目次
    1. グラフの連結度
    2. 最小カット問題
    3. ネットワークフロー
    4. ネットワークフロー問題
    1

    View Slide

  3. 2
    頂点sから頂点tまでの経路で、互いに辺を共有しないs-tパスは最大
    で何本とれるでしょう?
    問題
    2
    s 2
    1
    3
    4
    5
    6
    7
    9 t
    8
    10

    View Slide

  4. 3
    2本
    答え
    3
    s 2
    1
    3
    4
    5
    6
    7
    9 t
    8
    10

    View Slide

  5. 4
    S
    頂点集合Sから出ている辺が2本しかないのでこれ以上にはならない。
    考え方
    4
    s 2
    1
    3
    4
    5
    6
    7
    9 t
    8
    10

    View Slide

  6. 5
    前ページの値をグラフの2頂点s,tに対する辺連結度という。これは、グラフネット
    ワークの頑健性を評価するものとして研究されている。互いに辺を共有しないこと
    を辺素であるという。
    辺連結度
    5
    s 2
    1
    3
    4
    5
    6
    7
    9 t
    8
    10

    View Slide

  7. 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

    View Slide

  8. 7
    辺連結度とカットの最小容量について次のことが成り立つことがわかる。
    さらに次のことも成り立つことが証明されている。
    辺連結度と最小カット問題の関係
    7
    辺素なs-tパスの最大本数 ≦ s-tカットの最小容量
    T
    S
    s 2
    1
    3
    4
    5
    6
    7
    9 t
    8
    10
    辺素なs-tパスの最大本数 = s-tカットの最小容量

    View Slide

  9. 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
    アルゴリズム

    View Slide

  10. 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’

    View Slide

  11. 10
    グラフ構造にエッジ容量を加えたものであり、下図のように各辺には流量の上限
    を表す容量c(e)が設けられている。各辺eに対して流量を表すx(e)が存在する。
    ネットワークフロー
    10
    s
    2
    1
    3 4
    t
    5
    5
    37
    4
    3
    9
    56
    9
    2

    View Slide

  12. 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

    View Slide

  13. 12
    最大流問題は最小カット問題の辺に重みがついたバージョンとして考えることが
    できる。最小カット問題の双対問題である辺連結度の問題があったが、「辺素」と
    いう条件は容量が1の辺に2以上の流量を流せないことに相当する。
    最大流問題はフォード・ファルカーソン法というアルゴリズムで解くことができる。
    (最小カット問題を解くアルゴリズムと本質は同じ。)
    最大流問題
    12

    View Slide

  14. 13
    ネットワークフローを用いて解くことができる問題は色々ある!
    ● 二部マッチング問題
    ● 点連結度
    ● プロジェクト選択問題(露天採鉱問題など)
    応用
    13

    View Slide

  15. 14
    参考文献
    ・アルゴリズムとデータ構造, 大槻兼資(著), 秋葉拓哉(監修), 講談社, 2020
    14

    View Slide

  16. 15
    Thank you

    View Slide