c语言贪心算法排课,*排课软件常用算法介绍*兴文排课*学校经常用的免费自动排课软件...

将需要求解的课表问题逐层分解,直到得到一个最小单元的不可在分解、可以直接求出答案的子问题。分解出来的所有子问题按层次关系构成一颗子问题树。树根是课程表问题。课程表问题的解依赖于子问题树中所有子问题的解。动态规划算法通常用于求一个问题在某种事先设定条件下的最优解。分解步骤如下:1. 分析最优解的性质,并构造最有解结构。

2. 循环处理各层最优解。

3. 以自底向上的方式计算出最优解。

4. 根据计算最优解时得到的信息,构造一个最优解。

步骤1~3是动态规划算法的基本步骤。在只需要求出最优解的情形,步骤4可以省去。若需要求出问题的一个最优解,则必须执行步骤4。此时,在步骤3中计算最优解时,通常需记录更多的信息,以便在步骤4中,根据所记录的信息,快速地构造出一个最优解。

二、贪心算法

很多排课专家通常使用贪心算法去解决课程表编排问题,兴文排课软件利用人就是贪心算法。贪心算法就是做出在当前看来最好的选择。即:贪心算法并不是从整体最优上考虑,而是作出在某种意义上的局部最优的选择。贪心算法对所有问题不是都能得到整体最优解,但是对于范围相当广的许多问题它能产生整体最优解,如单源最短路径问题,最小支撑树问题等。在一些情况下,即使贪心算法不能得到整体最优解,但其最终结果却是最优解的很好的近似解。

三、回溯法

概括地说,回溯法是一个既带有系统性又带有跳跃性的搜索法。它在包含问题所有解的一颗状态空间树上,按照深度优先的策略,从根出发进行搜索。搜索每到达状态空间树的一个节点,总是先判断以该节点为根的子树是否肯定不包含问题的解。如果肯定不包含,则跳过对该子树的系统搜索,一层一层地向它的祖先节点继续搜索,直到遇到一个还有未被搜索过的儿子的节点,才转向该节点的一个未曾搜索过的儿子节点继续搜索;否则,进入子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根的所有儿子都已被搜索过才结束;而在用来求问题的任一解时,只要搜索到问题的一个解就可结束。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值