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
matumoto
December 11, 2021
Technology
0
37
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
160
sync/v2 プロポーザルの 背景と sync.Pool について
matumoto
0
400
Goトランザクション処理
matumoto
1
52
いまいちどスライスの 挙動を見直してみる
matumoto
0
350
Go1.22のリリース予定の機能を見る
matumoto
0
69
GoのUnderlying typeについて
matumoto
0
200
Typed-nilについて
matumoto
0
320
GoのType Setsという概念
matumoto
0
29
GoのRateLimit処理の実装
matumoto
0
370
Other Decks in Technology
See All in Technology
AI時代こそ求められる設計力- AWSクラウドデザインパターン3選で信頼性と拡張性を高める-
kenichirokimura
3
310
防災デジタル分野での官民共創の取り組み (2)DIT/CCとD-CERTについて
ditccsugii
0
290
「れきちず」のこれまでとこれから - 誰にでもわかりやすい歴史地図を目指して / FOSS4G 2025 Japan
hjmkth
1
310
Adminaで実現するISMS/SOC2運用の効率化 〜 アカウント管理編 〜
shonansurvivors
4
450
E2Eテスト設計_自動化のリアル___Playwrightでの実践とMCPの試み__AIによるテスト観点作成_.pdf
findy_eventslides
2
620
プロダクトのコードから見るGoによるデザインパターンの実践 #go_night_talk
bengo4com
1
2.5k
Performance Insights 廃止から Database Insights 利用へ/transition-from-performance-insights-to-database-insights
emiki
0
270
エンタメとAIのための3Dパラレルワールド構築(GPU UNITE 2025 特別講演)
pfn
PRO
0
310
Introduction to Bill One Development Engineer
sansan33
PRO
0
300
2025-10-09_プロジェクトマネージャーAIチャンス
taukami
0
140
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.2k
いまからでも遅くない!SSL/TLS証明書超入門(It's not too late to start! SSL/TLS Certificates: The Absolute Beginner's Guide)
norimuraz
0
230
Featured
See All Featured
BBQ
matthewcrist
89
9.8k
Building an army of robots
kneath
306
46k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Facilitating Awesome Meetings
lara
56
6.6k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Designing for humans not robots
tammielis
254
26k
How to Ace a Technical Interview
jacobian
280
24k
Unsuck your backbone
ammeep
671
58k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
115
20k
The Straight Up "How To Draw Better" Workshop
denniskardys
238
140k
Code Reviewing Like a Champion
maltzj
526
40k
Done Done
chrislema
185
16k
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 など