算法
zz的博客
这个作者很懒,什么都没留下…
展开
-
算法——分治法
步骤分治法的基本步骤是:分解、求解子问题、合并。下面以快速排序、和归并排序为例子进行说明为例子快速排序分解: 选取基准元素,将原序列a[s…t]分解成两个子序列a[s…i-1]和a[i+1…t], 其中a[i]是基准元素的位置。求解子问题:若子序列的长度为0或1直接返回,否则递归地解决子问题合并:由于排序过程是就地进行的,所以合并不需要任何操作可以看出,快速排序的主要操作就是分...原创 2020-01-07 14:32:01 · 2877 阅读 · 0 评论 -
算法--贪心法
文章目录性质贪心选择性质最优子结构典例时间安排问题多机调度问题性质贪心选择性质整体最优可通过一系列的局部最优选择达到。证明贪心选择性质一般采用两种思路:一种是类似归纳法直接证明贪心选择策略是最优的,比如用反证法证明曼哈顿树是最优的。使用贪心算法前一般需要“排序”数据,选择如何对数据进行排序是求解问题的关键之一。局部是相对于排序后的数据而言的,比如一组有序数据S[1…n]的局部...原创 2019-12-15 11:00:44 · 145 阅读 · 1 评论 -
算法--技巧
文章目录循环扫描排列数循环扫描问题:存在一个序列,我们需要循环地从头扫到尾,并且这个序列的大小可能会变动。常规思路:用整数 i 作为指针,L为序列的长度,(i++)%L 代表下一个扫描的数,注意可能更新L其它思路:默认 i = 0(隐含指针指向头部),不断地将第一个数移到最后例:n个小朋友围成一个圈,顺时针依此编号为1~n,现在从小朋友1开始报数1,顺时针依此报数,报数依此递增。等小朋...原创 2019-12-15 10:39:10 · 64 阅读 · 0 评论 -
算法-动态规划
文章目录原理性质关键子问题动态规划数组状态转移方程实现思路原理性质能采用动态规划求解的问题一般要具有3个性质:最优性原理:如果问题的最优解所包含的子问题也是最优的,就称该问题具有最优子结构,即满足最优性原理。无后效性,某个阶段状态一旦确定,就不受这个状态以后决策的影响。有重叠子问题:即子问题之间不是独立的,一个子问题在下一阶段决策中可能被多次使用到。关键子问题**子问题不一定...原创 2019-11-27 20:07:28 · 193 阅读 · 0 评论 -
算法学习-回溯、分支限界法
文章目录回溯法回溯法概念:解空间、解空间树(状态空间)回溯法 = 深度优先搜索 + 剪枝问题类型:所有解、最优解子集树:当问题是从n个元素的集合中找出满足某种性质的子集时,想应的解空间树称为子集树排列树:当问题是求解n个元素的满足某性质的排列时,得到的解空间树称为排列树活结点:自己已生成,但孩子节点没有全部生成拓展节点:正在产生孩子节点的节点约束函数:剪除不满足约束的子树限...原创 2019-11-27 13:39:28 · 648 阅读 · 0 评论