Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
170
sync/v2 プロポーザルの 背景と sync.Pool について
matumoto
0
520
Goトランザクション処理
matumoto
1
53
いまいちどスライスの 挙動を見直してみる
matumoto
0
360
Go1.22のリリース予定の機能を見る
matumoto
0
69
GoのUnderlying typeについて
matumoto
0
210
Typed-nilについて
matumoto
0
340
GoのType Setsという概念
matumoto
0
32
GoのRateLimit処理の実装
matumoto
0
420
Other Decks in Technology
See All in Technology
ML PM Talk #1 - ML PMの分類に関する考察
lycorptech_jp
PRO
1
150
原理から解き明かす AIと人間の成長 - Progate BAR
teba_eleven
2
290
その設計、 本当に価値を生んでますか?
shimomura
2
160
Flutter Thread Merge - Flutter Tokyo #11
itsmedreamwalker
1
130
Active Directory 勉強会 第 6 回目 Active Directory セキュリティについて学ぶ回
eurekaberry
16
5.9k
プロダクトマネジメントの分業が生む「デリバリーの渋滞」を解消するTPMの越境
recruitengineers
PRO
3
370
経営から紐解くデータマネジメント
pacocat
9
1.9k
Capture Checking / Separation Checking 入門
tanishiking
0
110
freeeにおけるファンクションを超えた一気通貫でのAI活用
jaxx2104
3
550
タグ付きユニオン型を便利に使うテクニックとその注意点
uhyo
2
440
Kill the Vibe?Architecture in the age of AI
stoth
1
170
MySQL AIとMySQL Studioを使ってみよう
ikomachi226
0
130
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
42
2.9k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
Into the Great Unknown - MozCon
thekraken
40
2.2k
RailsConf 2023
tenderlove
30
1.3k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Balancing Empowerment & Direction
lara
5
780
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Rails Girls Zürich Keynote
gr2m
95
14k
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 など