您拥有(最多100个)不同套(2-4)数字。集合中的集合或数字的顺序无关紧要。最高数字与集合数量相关,最多可达30个。喜欢:
{1 2 3 4} {1 2 3 5} {1 2 3} {1 2 4 5} {6 2 4} {6 7 8 9} {6 7 9} {7 8 9} {2 4 8 9}
目标是按特定顺序排列这些集合,其中两个连续集合不包含公共数字。那是
{1 2 3 4} {2 4 8 9}
很糟糕(因为2)。和
{1 2 3 4} {6 7 8 9}
很好。
当然,特别是在给定的示例中,这对于整组集合是不可能的。但是,违反规则的集合数量应该大致最小化。
我认为,对于相对大量的集合,一些强力+评分算法是不可行的。 您对确定性算法有任何其他想法或提示来解决这个问题吗?
你认为,一个随机+分数算法可以找到合适的解决方案(在一些限制的时间范围内,如5秒,标准计算机)?
答案 0 :(得分:2)
你可以从你的集合中创建一个图形,其中顶点是集合,如果它们在列表中是连续的,则它们之间有边缘(即没有公共元素)。
在此,您可以运行任何找到Hamiltonian path的算法,这是一个NP难问题。
答案 1 :(得分:0)
是的,如果算法设计得当,我认为可能。 Here是在2.7 * 10 ^ 5操作中解决60“集”的类似问题的例子。对于普通的现代计算机而言,这个数字似乎已经足够了。