オブジェクトの大規模なコレクションがあり、それらの間の類似点を把握する必要があります。
正確に言うと、2 つのオブジェクトが与えられた場合、それらの非類似度を数値 (メトリック) として計算できます。値が大きいほど類似度が低くなり、0 はオブジェクトの内容が同一であることを意味します。この数値を計算するコストは、小さいオブジェクトのサイズに比例します (各オブジェクトには特定のサイズがあります)。
オブジェクトが与えられた場合、それに類似したオブジェクトのセットをすばやく見つける機能が必要です。
正確に言うと、任意のオブジェクト o を、d よりも o に似ていないオブジェクトのセットにマップするデータ構造を作成する必要があります。配列またはリンクされたリストにありました(そしておそらく実際にそうです)。通常、セットはオブジェクトの総数よりもはるかに小さいため、この計算を実行することは非常に価値があります。データ構造が固定の d を想定していれば十分ですが、任意の d で機能する場合はさらに優れています。
以前にこの問題、またはそれに類似した問題を見たことがありますか? 良い解決策は何ですか?
正確に言うと、単純な解決策には、オブジェクトのすべてのペア間の非類似度を計算することが含まれますが、これは時間がかかります - O(n 2 ) ここで、n はオブジェクトの数です。複雑さの低い一般的なソリューションはありますか?