
算法学习
文章平均质量分 54
lianup
这个作者很懒,什么都没留下…
展开
-
算法学习记录-图
我,算法渣渣,打钱。 停了好长一段时间算法学习了,上个学期学完数据结构以后,学的时候还是清晰的,写也会写一点,但是现在,连图的基本构造我都忘得一干二净了。今天又开始看视频,算法的学习是打算视频讲一个点,我听完之后找一些题目做来加固训练这样子。今天看的是关于图的基本构造,以及深度和广度优先搜索算法和拓扑排序。 这是我根据视频写(按照记忆记下来)的算法,我觉得还是要记录一下,才能加深我的印象。...原创 2018-03-31 17:52:09 · 183 阅读 · 0 评论 -
算法学习——dijkstra算法
dijkstra算法可求单源最短问题,解说可查看blog:https://blog.youkuaiyun.com/yalishadaa/article/details/55827681在CCF中的交通规划一题中遇到,我用的做法是0分(但是我找不出来问题,虽然说用临界矩阵存数组会过大可能会导致内存溢出,但是不可能10分都没有,而且测试数据也过了),思想就是用dijkstra计算最短路径,并且在沿途中纪录下得...原创 2018-12-11 19:33:07 · 237 阅读 · 0 评论 -
算法学习——排序
附上wiki参考链接:https://zh.wikipedia.org/wiki/%E6%8E%92%E5%BA%8F%E7%AE%97%E6%B3%95#简要比较关于排序算法的稳定性:https://zhuanlan.zhihu.com/p/36120420冒泡排序描述:它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。时间复杂度:最好=O(n)(...原创 2018-12-17 19:32:06 · 276 阅读 · 0 评论 -
算法学习——回溯法
最近在准备CCF,所以一并把算法也一起复习了一下。下面的题目是老师让我们按照回溯法书上的模板写的题,纪录一下。我太菜辽,呜呜呜。package com.lianup.suanfa.Backtrack;/** *题目:小明从n*n矩阵的左下方走到右上方,并且不能够走过矩阵从右到左的对角线的上方,每次只能向上或者向右走一步 * 求出所有走法 * 要求:按照回溯法的格式写 */...原创 2018-12-11 16:30:22 · 223 阅读 · 0 评论 -
算法学习——分支限界法
实质回溯法的改进版本 与回溯法的比较不同:回溯法为“盲目搜索”(DFS),分支限界法为最“好”优先,智能搜索。共同:统称为树搜索技术,都在搜索解空间树,并剪枝。 缺陷只适用于组合优化问题 程序框架 // 以求最大值为例 public void branchbound(){ // 初始化 max = 0;...原创 2018-12-14 20:17:21 · 671 阅读 · 0 评论 -
算法学习——回溯法
回溯法的实质回溯法可看作穷举法的一种实现方式 计算过程每步只构造一个部分节并立即对此部分解进行评估。若此部分解有可能拓展为“所求解”,则继续扩展;反之此部分解不可能扩展为所求解,则继续尝试其他部分解。直到穷尽一切可能。 解空间与解空间树描述回溯法时,可有两种解空间树选择。一是子集树,一是排列树。解空间:所有可能的解构成的集合。解空间树:将解空间组织成树结构。...原创 2018-12-14 19:25:37 · 4705 阅读 · 0 评论 -
算法学习——贪心法
本质特征(区分dp、分治)只选择一个子问题 特点1.快2.不能保证获得最优解,可以作为近似解,一般,在特殊情况下可保证最优解。3.适合于组合优化问题 设计关键贪心选择策略(分解方案) 程序写法S = s0,C = c0; // 部分解S,候选集Cwhile(!complete(s)){ x = select(c); // 贪心选择主体 ...原创 2018-12-14 10:53:12 · 472 阅读 · 0 评论 -
算法学习——动态规划
动态规划 求解的基本步骤1)找出最优解的性质,并刻画其结构特征;2)递归地计算最优值;3)以自底向上的方式计算出最优值。 与分治法的区别其得到的子问题是相互独立的。 例子1、0-1背包问题问题描述:给定n件物品和一背包。物品i的重量是wi,价值为vi,背包的容量为C。问:应该如何选择装入背包的物品,使得装入背包中物品的总价值最大?(每种物品只有装与不...原创 2018-12-13 20:16:06 · 163 阅读 · 0 评论 -
算法学习——递归与分治策略
分治法的基本思想将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。 一般设计模式f(p){递归出口分解for(i = 1;i <= k;i++){ yi = f(pi); // for循环的此部分为递归求解过程}return merge(y1,...,yk); 例子1、归并排序思想:用分治策略实现...原创 2018-12-13 18:52:01 · 489 阅读 · 0 评论 -
算法学习——KMP算法
KMP算法字符串匹配算法时间复杂度:O(n)难点:生成next[]数组,还有理解为什么这样匹配是正确的生成next数组:自己动手举个例子会好理解为什么这样匹配是正确且避免回溯:若str1和str2已经匹配了一段,则str2是返回其最大前缀的后一个字符的位置(即next[x]),此时str1前面的字符和str2的最大前缀还是匹配上的,这就避免了回溯了。详细讲解可参考blog:...原创 2018-12-17 21:51:24 · 168 阅读 · 0 评论