编辑:层次结构不适合我的目标。留下原始请求,但我回答了满足以下核心请求(重叠/非重叠规则)的内容。
假设有一组 1D 线,每条线由 2 个无符号整数描述:start 和 end,start < end。我想根据它们是否重叠来创建组,但我不希望组包含任何不重叠的行。在一条线在多个组中的情况下,我想我需要某种层次结构来跟踪组中的组......
这是规则:
- 重叠的线必须在层次结构中尽可能低地组合在一起。
- 不重叠的线不能在同一组中。
无论如何,这是一个示例图片:
快速浏览一下,我可以说Line A
and Line C
form Group 0
,Line H
and Line I
form Group 1
, and Line B
is Group 2
。其他所有内容都是重叠的组,Line D
在Group 1
and中Group 2
,Line E
在Group 0
and中Group 1
,并且Line F
andLine G
都在这三个组中。所以这里有两层分组,但我很确定可能有 N 取决于问题的复杂性。而且我也很确定我的示例没有代表一些问题。
处理这个问题的典型算法是什么?