贪心法求解会场安排问题

您所在的位置:网站首页 tsp问题求解流程 贪心法求解会场安排问题

贪心法求解会场安排问题

2023-05-26 01:10| 来源: 网络整理| 查看: 265

实验内容:

        本实验要求基于算法设计与分析的一般过程(即待求解问题的描述、算法设计、算法描 述、算法正确性证明、算法分析、算法实现与测试),使用贪心法求解会场安排问题,以期 从实践中理解贪心法的思想、求解策略及步骤。有余力者,可以巩固单源最短路径、最小生 成树、哈夫曼编码等基于贪心策略的求解算法的练习。

实验目的:

◆ 理解贪心法的核心思想以及分治法求解过程。

实验步骤:

步骤 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