【发布时间】:2011-10-10 00:45:10
【问题描述】:
似乎最好的复杂度是线性 O(n)。
其实没关系,我说的是一般的贪心算法。
有时贪婪会得到回报?
在我感兴趣的特定情况下,将计算更改。
假设您需要提供 35 美分的零钱。你有 1、5、10、25 的硬币。简单编码的贪心算法可以快速轻松地解决这个问题。首先抓住 25 美分的最高值进入 35,然后接下来的 10 美分完成总数。这将是最好的情况。当然,在某些情况下,这种贪婪算法会出现问题。我说的是确定此类问题的最佳案例复杂度。
【问题讨论】:
-
您有什么特定的问题或您心目中的贪婪解决方案吗?
-
添加了一个解释@Foo Bah
-
对于您给出的问题,贪心通常不起作用:使用 10、8、5、1 的 13 美分将产生 (8,5) 的最佳解决方案,但贪心解决方案 (10,1 ,1,1)
-
@Foo Bah 那将是一个糟糕的情况,而不是最好的情况。是的,有些情况根本不起作用(没有调整),但我指的是最好的情况。
-
如果算法不正确,问它的时间复杂度是没有用的......所以这个问题没有任何意义。我可以想出一个 O(1) 贪心算法,所以你去吧。
标签: performance complexity-theory big-o