Submit Search
Upload
素集合データ構造
•
5 likes
•
6,496 views
京大 マイコンクラブ
Follow
競技プログラミング練習会2014 Normalで使ったスライドです。素集合データ構造であるUnion-Find木について説明しています。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 29
Download now
Download to read offline
Recommended
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
K Moneto
様々な全域木問題
様々な全域木問題
tmaehara
マルコフ連鎖モンテカルロ法と多重代入法
マルコフ連鎖モンテカルロ法と多重代入法
Koichiro Gibo
強化学習入門
強化学習入門
Shunta Saito
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎
Kazuma Mikami
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
Recommended
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
競技プログラミング頻出アルゴリズム攻略
競技プログラミング頻出アルゴリズム攻略
K Moneto
様々な全域木問題
様々な全域木問題
tmaehara
マルコフ連鎖モンテカルロ法と多重代入法
マルコフ連鎖モンテカルロ法と多重代入法
Koichiro Gibo
強化学習入門
強化学習入門
Shunta Saito
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
二部グラフの最小点被覆と最大安定集合と最小辺被覆の求め方
Kensuke Otsuki
部内勉強会 数え上げの基礎
部内勉強会 数え上げの基礎
Kazuma Mikami
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
Motoya Wakiyama
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333
Issei Kurahashi
双対性
双対性
Yoichi Iwata
PRML 上 1.2.4 ~ 1.2.6
PRML 上 1.2.4 ~ 1.2.6
禎晃 山崎
データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析
Seiichi Uchida
はじめてのパターン認識8章サポートベクトルマシン
はじめてのパターン認識8章サポートベクトルマシン
NobuyukiTakayasu
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
Takao Yamanaka
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
智文 中野
アルゴリズムのイメージを擬人化する
アルゴリズムのイメージを擬人化する
AtCoder Inc.
主成分分析
主成分分析
貴之 八木
EMアルゴリズム
EMアルゴリズム
Sotetsu KOYAMADA(小山田創哲)
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
数式を使わずイメージで理解するEMアルゴリズム
数式を使わずイメージで理解するEMアルゴリズム
裕樹 奥田
ACPC 2018 Day3 G: 回文部分列 (Palindromic Subsequences)
ACPC 2018 Day3 G: 回文部分列 (Palindromic Subsequences)
HCPC: 北海道大学競技プログラミングサークル
Chapter2.3.6
Chapter2.3.6
Takuya Minagawa
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
Chokudai search
Chokudai search
AtCoder Inc.
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
幾何コンテスト2013
幾何コンテスト2013
Naoto Mizuno
More Related Content
What's hot
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
Motoya Wakiyama
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Yoichi Iwata
Union find(素集合データ構造)
Union find(素集合データ構造)
AtCoder Inc.
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333
Issei Kurahashi
双対性
双対性
Yoichi Iwata
PRML 上 1.2.4 ~ 1.2.6
PRML 上 1.2.4 ~ 1.2.6
禎晃 山崎
データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析
Seiichi Uchida
はじめてのパターン認識8章サポートベクトルマシン
はじめてのパターン認識8章サポートベクトルマシン
NobuyukiTakayasu
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
Takao Yamanaka
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
智文 中野
アルゴリズムのイメージを擬人化する
アルゴリズムのイメージを擬人化する
AtCoder Inc.
主成分分析
主成分分析
貴之 八木
EMアルゴリズム
EMアルゴリズム
Sotetsu KOYAMADA(小山田創哲)
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
数式を使わずイメージで理解するEMアルゴリズム
数式を使わずイメージで理解するEMアルゴリズム
裕樹 奥田
ACPC 2018 Day3 G: 回文部分列 (Palindromic Subsequences)
ACPC 2018 Day3 G: 回文部分列 (Palindromic Subsequences)
HCPC: 北海道大学競技プログラミングサークル
Chapter2.3.6
Chapter2.3.6
Takuya Minagawa
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Yuto Takei
Chokudai search
Chokudai search
AtCoder Inc.
What's hot
(20)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
指数時間アルゴリズム入門
指数時間アルゴリズム入門
Union find(素集合データ構造)
Union find(素集合データ構造)
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333
双対性
双対性
PRML 上 1.2.4 ~ 1.2.6
PRML 上 1.2.4 ~ 1.2.6
データサイエンス概論第一 5 時系列データの解析
データサイエンス概論第一 5 時系列データの解析
はじめてのパターン認識8章サポートベクトルマシン
はじめてのパターン認識8章サポートベクトルマシン
混合モデルとEMアルゴリズム(PRML第9章)
混合モデルとEMアルゴリズム(PRML第9章)
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
ベルヌーイ分布における超パラメータ推定のための経験ベイズ法
アルゴリズムのイメージを擬人化する
アルゴリズムのイメージを擬人化する
主成分分析
主成分分析
EMアルゴリズム
EMアルゴリズム
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
数式を使わずイメージで理解するEMアルゴリズム
数式を使わずイメージで理解するEMアルゴリズム
ACPC 2018 Day3 G: 回文部分列 (Palindromic Subsequences)
ACPC 2018 Day3 G: 回文部分列 (Palindromic Subsequences)
Chapter2.3.6
Chapter2.3.6
[Basic 9] 並列処理 / 排他制御
[Basic 9] 並列処理 / 排他制御
Chokudai search
Chokudai search
Viewers also liked
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
幾何コンテスト2013
幾何コンテスト2013
Naoto Mizuno
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Inc.
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
TCO2017R1
TCO2017R1
AtCoder Inc.
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
Takuya Akiba
深さ優先探索による塗りつぶし
深さ優先探索による塗りつぶし
AtCoder Inc.
Viewers also liked
(8)
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
幾何コンテスト2013
幾何コンテスト2013
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
TCO2017R1
TCO2017R1
プログラミングコンテストでのデータ構造
プログラミングコンテストでのデータ構造
深さ優先探索による塗りつぶし
深さ優先探索による塗りつぶし
More from 京大 マイコンクラブ
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
京大 マイコンクラブ
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
京大 マイコンクラブ
Common Lisp入門
Common Lisp入門
京大 マイコンクラブ
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
京大 マイコンクラブ
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
京大 マイコンクラブ
Geometry with Unity
Geometry with Unity
京大 マイコンクラブ
セミコロンレスc++
セミコロンレスc++
京大 マイコンクラブ
エンジニアと健康
エンジニアと健康
京大 マイコンクラブ
女の子になれなかった人のために
女の子になれなかった人のために
京大 マイコンクラブ
Pietで競プロしよう
Pietで競プロしよう
京大 マイコンクラブ
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
京大 マイコンクラブ
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
京大 マイコンクラブ
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
京大 マイコンクラブ
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
京大 マイコンクラブ
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
京大 マイコンクラブ
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
京大 マイコンクラブ
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
京大 マイコンクラブ
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
京大 マイコンクラブ
Altseed
Altseed
京大 マイコンクラブ
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
京大 マイコンクラブ
More from 京大 マイコンクラブ
(20)
テキストファイルを読む💪 第1回
テキストファイルを読む💪 第1回
かわいくなろうとしたら語彙力が下がった話
かわいくなろうとしたら語彙力が下がった話
Common Lisp入門
Common Lisp入門
多倍長整数の乗算と高速フーリエ変換
多倍長整数の乗算と高速フーリエ変換
つくってあそぼ ラムダ計算インタプリタ
つくってあそぼ ラムダ計算インタプリタ
Geometry with Unity
Geometry with Unity
セミコロンレスc++
セミコロンレスc++
エンジニアと健康
エンジニアと健康
女の子になれなかった人のために
女の子になれなかった人のために
Pietで競プロしよう
Pietで競プロしよう
もし太陽のコアがIntelCoreだったら
もし太陽のコアがIntelCoreだったら
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
プログラムを高速化する話Ⅱ 〜GPGPU編〜
プログラムを高速化する話Ⅱ 〜GPGPU編〜
ドット絵でプログラミング!難解言語『Piet』勉強会
ドット絵でプログラミング!難解言語『Piet』勉強会
No SSH (@nojima; KMC関東例会)
No SSH (@nojima; KMC関東例会)
DTM練習会2017第1.5回 「伴奏の付け方」
DTM練習会2017第1.5回 「伴奏の付け方」
hideya流 テストプレイ観察術
hideya流 テストプレイ観察術
暗号技術入門 秘密の国のアリス 総集編
暗号技術入門 秘密の国のアリス 総集編
Altseed
Altseed
C#でゲームを作る2016 第8回
C#でゲームを作る2016 第8回
Recently uploaded
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
Recently uploaded
(9)
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
素集合データ構造
1.
素集合データ構造 (Union-Find木)
2.
Union-Find木 ●互いに交わらない集合(素集合)の族を扱うデー タ構造 ●各集合に「代表」と呼ばれる要素を決めておく ●代表が違う⇔集合が違う ●Union-Find木は2つの操作ができる ●集合の要素からその集合の代表を求める(Find) ●2つの集合を合併する(Union)
3.
Find 4 59 10 1 7 11 63 12 2 8 13 代表
4.
Find 4 59 10 1 7 11 63 12 2 8 13 代表
5.
Find 4 59 10 1 7 11 63 12 2 8 13 代表
6.
Find 4 59 10 1 7 11 63 12 2 8 13 代表
7.
Find 4 59 10 1 7 11 63 12 2 8 13 代表
8.
Find 4 59 10 1 7 11 63 12 2 8 13 代表 4の属する集合と8の属する集合は違う!
9.
Union 4 59 10 1 7 11 63 12 2 8 13 代表
10.
Union 4 59 10 1 7 11 63 12 2 8 13 代表
11.
Union 4 59 10 1 7 11 6 3 12 2 8 13 代表
12.
Union-Find木の実装 ●それぞれの集合を根付き木で表す ●代表を根にする 1 5 2 6 3 79 10 11 12 134
8
13.
Find ●親を辿って根を見る 1 5 2 6 3 79 10 11 12 134
8
14.
Find ●親を辿って根を見る 1 5 2 6 3 79 10 11 12 134
8
15.
Find ●親を辿って根を見る 1 5 2 6 3 79 10 11 12 134
8
16.
Find ●親を辿って根を見る 1 5 2 6 3 79 10 11 12 134
8
17.
Union ●一方をもう一方の代表の子にする 1 5 2 6 3 79 10 11 12 134
8
18.
Union ●一方をもう一方の代表の子にする 1 5 2 6 3 7 9 10 11 12 134
8
19.
Union-Find木の計算量 ●このままだと最悪計算量は ●Find ●Union ●Findに時間がかかりすぎる ●2種類の高速化法がある … O(n) O(1)
20.
高速化その1:rank ●それぞれの木に と呼ばれる数値をつける ●要素1個の時 ● 同士の木を合併したら になる ● が違う木同士を合併するときは、 の高 い方に低い方を合併し、 は の高い方の にする ● の木の高さは高々 k rank rank 0 rank k
rank k+1 rank rank rank k rank rank rank
21.
高速化その1:rank 1 5 2 6 3 79 10 11 12 134
8 rank 2 rank 2 rank 1 rank 1
22.
高速化その1:rank 1 5 2 6 3 79 10 11 12 134
8 rank 2 rank 2 rank 1 rank 1
23.
高速化その1:rank 1 5 2 6 3 7 9 10 11 12 134
8 rank 2 rank 2 rank 1
24.
高速化その1:rank ● の木を作るには少なくとも 個の要素が 必要⇒ の木を作るには最低でも 個 の要素が必要(数学的帰納法) ●要素 個のUnion-Find木は高々 ●要素 個のUnion-Find木の高さは高々 ●最悪計算量は ●Find ●Union rank k 2k rank
k+1 2k+1 n rank⌊log2(n)⌋ n ⌊log2(n)⌋ O(log(n)) O(1)
25.
高速化その2:経路圧縮 ●Findするときに、根を親にしてしまう ●ついでに根にたどり着くまでの先祖の親も根にして しまう ●重要なのは根の情報だけだからこれで問題ない
26.
高速化その2:経路圧縮 1 5 2 6 3 7 9 10 11 12 13 4
8
27.
高速化その2:経路圧縮 1 5 2 6 3 7 9 10 11 12 13 4
8
28.
高速化その2:経路圧縮 1 5 2 6 3 79 10 11 12 13 4 8
29.
高速化その2:経路圧縮 ●最悪計算量(ならし) ●Find ●Union ●高速化その1と組み合わせることもできる ●経路圧縮しても は再計算しない ●Find ●Union ● はアッカーマン関数の逆関数、実質定数 O(log(n)) O(1) O(α(n)) O(1) rank α(n)
Download now