python中非重叠间隔占用的最大范围

python中非重叠间隔占用的最大范围,python,intervals,Python,Intervals,给定一个区间列表,我想确定该列表中占据最大总整数范围的非重叠子集。例如,如果范围为: listy = [[0,10],[11,15],[11,12],[20,30]] 那么正确的区间子集将是[0,10]、[11,15]和[20,30],使得最大不重叠总范围等于(10+4+10)=34 我不断提出的方法似乎涉及到通过所有子集的暴力强迫的变化——必须有更好的方法 很可能没有更好的办法了。您试图解决(最大)子集和问题的各种实例,这是NP完全问题。因此,很可能没有一个有效的算法来解决您的问题。如果您发

给定一个区间列表,我想确定该列表中占据最大总整数范围的非重叠子集。例如,如果范围为:

listy = [[0,10],[11,15],[11,12],[20,30]]
那么正确的区间子集将是[0,10]、[11,15]和[20,30],使得最大不重叠总范围等于(10+4+10)=34


我不断提出的方法似乎涉及到通过所有子集的暴力强迫的变化——必须有更好的方法

很可能没有更好的办法了。您试图解决(最大)子集和问题的各种实例,这是NP完全问题。因此,很可能没有一个有效的算法来解决您的问题。

如果您发布您的最佳尝试和一些关于如何改进的具体问题,您更有可能获得帮助。现在,人们真的没有什么可以合作的,除非他们愿意为你编写整个程序。您可能还想了解一下,因为您的问题让我想起了一些使用动态编程可以最有效地解决的问题。如果
listy
真的这么小,那么就对幂集施加蛮力。如果它更大……那么一个接近的和/或可能的答案对你有用吗?如果不是的话,你很可能是被水淹没了,正如Simeon Visser所解释的。例如,[2,4]到底代表了什么?包括两端(2、3和4)?左侧包含,右侧不包含(2和3)?还有别的吗?