1

ソートされたリストを含むArraysListがMあります。Arraylistの各リストのサイズは同じですN。次に、各リストの最初の対応する値を他のリストと比較(N-1) し、同じ最初の値を持つリストを見つけたいと思い(N-1)ます。直感的には、2つのforループで実行できますが、複雑さはと同じくらい高くなる可能性がありますM*N*N。これを行うためのより良いアルゴリズムがあるかどうか疑問に思いました。ちなみに、M非常に大きい数になる可能性がありますNが、小さい数になる傾向があります。

申し訳ありませんが、はっきりしないかもしれません。最終的な出力は、同じ最初の(N-1)値を持つリストのペアである必要があります。

4

2 に答える 2

3

優れたハッシュアルゴリズムを使用して、N-1各行のアイテムのハッシュコードを計算します。行をハッシュコードで整理し、ハッシュコードが一致する場合にのみ完全比較を行います。

于 2012-09-10T01:47:15.050 に答える
0

リストのリストを並べ替えます。

それらをソートすることはO(N M LOG M)(比較がであると仮定してO(N))です。

基数ソートのアプローチでこれを行う場合、実際には、より多くの行、O(N * M)またはO(M LOG M) 合計でさえあるはずです(リストが同一ではないと仮定します)。

次に、同じプレフィックスを持つリストがこのリストの後続である必要があります。

APRIORIを再実装しようとしていると仮定すると、はい、候補アイテムセットのソートされたリストを保持してください。これはまさに、Apriori-Genが次のラウンドの候補者を構築するために必要なものです。ソートされたツリーとしてそれらを整理しておくことは、アイテムセットをカウントするためにデータベースをスキャンするときにも高速であるため、非常に便利です。

于 2012-09-14T13:35:32.693 に答える