使用贪婪算法进行优化

use*_*901 2 algorithm optimization greedy

如果使用贪婪方法可以解决优化问题,那么它的所有最优解都必须始终包含第一个选择(即贪婪的选择)吗?

nec*_*cer 5

我将您的问题解释为" 所有最佳解决方案的集合必须始终包含第一选择",否则对于包含其他解决方案的解决方案没有意义.

当然,答案很简单.如果贪心算法解决了问题,它会产生一个最优解,根据定义,它是最优解的集合.

也许你的意思是"如果一个贪婪的算法有时产生一个最优的解决方案,......"在这种情况下,答案是微不足道的.

如果你的意思是"如果一个贪婪的算法有时产生一个最优的解决方案,那么所有保证的最优算法是否也能产生这个解决方案呢?" 答案取决于问题是否具有唯一的最优解或多个解.

如果问题有多个最优解决方案,答案显然是否定的.

要考虑的一个好例子是对一个数字列表进行排序,使得所有单个数字都位于两位数字之前,两位数字位于三位数字之前,依此类推.I. e.你不关心99是否在11之前,反之亦然,你只想要在25之前有9,在872之前是33,在1234之前是555.

此示例问题具有多个最佳解决方案.懒惰但不贪婪的算法不能确保11在99之前出现.过热的算法会这样做.两者都会产生彼此不同的最佳解决方案.

如果这没有帮助,什么都不会;-)