Algorithm 处理具有相同优先级的作业的算法
我在解决帕帕迪米特罗和瓦齐拉尼的《算法》一书中的练习题 问题如下: 一台服务器有n个客户等待服务。每个客户所需的服务时间都是预先知道的:客户i的服务时间是ti分钟。因此,例如,如果按照增加i的顺序服务客户,则第i个客户必须等待Sum(j=1到n)tj分钟 我们希望尽量缩短总等待时间。给出了一个有效的算法 我的尝试: 我想到了几种方法,但无法决定哪一种是最好的,或者任何其他方法都比我的好 方法1: 以循环方式提供,时间片为5。然而,当我在决定时间片时需要更加小心。它不应该太高或太低。因此,我考虑选择时间片作为发球时间的平均值 方法2: 假设作业根据所用时间进行排序,并存储在数组A[1…n]中 先发球[1],然后发球[n],然后发球[2],然后发球[n-1],依此类推 对于这个问题,我真的无法决定哪种解决方案更为理想。我错过了什么吗 谢谢, Chander让我假设“总等待时间”是每个客户在服务器完成为他/她服务之前等待的时间之和,并假设客户按照增加i的顺序得到服务,因此客户Algorithm 处理具有相同优先级的作业的算法,algorithm,Algorithm,我在解决帕帕迪米特罗和瓦齐拉尼的《算法》一书中的练习题 问题如下: 一台服务器有n个客户等待服务。每个客户所需的服务时间都是预先知道的:客户i的服务时间是ti分钟。因此,例如,如果按照增加i的顺序服务客户,则第i个客户必须等待Sum(j=1到n)tj分钟 我们希望尽量缩短总等待时间。给出了一个有效的算法 我的尝试: 我想到了几种方法,但无法决定哪一种是最好的,或者任何其他方法都比我的好 方法1: 以循环方式提供,时间片为5。然而,当我在决定时间片时需要更加小心。它不应该太高或太低。因此,我考虑选
C1
等待t1分钟,客户C2
等待t1+t2
分钟,客户C3
等待t1+t2+t3
分钟,然后。。。客户Cn
等待t1+t2+…+t{n-1}+tn
分钟
或:
总等待时间加起来等于n*t1+(n-1)*t2+…1*tn
同样,这是基于这样一个假设,即服务客户的顺序是增加i
现在,您希望首先为哪个客户提供服务?您可以通过添加排序部分并改进循环法来解决此问题 首先根据服务时间对客户进行分类 现在,不只是以循环方式给每个客户一个时间片t,您还可以检查客户的剩余时间是否少于t/2,如果是,则完成他的任务 所以 对于排序列表中的每个客户,从第一个 时间t的服务器客户 如果剩余时间
C1 waits: t1
C2 waits: t1+t2
C3 waits: t1+t2+t3
...
Cn waits: t1+t2+t3+...tn