在给出问题的运行时间(如5分钟,10分钟,不是开始和结束时间)时,贪婪解决方案的问题是什么,并且你有运行它们的过程然后最小的最小时间是什么?
假设我有九个工作(3,5,6,10,11,14,15,18,20分钟)和三个流程然后解决方案
第一个流程句柄 - > 20 + 14
第二个流程句柄 - > 18 + 11 +5
第3个流程句柄 - > 15 + 10 + 6 + 3
最短时间为34分钟
答案 0 :(得分:0)
鉴于问题是NP难(see for example here),在所有情况下都不可能存在能给出精确解的多项式时间算法。
答案 1 :(得分:0)
首先,请参阅维基百科页面:https://en.wikipedia.org/wiki/Greedy_algorithm
从文章的第一部分开始:
贪婪算法是一种算法,它遵循问题求解启发式,在每个阶段进行局部最优选择,希望找到全局最优。在许多问题中,贪婪策略通常不会产生最佳解决方案......
这里有两点需要强调:
贪婪算法不一定能找到最佳解决方案。
对于单一问题,通常会有许多不同的贪婪方法。
以您的问题为例,这两种方法都很贪婪:
贪婪方法#1 :当每个流程都可用时,将最长的任务分配给流程。这可能会产生以下结果:
过程1:20 + 10 + 3 = 33
过程2:18 + 11 + 6 = 35
过程3:15 + 14 + 5 = 34
总时间:35
贪婪方法#2 :当每个流程都可用时,将最短任务分配给流程。这将得到以下结果:
过程1:3 + 10 + 15 = 28
过程2:5 + 11 + 18 = 34
过程3:6 + 14 + 20 = 40
总时间:40
这两种方法都是贪婪的算法。这里的一个重要假设是问题只是处理所有任务。如果问题是在尽可能短的时间内处理所有任务,那么(正如评论中已经说明的那样)没有贪婪的算法可以解决这个问题。