是否存在使用约束进行排序的通用算法?

时间:2012-12-24 11:03:21

标签: sorting

说我有网址列表,它已经有一些排序;现在让我们添加一些约束 - 假设连续两个链接与同一个域的链接是坏的。

实际上我可能没有什么限制 - 两个,三个,五个,不太可能更多。

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

现在我想到的只是非常直接(我相信容易出错)暴力攻击方法 - 只是遍历列表,计算我关心的每个统计数据,决定通过一些启发式方法向上或向下移动链接,重新计算统计数据并进一步......

2 个答案:

答案 0 :(得分:1)

我推迟解决这个问题;但我想出了一个可能的解决方案,我会尝试描述它。

它适用于“不超过N个连续具有相同属性的元素”的问题 - 在我原始情况下与相同域的链接。

所以:

  1. 识别列表中的“不良”位置 - 并记住它们作为索引的间隔。
  2. 每个间隔:
    • 扩展两边的间隔 - 注意不要超过数组的边界(可能是另一个间隔的边界)
    • 扩展名大小应取决于区间大小
    • 将该间隔改组,除非它相对于我们的状况看起来不错
  3. 通过这种方式,我们只能在有限的时间间隔内进行排序,而且一般排序不会有太大变化。

    当我们列表的一半以上是单个“坏”间隔时,可能我们应该有特殊情况 - 例如,只统一分配它。

答案 1 :(得分:0)

有一篇关于使用约束进行排序的通用算法的IEEE论文....

如果你喜欢读它,那么这里是链接: http://ieeexplore.ieee.org/xpl/articleDetails.jsp;jsessionid=nBBXQnGZGd9bRJhQfjzWQGhLm97BQ7xLG9LChppLPBvfJ0Sb2hRh!1364212599?arnumber=5358031&contentType=Conference+Publications