Sorting 是否有约束排序的通用算法?

Sorting 是否有约束排序的通用算法?,sorting,Sorting,假设我有一个URL列表,它已经有了一些排序;现在,让我们添加一些约束条件——假设一行中有两个以上具有相同域的链接是不好的 事实上,我可以有一些限制——两个,三个,五个,不太可能更多 现在我想使用我的原始列表,同时在初始排序和约束之间保持一些平衡。这条平衡线应该以某种方式进行配置 现在我想到的是非常严格的(我相信是容易出错的)蛮力方法-只需在列表上迭代,计算我关心的每个统计数据,决定通过某种启发式方法上下移动链接,重新计算统计数据并进一步移动…有一篇IEEE论文介绍了约束排序的通用算法 如果你想读

假设我有一个URL列表,它已经有了一些排序;现在,让我们添加一些约束条件——假设一行中有两个以上具有相同域的链接是不好的

事实上,我可以有一些限制——两个,三个,五个,不太可能更多

现在我想使用我的原始列表,同时在初始排序和约束之间保持一些平衡。这条平衡线应该以某种方式进行配置


现在我想到的是非常严格的(我相信是容易出错的)蛮力方法-只需在列表上迭代,计算我关心的每个统计数据,决定通过某种启发式方法上下移动链接,重新计算统计数据并进一步移动…

有一篇IEEE论文介绍了约束排序的通用算法

如果你想读的话,这里是链接:
我推迟了解决这个问题;但我提出了一个可能的解决方案,我将尝试描述它

它解决了一个问题“一行中不超过N个具有相同属性的元素”-在我最初的案例中链接到相同的域

因此:

  • 在你的列表中找出“不好”的地方,并把它们作为索引的间隔记下来
  • 对于每个间隔:
    • 在两侧扩展该间隔-注意不要超过数组的边界(可能还有其他间隔的边界)
    • 扩展大小应取决于间隔大小
    • 重新调整间隔,除非它看起来与我们的条件相关
  • 通过这种方式,我们只在有限的时间间隔内干扰排序,一般的排序应该不会有太大的变化


    也许我们应该有一个特殊的情况,当我们的列表中有一半以上是单一的“坏”间隔时——例如,只需将其均匀分布。

    太糟糕了,它不是免费访问的。此外,我担心这篇文章有点离题,但阅读参考文献给了我一个想法——我应该有惩罚函数,现在这是一个优化问题。顺便说一句,列表大小约为30-50个元素。我搜索的算法可能不是最有效的,相对简单是非常受欢迎的。