我的侄子有一個新的業務,聯合商務人士喝咖啡和談話。這有點像音樂椅。經過一定的時間後,每個人都會選擇不同的表格。這個想法是,每個人都必須有機會與每個人交談。他試圖弄清楚如何與16人和4張桌子一起移動5次。分組組合算法
我想找出一個算法來做到這一點,但我發現這個問題比我最初想象的要困難得多。爲了簡化它,我制定瞭如何與6人和3張桌子做到這一點。
Step 1: (1, 2), (3, 4), (5, 6)
Step 2: (1, 3), (2, 5), (4, 6)
Step 3: (1, 4), (2, 6), (3, 5)
Step 4: (1, 5), (2, 4), (3, 6)
Step 5: (1, 6), (2, 3), (4, 5)
一種可能性,這不會是非常有效的,將生成的所有可能的組合,並消除任何互相排斥的:它可以如下表示。然而,奇怪的組合,這是不可能的。例如,如果有6個人只有2張桌子,則會有兩個人不止一次坐在同一張桌子上。當然,該算法的思想是讓每個人都以最短的步驟達到至少一次。
謝謝!我試圖找到我自己的解決方案,但我會檢查。試圖用PHP來解決這個問題,我不得不尋找一種擴展的按位算法。所以當我開始學習APL時,我很高興地發現擴展已經建成了。 – 2013-06-26 08:42:43
呵呵,我一定很難在HPH中做到這一點!這就是我非常喜歡APL的原因:) – MBaas 2013-06-26 15:27:13