Activity 使用贪心法选择问题的不同解决方案
Different solution for Activity Selection problem with greedy approach
著名的 Activity 选择问题有一个经典的解法,你可以看看 here。
但是现在,我想到了另一个解决方案。让我们看看这个 sudo 代码:
while(!empty(S))
{
Select interval I $ \in $ S that overlap least number of other intervals;
Add I to Result;
Remove all Interval from S that overlap with I;
}
你可以猜到S是我们的输入集,I是S的成员,Result是我们的输出集。
如果我们不关心时间复杂度,这个工作是否高效并且总是结果是最大集合?如果不是,我们什么时候没有高效输出?有例子吗?
谢谢!
您的解决方案并不总是有效。这是一个反例
著名的 Activity 选择问题有一个经典的解法,你可以看看 here。
但是现在,我想到了另一个解决方案。让我们看看这个 sudo 代码:
while(!empty(S))
{
Select interval I $ \in $ S that overlap least number of other intervals;
Add I to Result;
Remove all Interval from S that overlap with I;
}
你可以猜到S是我们的输入集,I是S的成员,Result是我们的输出集。
如果我们不关心时间复杂度,这个工作是否高效并且总是结果是最大集合?如果不是,我们什么时候没有高效输出?有例子吗?
谢谢!
您的解决方案并不总是有效。这是一个反例