回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我似乎找不到一种在标题中编写算法的方法,而不需要以某种方式整理结果。在</p>
<p>为了说明我想要什么:</p>
<pre><code>all_spans = [(0, 5), (2, 7), (5, 8), (6, 10), (9, 10), (11, 15)]
possible_sets = [
{(0, 5), (5, 8), (9, 10), (11, 15)},
{(2, 7), (9, 10), (11, 15)},
{(0, 5), (6, 10), (11, 15)}
]
not_possible = [
{(0, 5), (5, 8), (6, 10), (11, 15)}, # has overlaps
{(5, 8), (9, 10), (11, 15)} # not maximal w.r.t possible_sets[0]
]
</code></pre>
<p>我目前的实施或多或少是这样的:</p>
^{pr2}$
<p>但它产生了非最大跨距,我宁愿一开始就不想创建。在</p>
<pre><code>>>> for s in combine(all_spans, set()):
... print(sorted(s))
[(9, 10), (11, 15)]
[(6, 10), (11, 15)]
[(5, 8), (9, 10), (11, 15)]
[(9, 10), (11, 15)]
[(6, 10), (11, 15)]
[(2, 7), (9, 10), (11, 15)]
[(0, 5), (9, 10), (11, 15)]
[(0, 5), (6, 10), (11, 15)]
[(0, 5), (5, 8), (9, 10), (11, 15)]
</code></pre>
<p>有没有其他方法可以避免这种行为?我在“间隔重叠”和“活动调度”这两个关键词下发现了类似的问题,但它们似乎都没有提到这个特定的问题。在</p>