摘要:
1.实践题目 (工作分配问题) 2.问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 3.算法描述(包括解空间,画出测试样例的解空间树,剪枝(约束函数或限界函数)方法描述) 解空 阅读全文
摘要:
1.你对回溯算法的理解 答:回溯算法可以系统地搜索一个问题的所有解或任一解。是一个既带系统性又带跳跃性的搜索算法。回溯法就是从根结点开始出发,以深度优先方式搜索整个解空间,这个开始的结点是活结点,也是扩展结点,在当前扩展结点处,往左深入搜索,如果不符合约束条件,则为死结点,返回上一个扩展结点,往右搜 阅读全文
摘要:
1.实践题目 7-1 最优合并问题 (100 分) 题目来源:王晓东《算法设计与分析》 给定k 个排好序的序列, 用 2 路合并算法将这k 个序列合并成一个序列。 假设所采用的 2 路合并算法合并 2 个长度分别为m和n的序列需要m+n-1 次比较。试设 计一个算法确定合并这个序列的最优合并顺序,使 阅读全文
摘要:
1.你对贪心算法的理解(2分) 定义:贪心算法是指在每一步求解的步骤中,它要求“贪婪”的选择最佳操作,并希望通过一系列的最优选择,能够产生一个问题的(全局的)最优解。 特征: (1)可行的:即它必须满足问题的约束。 (2)局部最优:它是当前步骤中所有可行选择中最佳的局部选择。 (3)不可取消:即选择 阅读全文
摘要:
一、实践题目 7-3 编辑距离问题 (30 分) 设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括 (1)删除一个字符; (2)插入一个字符; (3)将一个字符改为另一个字符。 将字符串A变换为字符串B所用的最少字符操作数称为字符串A到 B的编辑距离,记为d( 阅读全文
摘要:
一、对动态规划的理解 1.基本概念 动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 2.分治法的问题 子问题是相互独立的,如果子问题不是相互独立,分治法将重复计算公共子问题,效率很低。( 阅读全文
摘要:
实践题目:7-1 问题描述:使用二分查找算法在n个非降序排列的整数中查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 算法描述:将n个元素分成个数大致相同的两半,取a[mid]与x比较。如果x=a[mid],则找到x,算法终止;如果xa[mid],则只在a的右半部继续搜索x。同时,在while语句里加一个b统计比较次数。 代码实现: 1 #include ... 阅读全文
摘要:
一、对二分法的理解 二、结对编程的感悟 今天在算法课上两个人一起打代码,事实证明有个人看着我打代码真的可以减少很多傻乎乎的Bug,没有思路的时候还可以讨论各自的想法,会让本来很枯燥的打代码变得很有趣。此外,还可以多一点学习别人的代码,学习别人的优点,补充自己的不足之处。希望以后可以和我的拍档相互监督 阅读全文