Algorithm 找出一系列区间的最有效分组
我有一个应用程序,其中有一系列不重叠的固定宽度间隔,每个间隔都有一个给定的键。每个间隔具有相同的宽度,并且可能存在连续的间隔。基本上,我希望以这样一种方式对间隔和关键点进行分组,以最小化单独间隔的数量。这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它们组合成具有多个键的单个间隔来实现。我目前的算法尝试了上述两种方法,并看到哪种方法的间隔数最小,但我觉得必须有一种更聪明的方法来解决这个问题。任何建议都将不胜感激 例如: |-----||------键k1的间隔(连续) |-----|按k2键的间隔 |-----|按k3键的间隔 在这个问题中,键为k1的间隔可以合并为一个连续的间隔,从而产生3个而不是4个总间隔。或者,每个键k1、k2和k3的第一个间隔可以与键k1、k2和k3组合为一个间隔,从而产生一个间隔加上k1中的第二个剩余间隔Algorithm 找出一系列区间的最有效分组,algorithm,optimization,dynamic-programming,Algorithm,Optimization,Dynamic Programming,我有一个应用程序,其中有一系列不重叠的固定宽度间隔,每个间隔都有一个给定的键。每个间隔具有相同的宽度,并且可能存在连续的间隔。基本上,我希望以这样一种方式对间隔和关键点进行分组,以最小化单独间隔的数量。这可以通过合并具有相同键的连续间隔或查找匹配间隔并将它们组合成具有多个键的单个间隔来实现。我目前的算法尝试了上述两种方法,并看到哪种方法的间隔数最小,但我觉得必须有一种更聪明的方法来解决这个问题。任何建议都将不胜感激 例如: |-----||------键k1的间隔(连续) |-----|按k2键
最坏的情况是大约70000个间隔。这是一个好的近似解决方案。因为固定宽度输入数据的间隔可以表示为位掩码,间隔在一个(X)轴上,键在另一个(Y)轴上。为您提供以下数据:
k3 1 0
k2 1 0
k1 1 1
i1 i2
这个问题类似于分区问题。有一个很好的答案涵盖了这个问题
这不是确切的问题,因为在这种情况下,键的顺序并不重要,可以在示例中看到:
k3 1 1
k2 1 0
k1 1 1
i1 i2
分区将产生3个矩形的查找结果,解决方案应该是2
对此(也是近似)的简单解决方案是进行输出后处理,并在相同的间隔上连接矩形。这里将有助于预处理,重新排列键,以便具有类似“覆盖”的键更接近或相邻
更复杂的解决方案是(我不是100%可行)使用算法中的思想来分割直线多边形。我们的想法是:
- 采取所有可能的拆分(跳线)
- 创建以跳线为顶点和跳线相交的边的图形
- 找到最大的(绳子)
- 一键连续间隔(X方向)
- 间隔结束(Z方向,穿过整个几何体)
使用相同的键合并相邻的间隔,或者寻找匹配的间隔并将它们组合成单个间隔
,或者分别使用两种策略来查看哪一种是最好的?回答很好,非常感谢你。关于这个直线多边形问题有很多有趣的阅读材料!