![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法设计初步
针对华科笔试,这里内容主要偏理论
云与尘呀?
这个作者很懒,什么都没留下…
展开
-
笔试押题之动态规划
动态规划有两个重要因素:最优子结构和重叠子问题。一般求解步骤:证明最优子结构性,写出状态方程,自底向上求解,重构解。下面就我遇到的题目进行总结1.一维dp[]问题汇总a.最大连续子序列和以dp[i]表示第i个数字结尾的最大连续子序列和。看dp[i]和dp[i-1]的关系如果dp[i-1]>0,显然dp[i]=A[i]+dp[i-1],反之dp[i]=A[i]b.最长不下降子序列以dp[i]表示以i结尾的最长不下降子序列长度。dp[i]的关系是和前面的dp[1…i-1]均有关系,不能仅由原创 2020-05-09 11:13:11 · 186 阅读 · 0 评论 -
算分导论上的伪代码要求
先前总结的规则可以参照两种进行伪代码的书写,主要是利用后者的参数赋值和前面结合吧。原创 2020-05-07 15:58:06 · 102 阅读 · 0 评论 -
回溯法与分枝—限界法的区别以及分支限界法分类以及LC学习
区别首先理解什么是状态空间树。状态空间树:是指解空间的树结构在状态空间树生成过程中有3类结点:活结点、E-结点、死结点而回溯法与分支限界法的区别主要在于:构造状态空间树的过程不一样。回溯法是利用深度优先搜索构造,分支限界法是用广度优先搜索构造。分类接下来了解分支限界法。可以利用队列或栈来导出分支限界法,所以依次分支限界法可以分为:FIFO(队列)检索、LIFO(栈)检索但两种扩...原创 2020-05-05 10:49:20 · 7482 阅读 · 0 评论 -
贪心算法的证明题
贪心算法的证明一般是比动态规划要复杂。原因是贪心算法的证明有两个,一个是最优子结构,另外一个是贪心选择性质。贪心选择性质: 可以通过局部最优选择来构造全局最优解证明:一般考虑某个子问题的最优解,然后考虑用一个贪心选择替换其中某个选择,修改此解,导出更小子问题。最优子结构同动态规划,而且其实一般也不是特别需要证明,关键还是在证明问题具有贪心选择性质,下面是尝试证明。1.活动选择问题贪心...原创 2020-05-04 10:20:00 · 3536 阅读 · 0 评论 -
动态规划的证明题
动态规划一般用来解决最优解问题,且一般要求这样的问题具有最优子结构和重叠子问题。证明一个动态规划问题的成立往往在于求证其具有最优子结构:该问题的最优解包含子问题的最优解。最优子结构的证明步骤:做出选择,划分子问题,假设该问题最优解成立,而子问题的解不是最优解,反证,利用子问题的最优解推出与该问题最优解矛盾,得证。下面请看几个实例证明:1.钢条切割问题证明:我们不妨选择n英寸长的最优解...原创 2020-05-03 11:07:36 · 2684 阅读 · 0 评论 -
绪论以及递归式上界函数的证明
循环不变式循环不变式主要用来证明算法的正确性。其定义是:第一次进入循环前成立,之后每次循环还成立的关系。证明其大概分为下面三个过程:初始:进入循环前成立保持:每次循环之后成立终止:循环能在有限次结束总结前两步类似于数学归纳法,第三步保证有穷性。限界函数相关3个符号,渐进紧确界、上界函数、下界函数。如何求解递归式的限界函数?代换法:这里值得注意的是带入那一步,是后续推导的...原创 2020-05-03 09:30:16 · 607 阅读 · 0 评论 -
算法设计初步之动态规划
理论知识动态规划通常用来求解最优化问题。最优化问题:这类问题的解可能有多个,每一个解对应一个值,我们希望寻找具有最优值的一个解。适用于动态规划求解对最优子问题一般有两个要素:最优子结构和重叠子问题。最优子结构是指:一个问题的最优解包含子问题的最优解;重叠子问题是指:问题的递归算法会反复求解相同的子问题这里有一个要点,如何证明一个问题具有最优子结构性质?我们采用复制—粘贴法:一般用反证法...原创 2020-04-08 19:57:36 · 456 阅读 · 0 评论