布什戈门,真的要考这些东西啊?
对特定问题求解步骤的描述,是指令的有限序列。
对算法效率的一种度量,通常分为时间复杂度和空间复杂度。
描述算法运行时间随输入规模增长的增长速度,通常用大O符号表示。
表示算法执行过程中所需要的额外空间随输入规模增长的增长速度。
基于数学归纳法。
对于一个带有参数的问题,如果我们知道如何求解带有参数小于的问题,那么我们的任务就化为如何把解法扩展到带有参数的问题。
一个问题的最优解包含其子问题的最优解。
在每一步选择时只关注局部最优解,并希望通过每次所做的局部最优解产生全局最优解。
最优子结构、贪心选择性质
活动选择、哈夫曼编码、最小生成树
将问题分解为多个独立的子问题,分别求解子问题,再将其解合并成原问题的解。
快速排序、归并排序、二分查找
给定排好序的个元素,在这个元素找出一特定元素
取中间元素与进行比较:
如果等于中间元素,算法停止;
如果小于中间元素,则在序列的左半部分继续分治操作;
如果大于中间元素,则在序列的右半部分继续分治操作。
将待排序数组分成两半,递归地分别对每一半进行排序。将已有序的子序列合并,得到完全有序的序列。
将问题分解为多个重叠的子问题,通过存储子问题的解来避免重复计算,从而提高效率。
最优子结构、重叠子问题
0/1背包、最长公共子序列、矩阵链乘
目标:可行解
采用深度优先遍历产生状态空间树的结点,在每个决策点尝试所有可能的选择,如果满足约束条件,就进入下一步选择;如果产生冲突,就回退到上一步并尝试其他选择。
目标:最优解
采用广度优先遍历产生状态空间树的结点,并利用问题的上下界信息剪枝,提高算法效率。
回溯法的目标是找可行解,系统地尝试所有可能解。
分支限界法的目标是找最优解,通过剪枝策略减少搜索空间。
子集树:当问题是从个元素的集合中找出满足某种性质的子集时,相应的解空间树称为子集树。
排列树:当问题是要求出个元素满足某种性质的排列时,相应的解空间树称为排列树。
执行过程中依赖随机选择的算法。
对于相同的输入,随机算法每次都可能产生不同的输出。
常见的随机算法:蒙特卡罗算法、拉斯维加斯算法。
不保证解的正确性,但运行时间固定或可预期。
保证解的正确性,但运行时间不固定。
版权声明
① 本博客所有原创文章,除非另有特别声明,均采用CC BY-NC-SA 4.0/知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行授权。
② 本博客中,在文章内容之外使用的原创图片、动画、音频等多媒体素材的知识产权归属如下:
(i) 由博客作者独立创作的素材,其知识产权由博客作者单独所有;
(ii) 与他人合作创作的素材,其知识产权由博客作者与原创作者共同所有;
(iii) 对于特定素材,如有不同的版权归属,将在相应位置特别注明。
未经原作者或博客作者的明确授权,任何个人或组织不得在其他场合使用、复制、修改或传播这些素材。