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
19
UnionFindのなかま
2021/12月に行われた大LTでの発表資料です
イベントページはこちら
https://zli.connpass.com/event/230124/
matumoto
December 11, 2021
Tweet
Share
More Decks by matumoto
See All by matumoto
Go1.22のリリース予定の機能を見る
matumoto
0
37
GoのUnderlying typeについて
matumoto
0
81
Typed-nilについて
matumoto
0
52
GoのType Setsという概念
matumoto
0
5
GoのRateLimit処理の実装
matumoto
0
87
Webプッシュ通知触ってみた
matumoto
0
23
拡張ユークリッドの互除法の紹介
matumoto
0
48
Goでの楕円曲線暗号の実装
matumoto
0
26
インターン参加記
matumoto
0
20
Other Decks in Technology
See All in Technology
中年男性がメインフレームから クラウドへキャリアシフトしてみた
uechishingo
1
460
20240509 CloudWatch でいろいろなものを監視してみよう
masaruogura
1
110
Password cracking: past, present, future
openwall
0
130
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
5
38k
ハードウェアを動かすTypeScriptの世界
9wick
3
1.1k
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
1.7k
令和版ソフトウェアエンジニアの情報収集術 PHPカンファレンス香川2024
ysknsid25
4
810
Documentação de Produtos: Artefatos essenciais na prática
rigolon
1
270
シンプルなHITL機械学習と様々なタスクにおけるHITL機械学習
naohachi89
0
300
PHP 9 に備えよ - 動的プロパティ、どうすればいぃ?
taisukearase
0
140
AWS Observability ベストプラクティス 大紹介
o11yfes2023
0
130
1Q86
kawaguti
PRO
2
110
Featured
See All Featured
Thoughts on Productivity
jonyablonski
60
3.9k
YesSQL, Process and Tooling at Scale
rocio
165
13k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Optimizing for Happiness
mojombo
370
69k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
20
1.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
228
16k
How to Ace a Technical Interview
jacobian
273
22k
Producing Creativity
orderedlist
PRO
338
39k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
Typedesign – Prime Four
hannesfritz
36
2.1k
GitHub's CSS Performance
jonrohan
1025
450k
Rails Girls Zürich Keynote
gr2m
91
13k
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 など