[解決済み] n個のユニオンのfind(サイズによるユニオン)演算を実行する際の時間計算量がO(n log n)であるのはなぜか?
疑問点
ユニオン検索操作のツリーベースの実装では、各要素はノードに格納され、そのノードにはセット名へのポインタが含まれます。セットポインタがvを指すノードvもまた、セット名である。各セットは、自己参照セットポインタを持つノードをルートとするツリーである。
結合を行うには、一方の木の根を他方の木の根に一致させればよい。検索を行うには、開始ノードからセット名ポインタをたどって、セット名ポインタが自分自身を参照するノードに到達するまでの間、検索を行う。
サイズ別ユニオンの場合 -> ユニオンを実行する場合、小さい方のツリーの根を が大きい方の根を指す。このことから、O(n log n)時間 n回のunion find操作を行う。ポインタをたどるたびに、前のサブツリーの最大2倍の大きさのサブツリーに行くことになる。従って、どの検索でも最大O(log n)個のポインタをたどることになる。
各単一化操作に対して、Find操作が常にO(log n)であることが理解できないのですが。どなたか、最悪の場合の複雑さが実際にどのように計算されるのか、説明していただけませんか?
どのように解決するのですか?
とりあえず、高さhの各木は少なくとも2^hのノードを含むと仮定してみよう。このような木を2つ連結するとどうなるでしょうか?
サイズが異なる場合、結合された木の高さは高い方の木の高さと同じになるので、新しい木は依然として2^h以上のノードを持ちます(高さは同じですがノードの数が増えます)。
さて、もし同じ高さであれば、出来上がった木は高さが1つ増え、少なくとも2^h + 2^h = 2^(h+1)のノードを含むことになります。つまり、この条件はまだ成立します。
最も基本的な木(1ノード、高さ0)でも条件を満たす。したがって、2本の木をつなげて作ることができる木はすべてこの条件を満たすことになる。
さて、高さとは、単に検索時にたどるステップの最大数である。木がn個のノードと高さh(n >= 2^h)を持つ場合、これは直ちにlog2(n) >= h >=ステップを与えます。
関連
-
[解決済み] どちらが大きいですか?O(log*n)とO(loglog n)
-
[解決済み] 再帰の複雑さ T(n) = T(n-1) + T(n-2) + C
-
[解決済み] DFSとBFSの時間計算量がともにO( V + E )であるのはなぜか?
-
[解決済み] Zip爆弾はどうやって作るの?
-
[解決済み] O(n)の整数ソートアルゴリズムはあるか?
-
[解決済み] 40 億の整数以外の整数を生成する。
-
[解決済み】アルゴリズムの時間複雑性を求めるには?
-
[解決済み】ソートアルゴリズムにおける安定性とは何ですか、なぜそれが重要なのですか?
-
[解決済み】ssl証明書はどのように検証されるのですか?
-
[解決済み】iTunes 11の曲リストに色をつけるアルゴリズムはどうなっているのでしょうか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TSPの場合、Held-Karpアルゴリズムは、Brute-forceのO(n!)からO(2^n*n^2)に時間複雑性をどのように減少させるのでしょうか?[クローズド]
-
[解決済み] Breadth First Searchの時間複雑性解析
-
[解決済み] n個のユニオンのfind(サイズによるユニオン)演算を実行する際の時間計算量がO(n log n)であるのはなぜか?
-
[解決済み] バックトラックアルゴリズムの時間計算方法は?
-
[解決済み] 最大スパニングツリーの求め方は?
-
[解決済み] 深さ優先グラフアルゴリズムの時間複雑性【非公開
-
[解決済み】Redisに使用されている基礎的なデータ構造は何ですか?
-
[解決済み】美観を損なわないカラーパレットをランダムに生成するアルゴリズム【終了しました
-
[解決済み】ssl証明書はどのように検証されるのですか?
-
[解決済み】固定長 6 int 配列の最速ソート