2011-05-05 81 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

我不知道是否存在一個「貪婪」的官方定義,但對我來說,一個貪婪的解決方案是一個減少問題的選擇,一系列局部最佳解決方案,希望當他們放在一起,他們接近整體最佳解決方案。 (有時候這個希望不過是希望。)