【题目】【例3-4】活动选择【问题描述】假设有一个需要使用某一资源的n个活动组成的集合 S,S=(1,⋯,n) 。该资源一次只能被一个活动所占用,每一个活动有一个开始时间
针对活动选择问题,认真分析可以得出以下定理:对于任意非空子问题Sij,设am是Sij中具有最早结束时间的活动,那么: (1)活动am在Sij中的某最大兼容活动子集中被使用。 (2)子问题Sim为空,所以选择am将使子问题Smj为唯一可能非空的子问题。 有这个定理,就简化了问题,使得最优解中只使用一个子问题,在解决子问题Sij时...
(1)活动选择问题的最优子结构 定义子问题解空间Sij是S的子集,其中的每个获得都是互相兼容的。即每个活动都是在ai结束之后开始,且在aj开始之前结束。 为了方便讨论和后面的计算,添加两个虚构活动a0和an+1,其中f0=0,sn+1=∞。 结论:当i≥j时,Sij为空集。 如果活动按照结束时间单调递增排序,子问题空间被用来...
贪心法 简介 例1:01背包问题 例2:贪心法反例 说明 活动选择问题 简介 形式化证明(最早完成时间优先是最优的) 贪心法 简介 贪心法是设计算法中另一种常用的策略,就像分治法、回溯法和动态规划算法一样,其可用来解决最优化问题。经典贪心算法基本思想:
1. 前言 本节内容是贪心算法系列之一:活动选择问题,主要讲解了什么是活动选择问题,如何利用贪心算法解决活动选择问题,给出了活动选择问题的实现伪代码并进行分析,并用 java...
二.活动选择问题 有n个需要在同一天使用同一个教室的活动a1,a2,…,an,教室同一时刻只能由一个活动使用。每个活动ai都有一个开始时间si和结束时间fi 。一旦被选择后,活动ai就占据半开时间区间[si,fi)。如果[si,fi]和[sj,fj]互不重叠,ai和aj两个活动就可以被安排在这一天。该问题就是要安排这些活动使得尽量...
贪心算法(4):活动选择问题 贪⼼算法(4):活动选择问题 我们继续回到上⼀堂课留下的课外习题:活动选择问题。活动选择问题是很常见的场景。例如各个部门共享⼀个会议室,利⽤该算法能使会议室安排尽量多的会议。【问题】给你n个活动的开始时间和结束时间,从中选择你可以参与的活动,但是同⼀时间你只能...
活动选择问题:就是对给定的包含n个活动的集合S,在已知每个活动开始时间和结束时间的条件下,从中选出最多可兼容活动的⼦集合,称为最⼤兼容活动集合。不是⼀般性,设活动已经按照结束时间单调递增排序:f1≤f2≤...≤f n 例:设有11个待安排的活动,它们的开始时间和结束时间如下,并设活动按结束时间的...
活动选择问题与贪心算法 活动选择问题是一个经典的优化问题,它涉及到安排一组活动,使得在不冲突的情况下,所选择的活动数量最大。这个问题可以通过贪心算法有效解决。本文将详细讲解活动选择问题的背景、贪心算法的应用以及具体的Java实现,并辅以代码示例和甘特图。
现在请你设计一种贪心算法解决类似活动选择问题。 我们设计下列贪心算法的贪心策略:选择其余活动中完成时间最短的下一个活动,并且开始时间大于或等于先前所选活动的结束时间。 我们可以根据他们的完成时间对活动进行排序,以便我们始终将下一个活动视为最小完成时间活动。