我找到了一份我被要求做的工作,其中包括编写一个程序来确定每个人在某一天工作的地点。
例如,输入可以是:
下午4-6点,现场A
下午1-2点,站点B
9-11am&下午2-4点网站A
基本上可以有很多站点,人们可以在多个块中工作。我觉得这种问题很久以前就已经解决了,所以不要重新发明轮子,我希望有人能指出我的优雅解决方案。
编辑:阅读类似问题我觉得问题可能是NP完成。我不需要最有效的解决方案,只需要有效且合理的东西。
编辑2:为了澄清,输出应该是一个时间表,人们分配这样的差距(没有人工作的实例)尽可能小。
答案 0 :(得分:3)
看起来您正在尝试解决有相当专业的软件应用程序的问题。如果你的问题足够小,你可以尝试这样的强力方法:
如果您的问题不是太大,您可以在合理的时间内找到解决方案。
但是,如果问题开始变大,请寻找更专业的软件。需要注意的是“基于约束的优化”和“约束编程”。
E.g。 ECLIPSe工具是一个开源约束编程环境。您可以在http://eclipseclp.org/examples/index.html上找到一些示例。你可以找到一个很好的例子是SEND + MORE = MONEY问题。在这个问题中,您有以下等式:
S E N D
+ M O R E
-----------
= M O N E Y
用字母替换每个字母,以便总和正确。 这也说明虽然你可以解决这个暴力问题,但还有更智能的方法来解决这个问题(见http://eclipseclp.org/examples/sendmore.pl.txt)。