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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
matumoto
December 11, 2021
Technology
47
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UnionFindのなかま
2021/12月に行われた大LTでの発表資料です
イベントページはこちら
https://zli.connpass.com/event/230124/
matumoto
December 11, 2021
More Decks by matumoto
See All by matumoto
Go標準パッケージのI/O処理をながめる
matumoto
0
440
testingを眺める
matumoto
1
220
sync/v2 プロポーザルの 背景と sync.Pool について
matumoto
0
790
Goトランザクション処理
matumoto
1
87
いまいちどスライスの 挙動を見直してみる
matumoto
0
420
Go1.22のリリース予定の機能を見る
matumoto
0
90
GoのUnderlying typeについて
matumoto
0
240
Typed-nilについて
matumoto
0
380
GoのType Setsという概念
matumoto
0
58
Other Decks in Technology
See All in Technology
Digitization部 紹介資料
sansan33
PRO
2
7.7k
Retriever と Reranker、結局どうする?
kazuaki
2
670
GitHub CopilotのFinOps- AI CreditのObservabilityと価値を生むためのエージェント設計
yuriemori
0
120
AIが自社のTableauを操作する世界へ:Tableau MCP超入門
tbtykk
0
110
クラウドセキュリティ入門 ~安全なクラウド利用のための基礎知識~
lhazy
9
7.7k
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
190
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
150
AIコーディングの次。コードレビューと理解負荷を解消して組織の開発生産性を高める
moongift
PRO
0
200
制約理論(ToC)入門 2026版
recruitengineers
PRO
5
1.5k
攻撃と防御で学ぶAI時代のプロダクトセキュリティ演習
recruitengineers
PRO
1
420
【CEDEC2026】コードレビュー支援ツール開発から学ぶ:LLMを用いた業務システムの実践的な運用設計と誤出力対策
cygames
PRO
0
570
取引先から届く 「セキュリティチェックシート」の読み解き方
kamadamakoto
0
120
Featured
See All Featured
Bash Introduction
62gerente
615
220k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
240
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
360
Large-scale JavaScript Application Architecture
addyosmani
515
110k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
ラッコキーワード サービス紹介資料
rakko
1
4.2M
The agentic SEO stack - context over prompts
schlessera
0
860
Marketing to machines
jonoalderson
1
5.6k
Docker and Python
trallard
47
4.1k
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 など