1
[
   [
      [2,33,64,276,1],
      [234,5,234,7,34,36,7,2],
      []
   ]
   [
      [2,4,5]
   ]
   .
   .
   .
   etc
]

上記の構造は単なる例であるため、これに対する正確な解決策を探しているわけではありません。ランダムに並べられた ID のグループ内で、数レベル深くネストできる ID を検索しようとしています。

現在、最も深いレベルのそれぞれに数百の ID がある場合、結果を得るのに数分かかる線形検索を行っています。複数レベルのランダムデータを検索するためのより高速なアルゴリズムを誰かが提案できるかどうか疑問に思っていましたか? それが重要な場合、私はPythonでこれを行っています。

注: ID は常に最も深いレベルにあり、レベルの数は分岐ごとに一貫しています。それが重要かどうかはわかりません。

また、データ ポイントは一意であり、繰り返すことはできません。私の例では、キーボードを叩いていたため、いくつかの繰り返しがあります。

4

1 に答える 1

3

ランダム データの最速の検索は線形です。データがネストされていないふりをしても、データはランダムであるため、平坦化しても役に立ちません。

時間の複雑さを減らすために、スペースの複雑さを増やすことができます-IDをキーとして含むdictと、必要な情報(おそらく、各レベルでIDを含むリストを指すインデックスのリスト)を保持し、毎回更新します要素を作成/更新/削除します。

于 2012-06-08T14:19:03.170 に答える