【发布时间】:2011-08-29 07:34:23
【问题描述】:
昨天试图入睡时,我开始思考如何解决下面的问题,并意识到我无法想出一个好的算法。这不是一个学校作业,即使它看起来像一个,我只是想找到一个答案。 :)
基本上让我们想象一下商店员工的工作时间表。程序应根据一组要求生成进度建议。
要求是:
- 每周只有一名员工工作。
- 员工不能连续工作两周。
- 应该有一种方法可以防止员工获得 计划在某个星期(假期)工作。
- 分布应尽可能均匀,即如果我们有 员工 A、B 和 C 他们应该得到大致相同的金额 数周的休息时间,这些周应均匀分布 可能。
解决这个问题的最佳方法是什么?也许函数式编程更适合解决这个问题?
编辑:现在我知道这类问题被称为“资源受限调度”。这有点难以理解,因为“调度”通常指的是调度任务或线程之类的东西。对于仍然认为我在寻求家庭作业解决方案的人(尽管我在上面明确声明),您可以查看我以前的问题,我认为它们清楚地表明我不是学生...
【问题讨论】:
-
贪婪:使用 PriorityQueue 应该是一个很好的启发式方法,但如果某个员工在最后预定的几周内有很长的“假期”,则可能会失败。
-
尝试将输入参数和输出值添加到您问题中的算法中,这样会更清楚
-
我更愿意回答有编码问题的问题。我认为解决此问题的最佳方法是使用 Visio Professional 并计划您的想法并查看它是否有效。然后如果您在执行某些部分代码时遇到问题,请向我们询问您的下一个问题。 :)
-
您可以使用一些向前向后调度的优化来防止amit提到的问题。请参阅此以获得一些灵感;)LI,K.;WILLIS,R.:资源受限调度的迭代调度技术; 1992;欧洲运筹学杂志 56; S.374
-
感谢大家的回答...仅仅因为一个问题是关于一个明显众所周知的问题并不一定意味着它是学校作业。如果您怀疑我,请查看我的其他问题...