假设我有 URL 列表,并且已经进行了一些排序;现在让我们添加一些约束 - 假设连续有两个以上具有相同域的链接是不好的。
实际上我可以有一些限制——两个、三个、五个,不太可能更多。
现在我想重新使用我的原始列表,同时在初始排序和我的约束之间保持一些平衡。这条平衡线应该以某种方式配置。
现在我所想的只是非常简单(而且我相信容易出错)的蛮力方法 - 只需遍历列表,计算我关心的每个统计数据,决定通过一些启发式向上或向下移动链接,重新计算统计数据并进一步移动...
假设我有 URL 列表,并且已经进行了一些排序;现在让我们添加一些约束 - 假设连续有两个以上具有相同域的链接是不好的。
实际上我可以有一些限制——两个、三个、五个,不太可能更多。
现在我想重新使用我的原始列表,同时在初始排序和我的约束之间保持一些平衡。这条平衡线应该以某种方式配置。
现在我所想的只是非常简单(而且我相信容易出错)的蛮力方法 - 只需遍历列表,计算我关心的每个统计数据,决定通过一些启发式向上或向下移动链接,重新计算统计数据并进一步移动...
我延迟解决这个问题;但我想出了一种可能的解决方案,我会尝试描述它。
它适用于“连续不超过 N 个具有相同属性的元素”的问题 - 在我的原始案例中具有相同域的链接。
所以:
通过这种方式,我们只在有限的时间间隔内扰乱排序,一般排序不应该有太大变化。
当我们列表的一半以上是单个“坏”间隔时,我们可能应该有特殊情况——例如,只需均匀分布它。
有一篇 IEEE 论文,介绍了一种使用约束进行排序的通用算法……
如果你喜欢阅读它,那么这里是链接:http://ieeexplore.ieee.org/xpl/articleDetails.jsp;jsessionid=nBBXQnGZGd9bRJhQfjzWQGhLm97BQ7xLG9LChppLPBvfJ0Sb2hRh!1364212599?arnumber=5358031&contentType=Conference+ Publications