摘要:
1.对回溯算法的理解 回溯法是按深度优先策略搜索问题的解空间树。首先从根结点出发搜索解空间树,当算法搜索至解空间树的某一结点时,先利用剪枝函数判断该结点是否可行 (即是否能够得到问题的解)。如果不可行,则跳过对该结点为根的子树的搜索,逐层向其祖先结点回溯;否则,进入该子树,继续按深度优先策略搜索。回 阅读全文
摘要:
1. 对贪心算法的理解 贪心算法(又称贪婪算法)是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不是从整体最优上加以考虑,所做出的选择是在某种意义上的局部最优解。 不是所有问题都能通过贪心算法得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会 阅读全文
摘要:
1. 实践题目 —— 程序存储问题 2. 问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算 阅读全文
摘要:
1. 对动态规划算法的理解 动态规划算法与分治法类似,其基本思想是将待求解问题分解成若干子问题,先求解子问题,再结合这些子问题的解得到原问题的解。与分治法不同的是,适合用动态规划法求解的问题经分解得到的子问题往往不是互相独立的,因此会存在子问题重复求解的情况,在递归求解的过程中,影响算法的时间复杂度 阅读全文
摘要:
1. 实践题目 —— 最大子段和 2. 问题描述 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。要求算法的时间复杂度为O(n)。 3. 算法描述 定义一个函数,返 阅读全文
摘要:
1.对分治法思想的体会 分治法思想是将一个规模较大的问题分成若干个与原问题相同、互相独立且规模大致相同的问题。运用分治策略可以提高一些算法的效率,如二分搜索算法与普通的搜索算法相比,在时间复杂度上有很大的改进。使用分治法,一个难点就是如何分割子问题,在解决这一问题上,需要用到平衡子问题的思想。但是, 阅读全文
摘要:
1. 实践题目——二分查找 2. 问题描述 输入n值(1<=n<=1000)、n个非降序排列的整数以及要查找的数x,使用二分查找算法查找x,输出x所在的下标(0~n-1)及比较次数。若x不存在,输出-1和比较次数。 输入格式: 输入共三行: 第一行是n值; 第二行是n个整数; 第三行是x值。 输出格 阅读全文
摘要:
1.在算法设计与分析课程中,我将采用C++进行编程,相关编程规范的链接为https://www.jianshu.com/p/df03f2def39d。 2.吴军博士的《数学之美》一书中有提到:“数学是解决信息检索和自然语言处理的最好工具。它能非常清晰地描述这些领域的实际问题并且给出漂亮的解决办法。” 阅读全文