我有一群人。我需要尽可能地移动至少有一个相同成员的组。
示例:
GroupA - John, Bob, Nick
GroupB - Jack, Nick
GroupC - Brian, Alex, Steve
正如您所见,GroupA和GroupB重叠(它们都包含Nick) 我需要一种算法来将组设置为GroupA-> GroupC-> GroupB
谢谢
答案 0 :(得分:2)
这取决于您如何准确定义问题 - 包含重叠和成本等事项。
这可能会减少到Travelling salesman problem - 如果组i
和j
没有任何共同点,您可以将边权重设置为0,并且某些函数f(i,j)
依赖于它们之间的共同项目数量。然后,您需要一个从一个组到最后一个组的列表,每个组访问一次,最小化一些重叠功能。
您可以将TSP降低到这个版本(实际上取决于您对“竞争重叠”的“尽可能最远”的具体说法)。
不幸的是,这是NP-complete,这意味着你应该开始寻找“足够好”的东西。
答案 1 :(得分:0)
如果您有任意组,则此问题没有唯一的甚至是有意义的解决方案。例如见:
GroupA = {Alice, Bob}
GroupB = {Bob, David}
GroupC = {David, Alice}