問題タブ [disjoint-sets]

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.

0 投票する
2 に答える
44 参照

python - PythonのリストAにないリストB k個の異なる要素を選択しますか?

順序付けられていないlistA = [1 2 3]st すべての要素が別個
であり、順序付けられていないlistB = [1 2 3 4 5]st すべての要素が別個であるとします。

元の質問は次のとおりでした:
listA になく、互いに異なる listBlen(listA)の要素である時間を 選択するにはどうすればよいですか 。

更新:
listA になく、互いに異なる listBlen(listB)-len(listA)の要素である時間を 選択するにはどうすればよいですか 。

更新されたケースの場合、Pynchia からの回答は次のようになります。
newList = list(set(bRightbLeft) - set(aLeft))[:len(bRightbLeft)-len(aLeft))]

0 投票する
1 に答える
150 参照

java - DisjSet Maze Builder で Null ポインター Excpetion が発生し、その理由がわかりません

DisjSet アルゴリズムを使用して迷路を構築しようとしています。落ち着いた気がしますが、何らかの理由で、使用しているクラスの 1 つでこのヌル ポインター例外が発生し続ける理由がわかりません。どんな助けでも大歓迎です

メイズクラスです

これはDisjSetクラスです

これは順列クラスです

エラーは

そして、それはすべて順列クラスのこのコード行を指しています

前もって感謝します

0 投票する
2 に答える
6593 参照

algorithm - 配列ベースの素集合データ構造の時間計算量

私はCodeChef でこの質問を解決し、社説を読んでいました。

実装された素集合アルゴリズムの疑似コードは次のとおりです。

unionとの時間計算量はfind?

IMO、時間の複雑さfindO(depth)であるため、最悪の場合、パス圧縮を使用していない場合、複雑さは O(n) になります。unionも使用するためfind、O(n) の複雑さも持ちます。代わりにfindfromを破棄し、union代わりに 2 つのセットの親を に渡すとunion、 の複雑さunionは O(1) になります。私が間違っている場合は、私を修正してください。

パス圧縮が適用される場合、時間計算量はどのくらいですか?

0 投票する
0 に答える
208 参照

c++ - Money Matters uVA 11690 は、複数回の試行後に「間違った回答」と「時間制限を超えました」を返す

問題へのリンクは次のとおりです

以下は私の実装です。私は彼らのサンプルテストケースと他の複数のテストケースを試しましたが、それらはすべて正しい答えを出します。しかし、送信すると、間違った回答が返ってきます。この前に、これをベクトルのベクトルで実装しましたが、「時間制限を超えました」というメッセージが表示されました。コードの何が問題なのかわかりません。誰かが私のソリューションが失敗しているテストケースを特定するのを手伝ってくれれば幸いです。

0 投票する
0 に答える
476 参照

python - Python での素集合の初期化

素集合に関するコードの一部があります。

検索、マージ、初期化機能を追加したい。コードの先頭では、各関数が何をしなければならないかを示しています。私はすでに見つけてマージしましたが、それらが正しいことを願っています。ただし、初期化関数を取得できません。セットごとに 1 つの要素を持つ新しいセット システムを返すようにする方法がわかりません。皆さん、それで私を助けてくれませんか?

以下は、私の検索およびマージ機能です。

0 投票する
1 に答える
761 参照

algorithm - ランクによる結合なしでパス圧縮を使用してセットを検索

n 個の単一ノード ツリーがあり、m 個の集合演算が見つかり (注: 結合が以前に行われたと仮定すると、結合はありません)、パス圧縮のみを使用する場合、これには O(m) 時間がかかるというのは本当ですか? 私はこれを証明しようとしてきましたが、そうではないようです。ユニオンはランクによるユニオンを使用しなかったため、検索セットには最大で O(n) の時間がかかる場合があります。しかし、m 個の検索セットを O(m) 時間で実行することはまだ可能ですか?

0 投票する
1 に答える
192 参照

algorithm - 特別な方法でバラバラなセット?

ツリーを使用して Disjoint Data 構造を実装します。このデータ構造でmakeset()は、1 つの要素を持つセットを作成し、セットのmerge(i, j)2 つのツリーをマージして、高さの低いツリーが 2 番目のツリーのルートの子になるようにします。操作と操作をランダムに実行してから、検索操作を 1 回実行するとします。最悪の場合、この検索操作のコストはいくらですか?ijn makeset()n-1 merge()

答え: IV.

著者がこの解決策を得るための良いヒントについて言及できる人はいますか?