算法
郗富琦
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
回溯法-01背包问题之一:递归模式
一、回溯法回溯法是一个既带有系统性又带有跳跃性的搜索算法。它在包含问题的所有解的解空间树中按照深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时,总是先判断该节点是否肯定不包含问题的解。如果肯定不包含,则跳过对以该节点为根的子树的系统搜索,逐层向其原先节点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。运用回溯法解题通常包含以下三个步骤:· 针对所给问题原创 2014-05-09 14:48:43 · 10951 阅读 · 0 评论 -
动态规划法-01背包问题
一 几个概念:最优化问题:有n个输入,它的解由这n个输入的一个子集组成,这个子集必须满足某些事先给定的条件,这些条件称为约束条件,满足约束条件的解称为问题的可行解。满足约束条件的可行解可能不止一个,为了衡量这些可行解的优劣,事先给出一定的标准,这些标准通常以函数的形式给出,这些标准函数称为目标函数,使目标函数取得极值的可行解成为最优解,这类问题称为最优化问题。二 最优性原理:对原创 2014-05-15 11:05:40 · 2993 阅读 · 1 评论 -
回溯法-01背包问题之二:顺序执行模式
上文已讲述了回溯法以及01背包问题的原理,本文讲述如何顺序执行解决01背包问题以及通过模板模式重构软件。一、顺序执行流程图图1无剪枝函数的01背包问题顺序执行算法流程图图2 有剪枝函数的01背包问题顺序执行算法流程图无剪枝函数是通用的深度遍历算法,为了减少搜索深度可通过剪枝函数处理完全不可能的分枝。与递归方案的区别主要表现在i>=n后需要“回溯”,即用后进先出的方式将物原创 2014-05-09 15:24:55 · 4838 阅读 · 0 评论 -
分治法-汉诺塔问题
一 基本概念分治法,顾名思义分而治之的意思,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。二基本思想及策略 分治法的设计思想是:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。 分治策略是:对于一个规模为n的问题,若该问题可以容易地解原创 2014-05-16 10:50:05 · 3914 阅读 · 0 评论 -
KMP算法
1.首先,字符串"BBC ABCDAB ABCDABCDABDE"的第一个字符与搜索词"ABCDABD"的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。2.因为B与A不匹配,搜索词再往后移。3.就这样,直到字符串有一个字符,与搜索词的第一个字符相同为止。4.接着比较字符串和搜索词的下一个字符,还是相同。5.直到字符串有一个字符,转载 2014-05-21 22:20:47 · 657 阅读 · 0 评论
分享