disjoint-sets

    1

    1答えて

    私は組合発見問題について読んできました。 2つの主な改善点は、パス圧縮とランク別の結合です。私が知る限り、ランクごとにunionを使用して、分離したツリーを結合する方法を決定します。 2つの互いに素なツリーT1およびT2がある場合、より高いランクのツリーに、より小さなランクのツリーのルートをアタッチします。パス圧縮を使用しない場合、ランクはツリーの深さに過ぎません。これは、木の深さを増やしたいとは

    1

    1答えて

    拡張パスを検出する最も簡単な方法は何ですか?ループフィンランドへ、どのようにしながら、 def paths(G, s, t): # Edge-disjoint path coun H, M, count = tr(G), set(), 0 # Transpose, matching, result while True: # Until the

    2

    1答えて

    オンラインコンテストでこの問題が発生しました。私は、ディスジョイントセットデータ構造を使用してこの問題を解決しようとしています。 問題定義: ボブは修学旅行中に原子力発電所を訪問します。彼は植物に核ロッドがないことを観察し、核ロッドの初期効率は1である。ある期間の後、核ロッドは互いに融合し始め、グループを形成する。このプロセスは、核ロッドの効率をグループの大きさの平方根に減少させる。奇妙な学生であ

    2

    4答えて

    複数のイテラブルのリストがある場合、すべてのアイテムがdisjointであるかどうかをテストします。 二組は、それらが共通 例には要素がない場合互いに素であると言われている : iterables = ["AB", "CDE", "AF"] all_disjoint(iterables) # False iterables = ["AB", "CDE", "FG"] all_disjoi

    3

    2答えて

    データフレームを属性'ids'によって2つの互いに素なセットにランダムに分離する必要があります。たとえば、次のデータフレームを検討:私は2つを取得する必要が df= Out[470]: 0 1 2 3 ids 0 17.0 18.0 16.0 15.0 13.0 1 18.0 16.0 15.0 15.0 13.0 2 16.0 15.0 15.0 16.0

    1

    3答えて

    2つの辞書が交差点を計算するよりも簡単で簡単な方法がありますか?交差点の場合 は私がthis answerを見つけたので、ばらばらのテストは次のようになります。 def dicts_disjoint(a, b): keys_a = set(a.keys()) keys_b = set(b.keys()) intersection = keys_a & keys_b

    -1

    1答えて

    個別のマッチングパターンについて質問があります。一致するパターンは、それぞれのケースが他のケースを踏んでいないときには互いに素である。 def func(list: List[Int]): Int = list match { case Nil => 0 case x::t if (x < func(t)) => x case x::t => func(t) }

    0

    1答えて

    '1(雲)と' 0(晴天)からなる2DグリッドskyMapがある場合、雲の数を数えます。 雲は澄んだ空に囲まれ、隣接する雲を水平または垂直に接続することで形成されます。 skyMapの4つのエッジはすべて、澄んだ空に囲まれていると仮定できます。出力があるべき countClouds(skyMap) = 2; skyMap = [['0', '1', '0', '0', '1'],

    0

    1答えて

    切断されたすべてのグラフを見つけるためにどのアプローチを使用すべきですか? 両方トラバーサル DFSと BFS としてトラバーサル方法であり、複数のトラバースによる。すべての接続されていないコンポーネントが見つかります。 もう1つの方法は、接続されていないコンポーネントを見つけるためにkruskal(MST)で使用されているように、のように、ディスジョイントセットにすることができます。

    2

    1答えて

    私はそのような有用なデータ構造がC++ Standard Libraryに含まれることを期待していましたが、それを見つけることができません。