Upgrade to Pro — share decks privately, control downloads, hide ads and more …

UnionFindのなかま

matumoto
December 11, 2021

 UnionFindのなかま

2021/12月に行われた大LTでの発表資料です

イベントページはこちら
https://zli.connpass.com/event/230124/

matumoto

December 11, 2021
Tweet

More Decks by matumoto

Other Decks in Technology

Transcript

  1. UnionFind のなかま 会津大学 学部 2 年 松本響輝 タイトルついでの⾃⼰紹介 • 会津⼤学コンピュータ理⼯学部コンピュータ理⼯学科(⾧い)

    • 最近はまってるのはライブラリ作成 ◦ https://github.com/matumoto1234/library/ • Nuxt.js や C++ をたまにやる • 競技プログラミングが好き ◦ AtCoder ⽔ 💧 • ゲーム開発も好き
  2. それとなく分かる UnionFind • UnionFind でできること ◦ 連結 ならしO( α (N)

    ) ▪ merge(x, y) := x と y が属する集合をくっつける ◦ 判定 ならしO( α (N) ) ▪ same(x, y) := x と y が属している集合が同じかどうか ※ N は管理する値の数
  3. それとなく分かる UnionFind • UnionFind でできないこと ◦ 辺の削除 ▪ erase(x, y)

    := x と y を繋ぐ辺を削除 ◦ その他 ▪ UnionFind でできること以外
  4. ~ UnionFind の 森 ~ ここは UnionFind の 森 様々な

    UnionFind たちを かんさつ できます
  5. それとなく分かる QuickFind • QuickFind は UnionFind と計算量が違う ◦ 連結 O(

    N ) ▪ merge(x, y) に O( N ) かかってしまう ◦ 判定 O( 1 ) ▪ same(x, y) は O( 1 ) ですむ
  6. QuickFind の仕組み 0 1 2 3 4 0 1 3

    2 4 • 続いて merge(2, 4) が行われると
  7. それとなく分かる Undo 可能 UnionFind • Undo 可能とは? ◦ 操作列を stack

    で管理することで Undo を可能にした • デメリット ◦ 経路圧縮 という工夫ができなくなり、計算量が大きくなる O( α (N) ) → O( log N ) 詳細は略
  8. それとなく分からない 削除可能 UnionFind • 削除可能とは? ◦ 平衡二分探索木を中に取り入れた Linc Cut 木

    (Euler Tour Tree) を使って削 除を可能にした ◦ そもそもデータ構造としての格が違う • デメリット ◦ できなかったことを可能にしているので計算量が大きくなる O( α (N) ) → O( log2 N ) 詳細は略