我的侄子有一个新的业务,联合商务人士喝咖啡和谈话。这有点像音乐椅。经过一定的时间后,每个人都会选择不同的表格。这个想法是,每个人都必须有机会与每个人交谈。他试图弄清楚如何与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