2013-12-09 423 views
-1

爲了擴大溝通,公司決定在晚餐時混合部門。假設每張桌子的設計都允許10人吃晚飯,但增加另一個人也是可以的。因此,如果職員人數N%10小於6,那麼N%10人應該放入另外10個人選的表中。洗牌算法:晚餐部門洗牌

假設有20個部門,每個部門有10〜30個人。你會如何隨機安排晚餐,以便同一部門內的人員最少有機會在同一張桌子上,並且每兩個部門的財產幾乎都有同樣的機會在桌子上見面?

我的執行是先隨意放10人一桌。然後爲每個表中的每個部門留下唯一的一個,並將其他人拿出並放入數組中。數組隨機洗牌並放回桌子。直到成本函數F永不減少,而F被定義爲同一表中顯示的同一部門的人數的總和。

+0

你的問題的定義是不完整的 - 你必須定義什麼是可接受的解決方案。 –

+0

@AlexD謝謝,我已經修改了這個問題,更準確地說。 – hailinzeng

+0

上次編輯表示必須「隨機」分配人員。這使問題變得毫無意義。只要你做任何事情來偏袒任務,使人們不太可能最終得到來自同一部門的人員,它就不再是「隨機」了。 –

回答

0

如果我明白了一切,這個問題似乎完全無關緊要。預先計算您需要的表格數量(使用您給出的標準,基於N%10)。從最大的部門開始,並開始爲每個部門分配一個人。如果您到達最後一個表格,請返回第一個表格並繼續爲每個表格分配一個人員。當部門中的所有人都被分配後,轉到第二大部門,依此類推。如果您到達已滿的桌子,請跳過它。

如果人在最大的百貨數量小於表的數量,您具有同一個部門裏的人同臺的機會是0