N x M バイナリ マトリックスの束を並べ替えて、最も類似したものが二重リンク リストの隣人になるようにするにはどうすればよいですか?
私は一連の 2 次元バイナリ マトリックスを持っており、相互に最も類似したマトリックスがデータ構造内で互いに「隣接」するように、データ構造内の一連のマトリックスを効率的に並べ替える必要があります。効率的に検索する必要があるマトリックスが 40,000 近くあるため、マップ構造は効率的ではないと思います。
2 つの行列間の距離の公式は次のとおりです。
getSimilarity(matrix toCompare)
//initialize variable "sum" to 0
//for each rowT in this and each rowC in toCompare
//sum += max(rowT,rowC) - bitwiseAnd(rowT,rowC)
// return sum
データ構造を提供する必要さえありません。必要なのは、2 つの行列を比較する方法だけです。これにより、同様の行列が互いにできるだけ近くにクラスター化された結果が得られます。
編集: 12/19/12 1:52PM 私の行はユーザー属性を表し、私の列はページ属性を表します。各マトリックスは、特定のページ属性を持ちながらユーザーが持つ属性を表しています (たとえば、ユーザーの年齢が 42 歳未満で、ページ 4 にアクセスしたことがあるなど)。