所以我必须编写一个贪婪的算法,给出链接列表或对数组(t_i,w_i),我必须生成一个在时间T内产生最大金额的计划.t_i将是最大数量可以用于该工作的小时数,w_i将是以每小时美元计算的工资,T是该人愿意每周工作的最大小时数。工作岗位直到t_i才需要工作,因为工人可以选择提早换工作并为他们工作的每个小时获得报酬。
所以我写了一个贪婪的算法,你只需要得到每小时最高工资的工作,并尽可能长时间地完成工作,然后以每小时第二个工资获得工作,并且工作时间长达你可以等等,直到你工作T小时。
我现在被要求使用交换参数来证明我的伪代码产生最佳时间表。在我看来,我的伪代码解决方案已经是最佳时间表,那么我将它与之比较呢?
答案 0 :(得分:1)
我会告诉你演示的想法,而不是完全写出来。
您需要采用最佳解决方案 S 。你可以说这个解决方案可以授予 x $,其中 x 是你可以赚到的最高金额。
然后你采取你的解决方案 G 女巫是贪婪的。
现在你说你在 G 中选择的第一份工作,这项工作是 j1 ,花费的时间是 t1 。有两种可能性, j1 在 S 中,或者不是。如果不是用 S 替换 j1 中的一个作业,那么你会得到一个更好的解决方案(或者至少同样好)但是 S 是最佳的,所以你可以得出结论 j1 在 S 中。您可以使用相同的推理来证明 S 中与 j1 相关联的时间为 t1 。
然后你为每个元素做到这一点。而且你会得出结论, G 赚取的金额与 G 和 S 相同。所以 G 是最佳的