贪心法求解会场安排问题 |
您所在的位置:网站首页 › tsp问题求解流程 › 贪心法求解会场安排问题 |
实验内容: 本实验要求基于算法设计与分析的一般过程(即待求解问题的描述、算法设计、算法描 述、算法正确性证明、算法分析、算法实现与测试),使用贪心法求解会场安排问题,以期 从实践中理解贪心法的思想、求解策略及步骤。有余力者,可以巩固单源最短路径、最小生 成树、哈夫曼编码等基于贪心策略的求解算法的练习。 实验目的: ◆ 理解贪心法的核心思想以及分治法求解过程。 实验步骤: 步骤 1:理解问题,给出问题的描述。 设有 n 个会议的集合 C={1,2,…,n},其中每个会议都要求使用同一个资源(如会议 室),而在同一时间内只能有一个会议使用该资源。每个会议 i 都有要求使用该资源的起始时间 ai 和结束时间 bi,且 ai < bi 。如果选择了会议 i 使用会议室,则它在半开区间[ai, bi)内占用该资源。如果[ai, bi)与[aj , bj)不相交,则称会议 i 与会议 j 是相容的。会场安排问题要 求在所给的会议集合中选出最大的相容活动子集,也即尽可能地选择更多的会议来使用资源。 步骤 2:算法设计,包括算法策略与数据结构的选择; 1.初始化。开始时间存入数组 A;结束时间存入数组 B 中且按照结束时间的非减序排 序,A 相应调整;集合 C 存储解,会议 i 如果在集合 C 中,当且仅当 C[i]=true; 2.根据贪心策略,首令 C[1]=true; 3.依次扫描每一个会议,如果会议 i 的开始时间不小于最后一个选入 C 中的会议的结束 时间,则将会议 i 加入 C 中;否则,放弃,继续检查下一个会议 C 中会议的相容性。 步骤 3:描述算法。希望采用源代码以外的形式,如伪代码、流程图等; 要尽可能多的安排会议,显然采取贪最早结束时间的策略。 设会议 i 的起始时间 ai 和结束时间 bi 的数据类型为整形(限制在整点); 则 GreedySelector 算法描述如下: Void GreedySelector(int n,int b[ ],int e[ ],bool A[ ]) { //b 中元素按非递减序排列,a 中对应元素做相应调整; int I,j; C[1]=true; //初始化选择会议的集合 C,只包含会议 1; j=1;i=2; //从第二(i)个会议开始寻找与会议 1(j)相容的会议; while(i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |