为什么这是一个贪婪的算法?

时间:2011-05-05 21:02:05

标签: algorithm

我的教科书中有这个问题:

“假设我们有一组活动来安排大型活动 可以在任何演讲厅进行任何活动的演讲厅数量。我们希望使用尽可能少的演讲厅安排所有活动。给出一个有效的贪婪算法来确定哪个活动应该使用哪个讲堂。 “

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

(第一解决方案)

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

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

4 个答案:

答案 0 :(得分:3)

贪婪意味着你不会重新考虑你的选择。这使得很难找到最佳解决方案,并在那里描述了算法。

答案 1 :(得分:2)

这是因为即使考虑到问题的其余部分,你也会在演讲厅1之前做到最多。从这个意义上说,1号讲堂是“贪婪的”。

答案 2 :(得分:1)

贪婪算法的定义是,在每个步骤中采用明显的最佳选择,而不是考虑前面的几个步骤。因此找到搜索空间的局部最小值(梯度下降或许值得一点谷歌)。国际象棋程序就是一个很好的例子,一个贪婪的算法总能做出最强大的直接移动(拿一块,最大化片段开发),但不会考虑将来的几个动作。

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

答案 3 :(得分:1)

我不知道是否存在单一的官方定义“贪婪”,但对我来说,一个贪婪的解决方案是将问题减少到选择一系列局部最优解决方案,希望当他们'重新组合起来,他们接近整体最优解决方案。 (有时候这种希望不仅仅是希望。)

相关问题