问题描述:
某公司需要在一天内安排多个项目任务,每个任务有明确的开始时间、结束时间和所需资源量(如人力、设备等)。资源总量有限(例如最多提供 10 个单位资源),且同一时间内,已分配的资源总和不能超过资源上限。设计一个贪心算法,计算在资源约束下,最多能完成多少个项目任务。
具体要求:
-
贪心策略设计:
- 详细说明如何选择贪心策略(如优先选择结束时间早的任务、优先选择资源需求小的任务等),并解释该策略在资源约束下的有效性。
- 若策略存在反例(无法保证全局最优),需分析问题并提出改进策略。
-
代码实现:使用 Python/Java/C++ 任一语言实现算法,要求代码结构清晰,添加必要注释,并支持输入任意数量的任务和资源总量。
-
复杂度分析:分析算法的时间复杂度和空间复杂度,结合贪心策略说明计算依据。
-
扩展需求:
- 若任务存在优先级(例如高、中、低三个等级),如何修改算法以优先安排高优先级任务?
- 若资源可动态回收(如任务结束后释放资源),如何调整贪心策略以优化任务数量?