2011-11-13 41 views
6

嗨,我正在構建一個程序,其中學生正在報名參加在全國多個城市進行的考試。在註冊學生的同時,他們按照他們的喜好提供了他們希望參加考試的三個城市的名單。所以一個學生可能會說他的首選考試中心是紐約,其次是芝加哥,其次是波士頓。解決資源分配問題的算法

現在請記住,由於考試中心的能力有限,他們無法容納每個學生的第一選擇。然而,我們會盡可能地爲儘可能多的學生提供他們的第一或第二選擇中心,並儘可能避免學生不得不給第三個選擇中心的學生

現在任何想法的排序算法,這將使這個過程更有效率。簡單的方法來做到這一點將首先通過第一選擇的學生分配儘可能多然後可以通過第二選擇和分配清單。然而,這可能會導致名單上第一名的學生獲得他們的第一中心,而最後的學生獲得他們的第三選擇或更差的選擇。任何可以提高效率的東西

+0

我的直覺是,一個「完美」的算法將是NP完全問題,你會不得不接受的近似值。 –

+1

爲什麼不把優先考慮的第一批學生註冊?無論如何,你必須對它們進行辨別。 – alexpirine

+1

問題是我們已被客戶特別告知不要採用先到先得的方式。原因在於,不同地點的學生填寫考試表格的日期不同。因此,填補表格的時間要晚於其他時間,這並非他們的錯。 – user992010

回答

2

此問題可以被公式化爲minimum cost flow的實例。設N爲學生人數。讓每個學生都是容量爲1的源頂點。讓每個考試中心都是容量爲頂點的容器頂點,以及容量。從每個學生到他的第一,第二和第三選擇劃一條弧線。將首選弧的成本設置爲0;第二選擇的成本爲1;並且第三選擇的成本爲N + 1。

找到移動N個流量單位的最小成本流量。假設你的求解器返回一個整體解決方案(它應該;流程LP完全不模擬),每個學生將一個單位流到他指定的中心。成本最大限度地減少了第三選擇任務的數量,打破了第二選擇任務的數量。

-1

有一類算法可以解決稱爲拍賣的有限資源分配問題。基本上在這種情況下,每個學生都會得到一定的費用(他們可以花費的數量),那麼你的軟件會在這些學生之間進行出價。您可以根據偏好使用公式。

一個例子是教程時間。如果你放下自己的偏好,那麼你會在那些時候更有效地出價,而不是你不想要的時間。所以,如果你沒有得到你的偏好,你有更多的「錢」與其他教程競標。