贪婪算法还是动态编程?

问题描述 投票:3回答:3

给出列表l = [x_1,...,x_n]。列表中的每个元素都是一块木头的长度。要粘合长度为a和b的两块木头,您需要使用max(a,b)粘合剂。胶合后,您得到一块长度为a + b的木头。计算最少的胶水量以粘合所有碎片。

您认为贪婪算法在这里有效吗?我想不出任何例子。说贪婪算法,我的意思是:取两块最小长度的东西,将它们粘在一起,直到所有部分都粘好为止。使用一些优先级队列,可以以O(n log n)复杂度完成此操作。

有效吗?如果没有,请给我一些列表l的例子,列表l可以比贪婪算法说的少。

给出列表l = [x_1,...,x_n]。列表中的每个元素都是一块木头的长度。要粘合长度为a和b的两块木头,您需要使用max(a,b)粘合剂。粘贴后,您得到...

algorithm dynamic-programming greedy
3个回答
4
投票

贪婪算法并不总是最佳的。一个反例是[1、2、2、3],其贪婪算法将使用10个单位的胶水,而最优算法将使用9个单位。


0
投票

似乎有没有最优贪婪算法


0
投票

贪婪算法肯定不会像Briguy37所说的那样工作,因为贪婪的局部最优解在这种情况下不会为您提供全局最优解。

© www.soinside.com 2019 - 2024. All rights reserved.