2011-05-05 80 views
6

我有这个问题,在我的课本。为什么这是一个贪婪的算法?

“假设我们有一组活动中大 号演讲厅,在任何活动可以发生在任何报告厅的安排,我们希望安排。所有使用尽可能少的演讲厅尽可能的活动提供一个有效的贪心算法来确定哪些活动应该使用哪个讲堂“

而答案就在这里给出: http://mitpress.mit.edu/algorithms/solutions/chap16-solutions.pdf

(杉杉溶液)

我的答案是,算法为什么是贪婪算法?

我认为这是因为它使(贪婪?)选择,你总是采取一项活动,并把它放到一个演讲厅,那里已经有一个或多个活动(如果可能),而不是把活动进入一个新的空的讲堂。但我不确定。 :)

+0

“贪婪”和“高效”..呵呵 – bragboy 2011-05-05 21:07:00

+0

@Bragby:实际上它取决于他们指的是什么“效率”。也许这里是计算效率(即速度)而不是找到有效解决方案的能力... – digEmAll 2011-05-05 21:09:39

回答

3

贪婪意味着你不重新考虑你的选择。这使得想出最佳解决方案变得非常困难,并且在那里描述了算法。

2

这是因为在考虑问题的其余部分之前,您可以在演讲厅1中做到最多。从这个意义上讲,第一讲堂是“贪婪”的。

+0

是的,实际上有时贪婪算法也被称为“近视”,因为它们对问题有短视 – digEmAll 2011-05-05 21:07:45

+0

维基百科有一个[好文章](http://en.wikipedia.org/wiki/Greedy_algorithm)上的贪婪算法。 – 2011-05-05 21:12:46

1

贪婪算法的定义是它在每一步都需要明显的最佳选择,而不是考虑前面的几个步骤。因此找到搜索空间的局部最小值(梯度下降也许值得一点谷歌)。国际象棋程序就是一个很好的例子,一个贪婪的算法总是会做出最有力的直接行动(拿一块,最大化棋子开发),但不会考虑未来的几个举措。

不幸的是,我似乎无法打开您目前包含的链接。但是我可以犹豫猜测算法是贪婪的,因为一旦它将一个事件装入一个大厅里,它就不会重新考虑这个决定(回溯在这一点上可能值得一个快速的谷歌)。

1

我不知道是否存在一个“贪婪”的官方定义,但对我来说,一个贪婪的解决方案是一个减少问题的选择,一系列局部最佳解决方案,希望当他们放在一起,他们接近整体最佳解决方案。 (有时候这个希望不过是希望。)