2

コミュニティサブレット広告のWebサイトでこれを実行しようとしていますが、理論的には、アルゴリズムはどのローカル検索でも同様です。

検索するエリアの人口が少ないほど、検索するデフォルトの半径は高くなります。一方、人口密度の高い地域では、地域の関連性を維持するために、デフォルトの半径を低くする必要があります。

これはプログラミングの質問というよりは数学的な質問かもしれませんが、コードは大歓迎です。これまで、各町や村から15マイル以内のサブレットの量を計算し、密度の概算としてデータベースに保存しました。この番号を使用して、誰かが町や村を検索するときに、検索をどこまで進めるかを判断するつもりでした。

提案された解決策をテストするために、アルゴリズムで考え出してもらいたいおおよその数値をいくつか引き出しました。ポイントから15マイル以内に多数のサブレットがある場合、たとえば30kの場合、検索するデフォルトの半径を約3マイルにします。1または2と言うことがほとんどない場合、デフォルトの半径は25マイルまで高くなり、周囲に場所がない場合はさらに多くなります。たとえば〜1,000のサブレットがあるミッドレンジエリアのデフォルトの半径は15マイルです。これらは単なる例であり、密度はデータベース内のさまざまなものによってコース外で拡大または縮小します。

Population -> Default search radius
0          -> very high (~60 miles or more)
1          -> 25 miles
1k         -> 15 miles
30k        -> 3 miles

私は正しい方向に進んでいますか?コード中心の回答には、PythonまたはPHPが推奨されます。

ありがとうございました

4

1 に答える 1

1

合理的なアプローチは、同じ数の人々が含まれるように地域を定義することです。そうすれば、各地域で利用可能なアパートの数はほぼ同じになります。

これを数学的に書くには:

N = total number of people within a region
d = population density of the region (taken to be what you list as population)
A = Area of region
R = Radius of the region A

だから、、N = d*A = d*pi*R*Rそして私たちはN定数になりたいのでR = K*sqrt(1/D)、ここで、Kはあなたの数、または約500マイルに一致するように選択された定数です。それで、

30K    ->   2.9  miles
 1K    ->   16   miles
  1    ->   500  miles

したがって、最初の2つで機能しますが、1の母集団の極端なケースではありません(ただし、1がすべて独自の特別なケースではなく、本当に重要なケースであるかどうかは明らかではありません)。とにかく、このアプローチはある程度意味があり、少なくとも考慮すべきことがあると思います。

于 2012-04-09T23:15:31.483 に答える