2010-09-01 42 views
9

實際的問題是這樣的:最小化總:優化問題

麥當勞計劃開設一些關節(說N)沿直線高速公路。這些關節需要倉庫來儲存食物。倉庫可以存儲任意數量的關節的食物,但必須僅位於其中一個關節處。 McD擁有數量有限的倉庫(比如說k),並且希望將它們放置在距離最近的倉庫的平均關節距離最短的地方。

給定一個關節座標的數組(n個元素)和一個整數'k',返回一個'k'元素數組,給出倉庫的最佳定位座標。

對不起,我沒有任何可用的例子,因爲我從內存中寫下來。無論如何,一個樣本可能是:

陣列= {1,3,4,5,7,7,8,10,11}(N = 9)
k = 1時

答案:{7 }

這就是我一直在想的:對於k = 1,我們可以簡單地找出該集合的中值,這將給出倉庫的最佳位置。然而,對於k> 1,給定的集合應該被劃分爲'k'個子集(不相交的,以及超集的連續元素),並且每個子集的中值將給出倉庫位置。但是,我不明白'k'子集應該形成在什麼基礎上。提前致謝。

編輯:這個問題也有一個變化:代替sum/avg,最小化一個關節和它最近的倉庫之間的最大距離。我也沒有得到這個..

+0

這是功課嗎?如果是這樣,請將其標記爲。 – 2010-09-01 16:18:39

+0

這是一場比賽。 – 2010-09-01 16:29:56

+0

@ArpitTarang我遇到了同樣的問題。你能解決它嗎? – user3634974 2015-02-21 15:51:47

回答

0

直行高速公路使得這是一個動態規劃練習,從左至右沿高速公路工作。部分解決方案可以通過最右邊倉庫的位置和倉庫數量來描述。部分解決方案的成本將是到最近倉庫的總距離(固定k最小化這與最小化平均值相同)或到最近倉庫的最大距離。

在每個階段,您已經計算出最左邊的N個關節的答案,並根據所用倉庫的數量和最右邊倉庫的位置對它們進行索引 - 您只需要節省最佳成本。現在考慮下一個關節,並使用您爲N個關節存儲的答案加快速度,爲N + 1關節和所有可能的k值和最右邊的倉庫找出最佳解決方案。一旦您制定出涵蓋所有關節的最佳成本解決方案,您就會知道最右邊的倉庫在哪裏,從而爲您提供一個倉庫的位置。回到那個倉庫作爲最右邊聯合的解決方案,並找出基於哪個解決方案。這爲您提供了一個最右邊的倉庫 - 所以您可以回到所有倉庫的位置以獲得最佳解決方案。

我傾向於得到這個錯誤的工作成本,但是用N個關節和k個倉庫來放置你需要N個步驟,每個基於考慮不超過Nk以前的解決方案,所以我估計成本是千牛^ 2。

+0

「現在考慮下一個關節,並針對N + 1個關節以及k和最右側倉庫的所有可能值制定出最佳解決方案,並使用您爲N個關節存儲的答案來加快速度。」 你能給(至少)一個提示如何做到這一點? – 2010-09-02 10:08:43

+0

其基本思想是對於給定點的最佳答案可以被描述爲「在此時放置一個倉庫,然後使用左邊第4點的答案來說明將其他倉庫放在哪裏」 - 但在那裏通常需要擔心的幾個細節因問題而異。 如果您不熟悉動態編程,請看例如http://mat.gsia.cmu.edu/classes/dynamic/dynamic.html中的前兩個示例 - 或者搜索其他教程。 – mcdowella 2010-09-02 18:35:06

1

這不是一個聚類問題,這是一個設施位置問題的特例。你可以使用一般的整數/線性編程軟件包來解決這個問題,但由於問題在線,因此可能會有效率更高(並且更便宜的軟件)算法。您可能會考慮動態編程,因爲可能會相當快地消除這些設施的組合。查看P-Median problem瞭解更多信息。

+0

我沒有從p-median問題文章中獲得太多的信息,他們中的大多數人都有一個額外的「運輸成本」參數,這使得問題更加複雜。請幫忙。 – 2010-09-02 09:58:58

+0

我發現這是'設施位置問題'。但是,他們仍然有複雜的算法來處理2D問題......我的只有1d。幫幫我? – 2010-09-14 18:57:52

+0

沒關係。你仍然有距離,他們只是在一個維度。 – Grembo 2010-09-24 15:52:45