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
UnionFindのなかま
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
matumoto
December 11, 2021
Technology
0
41
UnionFindのなかま
2021/12月に行われた大LTでの発表資料です
イベントページはこちら
https://zli.connpass.com/event/230124/
matumoto
December 11, 2021
Tweet
Share
More Decks by matumoto
See All by matumoto
testingを眺める
matumoto
1
180
sync/v2 プロポーザルの 背景と sync.Pool について
matumoto
0
650
Goトランザクション処理
matumoto
1
70
いまいちどスライスの 挙動を見直してみる
matumoto
0
380
Go1.22のリリース予定の機能を見る
matumoto
0
76
GoのUnderlying typeについて
matumoto
0
220
Typed-nilについて
matumoto
0
350
GoのType Setsという概念
matumoto
0
40
GoのRateLimit処理の実装
matumoto
0
460
Other Decks in Technology
See All in Technology
Digitization部 紹介資料
sansan33
PRO
1
7k
2026-02-25 Tokyo dbt meetup プロダクトと融合したCI/CD で実現する、堅牢なデータパイプラインの作り方
y_ken
0
160
トラブルの大半は「言ってない」x「言ってない」じゃねーか!!
ichimichi
0
250
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
3k
Introduction to Bill One Development Engineer
sansan33
PRO
0
380
primeNumber DATA MANAGEMENT CAMP #2:
masatoshi0205
1
650
Webアクセシビリティ技術と実装の実際
tomokusaba
0
180
NW構成図の自動描画は何が難しいのか?/netdevnight3
corestate55
2
520
AIに視覚を与えモバイルアプリケーション開発をより円滑に行う
lycorptech_jp
PRO
1
690
JAWS DAYS 2026 CDP道場 事前説明会 / JAWS DAYS 2026 CDP Dojo briefing document
naospon
0
110
AIエンジニア Devin と歩む、自律型運用プロセスの構築
a2ito
0
490
LLM活用の壁を超える:リクルートR&Dの戦略と打ち手
recruitengineers
PRO
1
180
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
470
Practical Orchestrator
shlominoach
191
11k
What does AI have to do with Human Rights?
axbom
PRO
1
2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Deep Space Network (abreviated)
tonyrice
0
84
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
140
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
160
GitHub's CSS Performance
jonrohan
1032
470k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
280
Transcript
UnionFind のなかま 会津大学 学部 2 年 松本響輝 タイトルついでの⾃⼰紹介 • 会津⼤学コンピュータ理⼯学部コンピュータ理⼯学科(⾧い)
• 最近はまってるのはライブラリ作成 ◦ https://github.com/matumoto1234/library/ • Nuxt.js や C++ をたまにやる • 競技プログラミングが好き ◦ AtCoder ⽔ 💧 • ゲーム開発も好き
UnionFind ってご存じですか?
それとなく分かる UnionFind • UnionFind は素集合を管理するデータ構造 ◦ 素集合とは? 素集合・・・どの集合も要素の交わりを持たない A B
それとなく分かる UnionFind • UnionFind でできること ◦ 連結 ならしO( α (N)
) ▪ merge(x, y) := x と y が属する集合をくっつける ◦ 判定 ならしO( α (N) ) ▪ same(x, y) := x と y が属している集合が同じかどうか ※ N は管理する値の数
UnionFind の仕組み • 木構造になっている 0 1 2 3 4 すでにそれぞれが要素数
1 の集合
UnionFind の仕組み • merge(0, 1) が使われると 0 1 2 3
4
UnionFind の仕組み • 続いて merge(2, 3) が使われると 0 1 2
3 4
UnionFind の仕組み • 続いて merge(2, 4) が使われると 0 1 2
3 4
UnionFind の仕組み • 続いて merge(1, 3) が使われると 0 1 2
3 4
それとなく分かる UnionFind • UnionFind でできないこと ◦ 辺の削除 ▪ erase(x, y)
:= x と y を繋ぐ辺を削除 ◦ その他 ▪ UnionFind でできること以外
実は UnionFind には たくさんの親戚がいます!
~ UnionFind の 森 ~ ここは UnionFind の 森 様々な
UnionFind たちを かんさつ できます
おや...?
仲間になりたそうにこちらを見ています じー
近づいて かんさつ してみますか? ➢ はい Yes
彼を かんさつ します...
彼の正体は QuickFind だったようです! 0 1 2 3 4 0 4
3 1 2
それとなく分かる QuickFind • QuickFind は UnionFind と計算量が違う ◦ 連結 O(
N ) ▪ merge(x, y) に O( N ) かかってしまう ◦ 判定 O( 1 ) ▪ same(x, y) は O( 1 ) ですむ
QuickFind の仕組み • 配列で管理 0 1 2 3 4 0
1 3 2 4
QuickFind の仕組み • merge(0, 1) が行われると 0 1 2 3
4 0 1 3 2 4
QuickFind の仕組み • 続いて merge(2, 3) が行われると 0 1 2
3 4 0 1 3 2 4
QuickFind の仕組み • 続いて merge(2, 3) が行われると 0 1 2
3 4 0 1 3 2 4
QuickFind の仕組み • 続いて merge(0, 2) が行われると 0 1 2
3 4 0 1 3 2 4
QuickFind の仕組み • 続いて merge(0, 2) が行われると 0 1 2
3 4 0 1 3 2 4
QuickFind の仕組み • 続いて merge(2, 4) が行われると 0 1 2
3 4 0 1 3 2 4
QuickFind の仕組み 0 1 2 3 4 0 1 3
2 4 • 続いて merge(2, 4) が行われると
QuickFind は去っていきました
おや...?
仲間になりたそうにこちらを見ていません …
それでも近づいて かんさつ してみますか? ➢ YESYESYES はいはいはい
彼を かんさつ します...
かんさつ する前に逃げられてしまった!
しかし追いつけたので問題ありません
彼の正体は Undo 可能 UnionFind だったようです! 0 1 2 3 4
それとなく分かる Undo 可能 UnionFind • Undo 可能とは? ◦ 操作列を stack
で管理することで Undo を可能にした • デメリット ◦ 経路圧縮 という工夫ができなくなり、計算量が大きくなる O( α (N) ) → O( log N ) 詳細は略
Undo 可能 UnionFind は去っていきました
おや...?
大きな 森 が近づいてきました
大きな 森 が近づいてきました
大きな 森 が近づいてきました
かんさつ してみましょう
彼の正体は 削除可能 UnionFind だったようです!
それとなく分からない 削除可能 UnionFind • 削除可能とは? ◦ 平衡二分探索木を中に取り入れた Linc Cut 木
(Euler Tour Tree) を使って削 除を可能にした ◦ そもそもデータ構造としての格が違う • デメリット ◦ できなかったことを可能にしているので計算量が大きくなる O( α (N) ) → O( log2 N ) 詳細は略
削除可能 UnionFind は去っていきました
どうやら近くの UnionFind はいなくなってし まったようです...
ご清聴ありがとうございました! 紹介しきれなかった親戚 • 部分永続 UnionFind • 完全永続 UnionFind • 重み付き
UnionFind • 重み付き Undo 可能 UnionFind など