特点
1.达到局部最优解但不能达到全局最优解(是优点也是缺点)
2.能求得最优子结构,所得到的解是子问题的最优解
假设一个大型办公场所有多个会议室,各个部门需要预订会议室举行不同的会议。为了提高会议室的使用率,需要设计一个算法来最大化会议室的利用率。
输入:
各个部门的会议预订信息,包括会议时间、持续时间、参与人数等。
会议室的容纳人数和可用时间段。
输出:
最优的会议室安排方案,以最大化会议室的利用率。
要求:描述你所设计算法的基本原理和实现步骤。解释如何利用算法考虑尝试不同的会议室分配方案,使得会议室的利用率最大化,尽可能安排更多的会议在可用时间段内举行,避免会议室空置。
思路; 根据收集的会议开始时间,持续时间和结束时间可以进行排序筛选
(1)若是按照开始时间排序,越早开始的先安排,那有些会议持续时间会很长,一天安排不了多少会议
(2)若是按照持续时间排序,持续时间越短的先安排会议,若是该会议在下午1:00-2:00进行,其他会议在这个时间段不相容,则pass
(3)按照结束时间排序,结束的越早就先进行安排,在选择接下来可以安排的会议
具体步骤:
- 将所有活动按照结束时间从早到晚排序。
- 选择第一个活动,将其加入结果集合中。
- 遍历所有剩余的活动,如果该活动的开始时间晚于前一个已经选中的活动的结束时间,则将该活动加入结果集合中。同时判断会议室是否容纳所有参会人数
- 重复步骤3,直到遍历完所有活动。
但是贪心算法只能达到局部最优解,可能有多种组合的出现。