問題タブ [union-find]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - union-find + treemap を使用する Java プログラムが遅すぎる
私はこの課題を解決しています: https://open.kattis.com/problems/virtualfriends
私のソリューションは機能しているようですが、kattis のテスト ケースの実行が遅すぎるため、コードの効率を改善するにはどうすればよいか考えていました。これを行うためにカスタムメイドの共用体検索構造を使用し、「友達」をツリーマップに格納して参照しています。
c - さまざまな場合のユニオン検索操作
これは、 Narasimha Karumanchi (disjoint set ADT)によるデータ構造の本からの段落です。
高速検索実装(クイック検索)
このメソッドは配列を使用します。配列には各要素のセット名が含まれています。
この表現では、union(a,b) [a, がセット i にあり、b がセット j にあると仮定して] を実行するには、配列全体をスキャンして、すべての i を j に変更する必要があります。これはO(n)を取ります。
私の質問 1
検索操作に O(1) がかかる場合、完全な配列をスキャンしてすべての i を j に変更する理由
============
(ブック 8.8 セクション)
セット名としてルートを使用する代わりに、各要素の親を格納する配列を使用して、和集合 O(n) を解きます私の2.質問
親を使用してどのように問題を解決しますか? そして、ルートと親のアプローチの両方が、どのようにしてスキュー ツリーを提供するのでしょうか?