Algorithm 贪婪调度算法?

Algorithm 贪婪调度算法?,algorithm,computer-science,greedy,Algorithm,Computer Science,Greedy,当问题的运行时间(如5分钟、10分钟、非开始和结束时间)给定且您有m个进程运行时,调度问题的贪婪解决方案是什么?那么最短时间是多少? 假设我有九个作业(3,5,6,10,11,14,15,18,20分钟)和三个过程,那么解决方案是 第一个进程句柄-->20+14 第二个进程句柄-->18+11+5 第三进程句柄-->15+10+6+3 最小时间为34分钟鉴于问题是NP难问题(),不太可能存在多项式时间算法在所有情况下都能给出精确解。首先,请参阅维基百科页面: 从文章的第一部分开始: 贪婪算法是一

当问题的运行时间(如5分钟、10分钟、非开始和结束时间)给定且您有m个进程运行时,调度问题的贪婪解决方案是什么?那么最短时间是多少?
假设我有九个作业(3,5,6,10,11,14,15,18,20分钟)和三个过程,那么解决方案是

第一个进程句柄-->20+14

第二个进程句柄-->18+11+5

第三进程句柄-->15+10+6+3


最小时间为34分钟

鉴于问题是NP难问题(),不太可能存在多项式时间算法在所有情况下都能给出精确解。

首先,请参阅维基百科页面:

从文章的第一部分开始:

贪婪算法是一种遵循问题求解启发式的算法,在每个阶段进行局部最优选择,希望找到全局最优。在许多问题中,贪婪策略通常不会产生最优解

这里有两个要点需要强调:

  • 贪婪算法不一定能找到最优解

  • 对于一个问题,通常有许多不同的贪婪方法

  • 以您的问题为例,这两种方法都是贪婪的:

    贪婪方法#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


    这两种方法都是贪婪算法。这里的一个大假设是,问题只是处理所有任务。如果问题是在尽可能短的时间内处理所有任务,那么(如评论中所述)没有贪婪算法可以解决此问题。

    您似乎刚刚发布了一个包含您自己问题答案的编辑。你能澄清你的问题吗?我想要一个贪婪算法来解决这类问题。当任务仍然存在时,将最长的任务添加到当前运行时间最短的进程中。从上面的解释中可以看出,它不起作用。贪婪算法不是最优的,它们只是很容易实现,执行时间短。所以答案是35,而不是34。这就是你为贪婪付出的代价。