Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 一维空间划分算法_Algorithm_Intervals_Space Partitioning - Fatal编程技术网

Algorithm 一维空间划分算法

Algorithm 一维空间划分算法,algorithm,intervals,space-partitioning,Algorithm,Intervals,Space Partitioning,I对应于相同一维(线性)空间的两组区间。这是一个粗略的画面——实际上,有更多的间隔,它们更分散,但这给出了基本的想法 每个间隔都包含信息,我正在编写一个程序,将一组间隔(红色)中的信息与另一组间隔(蓝色)中的信息进行比较 这是我的问题。我想将空间划分为n个块,这样每个块中要做的比较工作量大致相等(工作量取决于该部分空间中的间隔数)。此外,分区不应将任何红色或蓝色间隔分割为两个块 所以输入是两组区间,期望的输出是空间的一个分区,这样 间隔(大致)平均分布在分区的每个元素上 没有与多个分区元素重

I对应于相同一维(线性)空间的两组区间。这是一个粗略的画面——实际上,有更多的间隔,它们更分散,但这给出了基本的想法

每个间隔都包含信息,我正在编写一个程序,将一组间隔(红色)中的信息与另一组间隔(蓝色)中的信息进行比较

这是我的问题。我想将空间划分为n个块,这样每个块中要做的比较工作量大致相等(工作量取决于该部分空间中的间隔数)。此外,分区不应将任何红色或蓝色间隔分割为两个块

所以输入是两组区间,期望的输出是空间的一个分区,这样

  • 间隔(大致)平均分布在分区的每个元素上
  • 没有与多个分区元素重叠的间隔

有人能提出这样做的方法或算法吗?

将“单词”定义为最大间隔,其中每个点都属于红色间隔或蓝色间隔。没有块可以在单词中间结束,并且连续单词的每个联合都是一个潜在块。现在将a应用于单词,其中单词的长度定义为它包含的间隔数(line=chunk)。

@Daniel:为了建立一个比较列表,在开始比较之前扫描一次整个空格会很昂贵吗?此外,是否保证红色和蓝色间隔的数量相等?是否有任何方法通过检查来确定间隔的顺序(例如,标题中编码的序列号或其他内容)?间隔的数量可能不相等。可能需要对线性空间进行快速初始扫描,而且不会太昂贵。如果需要的话,我可以在多个数据结构中存储指向“interval”对象(具有起始和结束坐标的对象)的指针,尽管这会占用大量内存,无法存储更多。我首先想到的是一个区间树和一个动态数组,但我正在试图弄清楚如何使用它们…@Daniel-我是否遗漏了什么,或者你不能通过快速扫描创建一个指针对列表,然后对该列表进行分区以进行处理吗?不一定有任何解决方案,因为你只能“剪断”在红色或蓝色间隔均未覆盖的点处将空间分段。例如,如果间隔像两排砌砖中的砖一样排列,则不会有这样的点。(你也没有说间隔是否保证不会在各自的集合内重叠,但我的反例即使它们没有重叠也适用。)不清楚什么取决于块的工作量-你说的是比较的数量,它取决于间隔。但是哪一个间隔,第一组还是第二组,或者两者都有?如果它仅仅依赖于其中一个,那么中间隔的分布将是相互测试的。使用这种方法的棘手部分是猜测一个线宽,从而得到所需的n行。问题的其余部分听起来像是一个软约束。更紧迫的问题是是否允许非连续分区。是的,次优但接近最优的解决方案是可以接受的,但“单词”必须按排序顺序保持。我认为这是最好的做法,使用二进制搜索来找到一个好的线宽。我尝试更改DP递归,使我们有一个固定的已知行数,未知线宽取决于它们,但这会导致状态空间膨胀(=无效),因为现在解决方案的最佳成本从第j个字开始(假设成本函数中的指数为2)这不仅取决于我们已经拥有的线的长度之和(我们可以立即从j中得到这一点),还取决于这些线的数量,以及它们长度的平方和。我以前曾有过“单词”的想法(我称它为其他东西),但出于某种原因,我没有想到它能解决这个问题。如果有k个单词,那么分割空间使每个块中都有k/n个单词是一种可以接受的启发式方法。不完全是你建议的,但提醒我“单词”的概念正是我需要的!