算法程序与设计知识点总结

  1. 算法是指解决问题的方法或者过程,是满足下列性质的指令序列:(1)输入:有0个或多个外部量作为算法的输入(2)输出:算法产生至少一个量作为输出(3)确定性:组成算法的每条指令是清晰的,无歧义的(4)有限性:算法中每条指令的执行次数有限,执行每条指令的时间也有限。程序是算法用某种程序设计语言的具体实现。程序可以不满足算法的性质四
  2. 可操作性最好且有实际价值的是最坏情况下的时间复杂性,O复杂度上界,Ω下界,上界的阶越低,下界的阶越高,评估越精确,越有价值。所需要的资源越多,该算法的复杂性越高,所需要的资源越少,复杂性越低
  3. 分治法的基本思想是讲一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。原则:平衡子问题,使子问题规模大致相等,比子问题规模不等要好
  4. 合并排序代码:public static void mergeSort(Comparable a[],int left,int right) {if(left<right){//至少有两个元素 int i=(right+left)/2;//取中点mergeSort(a,left,i);mergeSort(a,i+1,right);merge(a,b,left,i,right)//合并到数组b copy(a,b,left,right)//复制回数组a}}

其中算法merge和copy在O(n)内完成,因此合并排序对n个元素进行排序,在最坏情况下,T(n)={O(1) n≤1, 2T(n/2)+O(n) n>1}(解得T(n)=O(nlogn),由于排序的计算时间下界是Ωnlogn),所以合并排序是渐进最优算法

  1. 快速排序的步骤:(1)分解,以a[p]为基准元素将a[p:r]划分成3段a[p:q-1],a[p],a[q+1:r],使得a[p:q-1]中任何元素小于等于a[p],a[q+1:r]中任何元素大于等于a[p]。下标q在划分过程中确定。(2)递归求解:通过递归调用快速排序算法,分别对a[p:q-1]和a[q+1:r]进行排序(3)合并:由于对a[p:q-1]和a[q+1:r]的排序是就地进行的,所以在a[p:q-1]和a[q+1:r]都已排好的序后不需要执行任何计算,a[p:r]就已排好序
  2. 动态规划的步骤(1)找出最优解的性质,并刻画其结构特征(2)递归地定义最优值(3)以自底向上的方式计算出最优值(4)根据计算最优值时得到的信息,构造最优解
  3. 动态规划的两个基本要素:最优子结构(当问题的最优解包含了其子问题的最优解时,成为最优子结构)和重叠子问题(在递归算法自顶向下求解问题时,每次产生的子问题并不总是新问题,有些子问题被反复计算多次)
  4. 动态规划与分治法共同点:基本思想相同,都是将求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解中获得原问题的解。不同点:动态规划经分解得到的子问题往往是不相互独立的,而分治求解的问题可以相互独立
  5. 贪心算法是最优子结构+贪心选择性质(所求问题的整体最优解可以通过一系列局部最优的选择,即贪心来达到);仅在当前状态下做出最好的选择,即局部最优选择,然后再去解做出这个选择后产生的相应的子问题;自底向上解各个子问题

动态规划算法是最优子结构和子问题重叠;每步所作出的选择往往依赖于相关子问题的解,因而只有求出相关子问题后,才能做出选择;自顶向下解决,以迭代的方式做出相继的贪心选择,每做出一个贪心选择就将问题简化成规模更小的子问题

有的问题适合贪心算法而不适合动态规划,有的适合动态规划不适合贪心

  1. 回溯法求解目标:找出树中满足约束条件的所有解;搜索方式:深度优先;扩展结点:多次机会成为扩展结点,扩展结点变成活结点后又可成为扩展结点;树节点的生成顺序:生成最近一个有希望结点的单个子女;行进方向:随机性
  2. 分支限界求解目标:是找出满足约束条件的一个解或者找出使目标函数达到极大(小)的最优解。搜索方式:广度优先或最小耗费优先;扩展结点:每个活结点只有一次机会成为扩展结点;树结点的生成顺序:选择其中最有希望的点,并生成它的所有子女;行进方向:活结点表,搜索朝着解空间树上有最优解的分支推进

 

  1. 扩展方式(第三个)回溯法(如果当前的扩展结点不能再向纵深方向移动,则当前扩展结点为死结点,此时应回溯到最近的一个活结点处,并使此活结点成为扩展结点)分支限界法(每一个活结点只有一次机会成为扩展结点,活结点一旦成为扩展结点就一次性产生所有儿子结点,在这些儿子节点中,导致不可行解或非最优解的儿子结点被舍弃,其余儿子结点被加入到活结点表之中,此后,从活结点表中取出下一结点成为当前扩展结点,并重复上述扩展结点的过程,这个过程一直持续到找到所需的解或活结点表为空为止)

猜你喜欢

转载自blog.csdn.net/nanaz11/article/details/85227036
今日推荐