3

私は 2D 空間にオブジェクトのリストを持っています。もちろん、各オブジェクトには XY 位置と幅と高さがあります。

サイズが最も似ている N 個のオブジェクトを抽出したいと考えています。

例えば:

Size Object 1 : 100 (10 W x 10 H)

Size Object 2 : 150

Size Object 3 : 140

Size Object 4 : 160

Size Object 5 : 140

この場合、N = 4 の場合、返されるリストは次のようになります。Objects: {2,3,4,5}

私の考えは、平均サイズを計算し、平均に最も近いオブジェクトを1つずつ取得することです。しかし、このアプローチは、平均を上回る大きなオブジェクトがある場合には失敗します。

なにか提案を?

皆さん、ありがとうございました!

4

2 に答える 2

0

ブルートフォースは、最小値から最大値までの一連のバケット (リストの配列) を作成することです。1 のデルタから開始します。各要素をループし、val - delta から val + delta までの各バケットに入れます。バケットに n 個の要素があるかどうかを判断します。そうでない場合は、デルタを 1 増やして繰り返します。

別の(おそらくより良いオプション)。サイズごとに並べ替えます。1 のような小さな maxdelta から始めます。次に、各要素 (i) と要素 (i+n) を調べます。i & i+n のデルタが maxdelta より小さい場合、これがセットです (または、追加の要素がある可能性があるため、少なくともセットの開始点)。インクリメントしない場合は、i. セットが見つからない場合は、maxdelta を増やして繰り返します。

于 2013-05-24T17:09:21.623 に答える