期末考试-算法分析
文章平均质量分 76
《计算机算法基础》(作者:余祥宣、崔国华、邹海明)根据考试范围进行笔记整理
AELee_
这个作者很懒,什么都没留下…
展开
-
算法(九)NP难度和NP完全
1 P与NP1.1 易解与难解易解的:可以在多项式时间内求解的问题。难解的:不能在多项式时间内求解的问题。1.2 优化问题与判定问题最优化问题:题中求的问题(求k的最大/最小值)判定的问题:是否存在k使问题可以成立举例:1.3 P类问题目前没有找到多项式算法,且又无法证明不存在易解的解法但是发现,所有的P类问题,都有一个特征——多项式时间可验证:在多项式时间内求解是困难的,但是在多项式时间内验证一个解是否是正确的是简单的。1.4 不确定算法对于有解的每个实例,不确定算法都会在原创 2021-06-19 22:16:01 · 1736 阅读 · 0 评论 -
算法(八)分枝-限界法
1 定义1.1 部分定义活结点:没有生成全部儿子结点死结点:儿子已经全部生成的结点,或已经剪枝无需向下扩展的结点E-结点:正在生成其儿子结点的活结点。1.2 与回溯法的异同(重要)同:都是在解空间树上搜索问题解的算法。异:求解目标回溯法:找出解空间树中满足约束条件的所有解。分支限界法:找出满足条件的一个解或者找到使某个函数达到极大或极小的解,即某种意义下的最优解。解空间树的构造过程:回溯法:当前E-结点一旦生成一个新的子结点,孩子就进入活结点表,且变成新的E结点分支限界法:当前E原创 2021-06-19 14:53:34 · 1744 阅读 · 0 评论 -
算法(七)回溯
回溯问题一大解:void f(){ for(每一种情况){ if(这种情况可以尝试){ 写入这一种情况; if(没结束) f(); //递归 else 输出; 把写入的再改回来; //因为要在下一次循环可能写入下一种情况 //改回来的前提是写入会影响本递归层的下一次循环 } }}定义解空间:由根到叶节点的所有路径所定义。状态空间树:解空间的树结构。(感觉解空间树也是这个定义)问题状态:树的每一个节点都确定求解问题的一个问题状态。状态空间:由原创 2021-06-19 09:29:14 · 761 阅读 · 0 评论 -
算法(六)动态规划
总结这个东西真的比自己复习多浪费了不少的时间,如果你觉得对你有帮助,就留下一个赞吧。1 前言小心考简答。1.1 多阶段决策问题这么一类问题,它们的活动过程可以分为若干个阶段,而且在任一阶段后的行为都仅依赖于i阶段的过程状态,而与i阶段之前的过程如何达到这种状态的方式无关。贪心也属于一种一系列贪心决策的多阶段决策。1.2 最优性原理即什么时候使用动态规划:无论过程的初始状态和初始决策是什么,其余的决策都必须相对于初始决策所产生的状态构成一个最优决策序列。如果所求解问题的最优性原理成立,则说明原创 2021-06-17 11:48:01 · 978 阅读 · 3 评论 -
算法(五)贪心方法
1.背包问题1.1 题目1.2 算法(GREEDY-KNAPSACK)太简单了,把单位重量价格贵的往里放就行。其中,p是价格,w是重量,x是物品放进去的比例。1.3 定理这个证明要求会。证明思路:先设最优解X= (x1_11,x2_22,…,xj_jj,…,xn_nn)如果x都=1,即所有物品都选了,那么一定是最优解。如果x不都是1,那么设j是第一个≠1的x的下标,即X = (1,1,1,…,1,xj_jj,0,0,0,…,0)。如果X不是最优解,那么一定有一个最优解Y原创 2021-06-10 22:49:31 · 1228 阅读 · 3 评论 -
算法(四)分治法
1 一般方法1.1 基本的二分思想没啥可说的,贴图了。1.2 二分策略的计算时间g(n)就是个O(1),放这里就是让式子看起来更恶心一点。每一层要把这部分分成的两小部分计算完之后再合并,T(n/2)就是每一个小部分计算需要的时间,f(n)就是合并过程需要的时间,因为合并需要的时间是和n有关系的,所以f(n)不能忽略。1.3 更一般的情况我觉得这就是考试考点了吧,把这章所有东西改成三分出题,二分考的应该有限,重点是弄清思想。2 二分检索2.1 二分检索算法(BINSRCH)2.1.1原创 2021-06-09 18:51:07 · 862 阅读 · 0 评论 -
算法(三)递归算法
之前遇到了一点事情,今天开始应该能保持每天一更到两更,不过会跳过一些过于基础的知识。1 递归算法设计1.1 递归算法的基本形式递归两大要素:递归出口、调用本身的函数1.2 简单0/1背包问题在递归这打dp的擦边球是吧。本题每个物品只有质量属性,只需要使放入背包的质量之和恰好为m即可。递归f(m,n) m为剩余质量,n为正在考虑第几件物品递归分为以下四种情况:(1)(出口)n=0时,return mn_{n}n==m;(2)mn_{n}n=m时,return true;(3)mn原创 2021-06-02 13:01:28 · 666 阅读 · 0 评论 -
算法(二)分析算法
第二章只有一个知识点计算时间的渐进表示定义记住这几个定义,以后的整明全靠这些定义了。这几个分别表示,g(x)是f(x)的:渐进上界、渐进下界、渐进确信界。(考试说这几个词知道是啥就行)这个定理说是定理,不如说就是个例子而已…O的时间比较从计算时间上把算法分为两类:多项式时间算法:指数时间算法:这里有一道考试题我得去问一下再更新。证明考试真题里有一道很像的,不过是把O换成Ω,max换成min而已,思路应该一样的。幸好我已经有心理预期,这里f’(n)是另一个函数而已,你可原创 2021-05-29 13:49:31 · 528 阅读 · 0 评论 -
算法(一)引言
想了一上午要怎么说,不想用太过激的言辞。有关这本书这本书是真的不推荐,只是用来期末考试看看就好了,如果你想好好学算法提升代码水平,请移步其他视频或教材。本教材在理论上的讲解不是非常到位,不是很令人舒服的代码写法和不易读的讲解使这本书也无法成为一个很好的专业参考书籍。本教材存在一些很经典的例题,但是也存在一些只留存于本教材的“考试重点”,其他教材并不涉猎。有关学校的教材选择另外,某个学校选教材的本领真是不错,不亏是本科学校。在c语言和数据结构两本书已经让同学丧失了学习本校课程的前提下,选择了这本更原创 2021-05-29 12:23:39 · 333 阅读 · 3 评论