摘要: 一、实践题目(工作分配问题) 二、问题描述 有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 三、算法描述 1.解空间树 2.剪枝方法描述 if (cc+a[i][x[j]]<bestc){ 阅读全文
posted @ 2018-12-23 19:55 苌晓娜 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 一、对回溯算法的理解 回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在问题的解空间树中,按深度优先策略,从根节点出发搜索空间树。回溯法求解问题时,要回溯到根,且根节点的所有子树都已被搜索遍才结束。回溯法求解问题的一个解时。只要搜索到问题的一个解就结束,这种以深度优先方式系统搜索问题解的算法称为回 阅读全文
posted @ 2018-12-23 19:42 苌晓娜 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 程序存储问题 2.问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最多 阅读全文
posted @ 2018-12-02 12:40 苌晓娜 阅读(104) 评论(0) 推荐(0) 编辑
摘要: 1.对贪心算法的理解 对于具有最优子结构性质的问题,除了使用动态规划求解之外,还有另外一种更为简便的算法,就是贪心算法。贪心算法更为简单,更直接且求解效率更高。贪心算法不是对所有问题都能得到整体最优解,但对范围相当广的许多问题都能产生整体最优解或者最优解的很好的近似解。贪心算法通过一系列的选择得到问 阅读全文
posted @ 2018-11-29 16:42 苌晓娜 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 1.对动态规划算法的理解 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。 动态规划算法的基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题 阅读全文
posted @ 2018-11-12 00:01 苌晓娜 阅读(122) 评论(0) 推荐(0) 编辑
摘要: 1.实践题目 最大子段和 2.问题描述 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 3.算法描述 最大子段和也是动态规划的一 阅读全文
posted @ 2018-11-05 21:40 苌晓娜 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 一、实践题目 改写二分搜索算法 二、问题描述 设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 三、算法描述 依然采用了二分搜索算法的大部分代码,然后进行了简单修 阅读全文
posted @ 2018-10-21 17:00 苌晓娜 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 一、对二分法思想的体会 1.二分法是运用分治策略的典型例子,也称折半查找,充分利用了元素间的次序关系,是一种效率较高的查找方法。实现二分算法有递归和非递归两种方式。 2.基本思想:将n个元素分成大致相同的两半,取a[n/2]与x作比较。如果x=a[n/2],则找到x,算法终止;如果a<[n/2],则 阅读全文
posted @ 2018-10-21 16:17 苌晓娜 阅读(266) 评论(0) 推荐(0) 编辑