More Related Content
Similar to Faster matroid intersection
Similar to Faster matroid intersection (20)
Faster matroid intersection
- 6. マトロイド
定義
マトロイドとは有限集合𝐸とその部分集合族𝐹 ∈ 2 𝐸の組(𝐸, 𝐹)で
あって以下の条件を満たすもの
• ∅ ∈ 𝐹
• 𝑋 ⊂ 𝑌 ∈ 𝐹 ⇒ 𝑋 ∈ 𝐹
• 𝑿, 𝒀 ∈ 𝑭, 𝑿 > 𝒀 ⇒ ∃𝒙 ∈ 𝑿𝒀 𝒔. 𝒕. 𝒀 ∪ 𝒙 ∈ 𝑭
用語
独立集合 … 𝐹の要素(𝐹の要素は集合)
基 … 𝐹の極大要素(基のサイズは等しい)
6
- 7. • 分割マトロイド
• 色付きの点集合が与えられる
• 各色高々1つまで選んでできる点集合を独立集合とする
• 基は各色から1つ選んでできる点集合
• 閉路マトロイド
• グラフ𝐺(𝑉, 𝐸)が与えられる
• 辺集合であって閉路を含まないものを独立集合とする
• 𝐺が連結なら基は全域木
マトロイドの例
7
- 8. マトロイドの応用例
• マトロイド(𝐸, 𝐹)とコスト関数𝑐: 𝐸 → ℝ≥0が与えられたとき、
独立集合のうちコスト最大のものが貪欲法で求められる
• 重み付きの色付き点集合が与えられる
• 各色高々1つまで選べるとき重みを最大化せよ
→ 分割マトロイドなので貪欲に解ける(直感的にもok)
• 辺が重みづけられたグラフが与えられる
• 最大全域木を求めよ
→閉路マトロイドなので貪欲に解ける
→少し工夫すると最小全域木も求められる(Kruskal法)
8
- 15. 本論文の貢献(再訪)
Edmonds … 𝑂 𝑛𝑟2
𝑇𝑖𝑛𝑑 時間
Cunningham … 𝑂(𝑛𝑟1.5 𝑇𝑖𝑛𝑑)時間
Lee, et al. … 𝑂(𝑛2 𝑇𝑖𝑛𝑑 + 𝑛3)時間
本論文 … 𝑶(𝒏𝒓 𝐥𝐨𝐠 𝒓 ⋅ 𝑻𝒊𝒏𝒅)時間
(厳密には𝑶( 𝒏𝒓 + 𝒓 𝟐
𝐥𝐨𝐠 𝒓 𝑻𝒊𝒏𝒅)時間)
15
マトロイド交差問題
重みなし・独立集合オラクル 最初の多項式時間
アルゴリズム
State-of-the-art
だった
𝑛は頂点数
𝑟はマトロイド交差のサイズ
- 17. 交換グラフ
• 今持っている共通独立集合をA ∈ 𝐹1 ∩ 𝐹2とする
• 𝐴と𝐸Aの二部グラフに2点付け加えたグラフを考える
17
𝐴 𝐸A
𝑠
𝑡
𝑠から𝑡への最短経路上には𝐸Aの点が𝐴の点よりも1つ多く存在する
最短経路上の𝐸Aの点を𝐴に追加し、最短経路上の𝐴の点を𝐴から削除する
新しい𝐴が共通独立集合になるように辺を張る
- 18. 交換グラフ
18
𝐴 𝐸A
𝑠
𝑡
𝑣 ∈ 𝐸A 𝑠. 𝑡. 𝐴 + 𝑣 ∈ 𝑭 𝟏に
𝑠から辺が伸びている
𝑣 ∈ 𝐸A 𝑠. 𝑡. 𝐴 + 𝑣 ∈ 𝑭 𝟐から
𝑡に辺が伸びている
𝑣 ∈ 𝐸A 𝑠. 𝑡. 𝐴 + 𝑣 ∈ 𝐹1 ∩ 𝐹2なる𝑣が存在したら
𝑠 → 𝑣 → 𝑡の最短経路が存在するので𝑣を𝐴に追加
- 19. 交換グラフ
19
𝐴 𝐸A
𝑠
𝑡
𝑣1 ∈ 𝐸A, 𝑣2 ∈ 𝐴 𝑠. 𝑡. 𝐴 − 𝑣2 + 𝑣1 ∈ 𝑭 𝟐に
𝑣1 → 𝑣2の辺が伸びている
𝑣1 ∈ 𝐸A, 𝑣2 ∈ 𝐴 𝑠. 𝑡. 𝐴 − 𝑣2 + 𝑣1 ∈ 𝑭 𝟏に
𝑣2 → 𝑣1の辺が伸びている
𝑀1の独立集合を𝑀2の独立集合
にもなるように要素を1つ削除
𝑀1かつ𝑀2の独立集合を𝑀1の独立
集合になるように要素を1つ追加
- 24. 本論文のアイディア2 ~距離の利用~
• 交換グラフ上の𝒔からの距離の単調性(Cunningham)
• Edmondsのアルゴリズムによって得られる交換グラフを 𝐺0, … , 𝐺𝑟 とし、
それぞれのグラフ上での距離を𝑑0, … , 𝑑 𝑟とする
• 0 ≤ 𝑖 < 𝑗 ≤ 𝑟, 𝑣 ∈ 𝑉について、𝒅𝒊 𝒔, 𝒗 ≤ 𝒅𝒋 𝒔, 𝒗 が成り立つ
• 交換グラフ上の𝑠から各頂点への距離は広義単調増加する
• 各頂点について𝑠からの距離を常に保持しておき、更新が必要
な時だけ更新する
• 更新の回数は各頂点につき高々𝑂(𝑟)回
• 全体で𝑂(𝑛𝑟)回
24
- 28. 距離の計算
• 距離𝑙の頂点集合を𝐿𝑙とおく
• 𝐿𝑙+1の計算(𝑙 + 1は奇数、𝐿𝑖 (𝑖 ≤ 𝑙)は既に計算済み)
• 𝐿𝑙+1の候補の頂点𝑣について考える
• 𝐿𝑙から𝑣に辺が伸びているかの判定は𝑂(𝑇𝑖𝑛𝑑)でできる
• 共通独立集合に𝑣を加えるには𝐿𝑙の何を消せばよいか
• 辺があったら𝐿𝑙+1に𝑣を追加
• 辺が無かったら𝑳𝒍+𝟑の候補に𝑣を追加
• 𝐿𝑙+1の候補が空になるまで繰り返す
28
各頂点について距離の更新は高々O(2𝑟)回
奇数距離の頂点数は𝑂(𝑛)
全体で𝑂(𝑛𝑟 ⋅ 𝑇𝑖𝑛𝑑)時間
候補は距離の下限を意味しており、
初期値は前回の距離の値(単調性)
- 29. 距離の計算
• 𝐿𝑙+1の計算(𝑙 + 1は偶数、𝐿𝑖 (𝑖 ≤ 𝑙)は既に計算済み)
• 初期状態では𝐿𝑙+1にはその候補(以前の距離)が入っている
29
𝑏から𝑄への辺を見つける
存在すれば𝑂(log |𝑄| ⋅ 𝑇𝑖𝑛𝑑)時間
存在しなければ𝑂(𝑇𝑖𝑛𝑑)時間
外側のwhile文は𝑂(𝑛𝑟)回呼ばれる
内側のwhile文の中には𝑂(𝑟2
)回入る( 𝑄 ≤ 𝑟)
全体で𝑂( 𝑛𝑟 + 𝑟2 log 𝑟 ⋅ 𝑇𝑖𝑛𝑑)時間