2017-07-21 11 views
1

新たな通りにはn個のアパートがあります。郵便サービスは、1つのメールボックスを通りに置きたいと考えています。彼らの目的は、住民が毎日メールを収集するために歩く距離の総平方根を最小にすることです。直線の距離の二乗和を最小にする

建物iにはr [i]人の住人がおり、道路の先頭から距離d [i]にあります。 居住者がメールボックスに行くために移動する距離の総平方を最小にする郵便箱の距離の最初から距離mを計算するアルゴリズムを考案する。

私の計画は、通りの始まりからの距離に基づいて建物を並べ替えることです。次に、住民の総数を求め、中央値を計算する。メールボックスは、住民の中央値に対応する建物に配置されます。それを解決する正しい方法ですか?

sum(r[i](m-d[i])^2) 

これを解決するために、Mに対する差別:あなたは最小限に抑えたい

+1

号は、グラフ用紙、ラベルx軸とy軸の部分を取ります。郵便受けを通りの一端に置きます。住民が郵便受けに歩いて行かなければならない距離の平方の合計(加重)を計算します。あなたのグラフ用紙上の点に '(0、y(0))'をマークしてください。郵便受けを距離の10分の1の距離の反対側に移動する。グラフ上の点を '(0.1、y(0.1))'にします。通りの反対側の端までずっと繰り返します。放物線のように少しだけ曲線を描いています。あなたの仕事は、 'y'を最小にする' x'の値を見つけることです。 –

+0

'r [i]^2 * d [i]^2'の値に基づいてソートするのはどのような方法ですか?これは最小限に絞られたものですから、そのアレーの中央値を選択するのですか?一言で言えば、**加重二乗距離**を最小限に抑えたい**と思われます。 – CodeHunter

答えて

3

最小値を求めるために

sum(2.r[i].(m-d[i])) 

は、0に導関数を設定します。

0 = sum(2.r[i].(m-d[i])) 
m.sum(r[i]) = sum(r[i].d[i]) 
m = sum(r[i].d[i])/sum(r[i]) 

すなわち、mは距離の加重平均です。

(あなたは絶対距離の総和を最小化したい場合は、答えは代わりに中央値によって与えられるであろう。)

関連する問題