【问题标题】:Order sets of numbers for maximum distance订购最大距离的数字集
【发布时间】:2010-11-29 16:43:09
【问题描述】:

您有(最多 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 秒,标准计算机)?

【问题讨论】:

    标签: algorithm sorting numbers set scoring


    【解决方案1】:

    是的,如果算法设计得当,我认为这是可能的。 Here 是在 2.7*10^5 操作中解决 60 个“集合”的类似问题的示例。对于一台普通的现代计算机来说,这个数字似乎足够了。

    【讨论】:

      【解决方案2】:

      您可以从集合中创建一个图,其中顶点是集合,如果它们在列表中可以连续(即没有共同元素),则它们之间存在边。

      在此您可以运行任何找到Hamiltonian path 的算法,这是一个 NP 难题。

      【讨论】:

      • 啊,谢谢。快速回答,“简单”的解决方案。非常简单,但我想,对于 100 条边来说是不可行的。很高兴知道,而不是将时间浪费在确定性解决方案上。
      • 我忘了说,这里并不总是存在哈密顿路径,这会使算法更加复杂(以找到最优解)。
      • 哈密顿路径的随机算法通常是贪婪的,所以你会得到“体面的路径”作为中间结果。每当贪心算法陷入死胡同时,你可以决定是返回当前路径,还是继续尝试。
      • 还有一堆定理可以根据图的连通性、顶点度等告诉你是否存在汉密尔顿路径。之前检查可以帮助你做出决定。
      猜你喜欢
      • 2018-10-11
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      • 1970-01-01
      • 2021-12-18
      相关资源
      最近更新 更多