算法
A鱼翔浅底A
每天进步一点点...
QQ:1106533113
展开
-
算法简介:回溯算法
算法简介算法简介回溯算法定义回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就"回溯"返回,尝试别的路径.回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标.但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为"回溯点".许多复杂的,规模较大的问题都可以使用回溯法,有"通用解题方法"的美称.算法应用全排列问题迷宫问题独立子图问题博弈问题原创 2020-05-29 18:13:23 · 199 阅读 · 0 评论 -
算法简介:分治算法
算法简介算法简介分治算法分治算法(divide and conquer).分治算法由两部分组成:分(divide):递归解决较小的问题(当然,基准情况除外).治(conquer):然后,从子问题的解构建原问题的解.传统上,在其代码中至少含有两个递归调用的例程叫作分治算法,而代码中只含一个递归调用的例程不是分治算法.我们一般坚持子问题是不相交的(即基本上不重叠).分治算法的运行时间比如:T(N) = 2T(N/2) + O(N) 的解为 O(NlogN)...原创 2020-05-28 12:11:11 · 154 阅读 · 0 评论 -
算法简介:排序算法---快速排序
算法简介算法简介快速排序1. 介绍这里就补多少了,网上大佬介绍的很多2. 解决问题排序问题3. 算法思想:二分法思想递归思想4. 时间复杂度:最坏的时间复杂度:O(N^2)平均时间复杂度:O(NlogN)5. 算法特点:数据越有序,越快6. 代码示例快速排序...原创 2020-04-16 17:41:01 · 101 阅读 · 0 评论 -
算法简介:贪婪算法----近似装箱问题
算法简介算法简介近似装箱问题原创 2020-05-27 17:52:03 · 1349 阅读 · 0 评论 -
算法简介:动态规划
算法简介算法简介动态规划白话说就是一种解决棘手问题的方法,它将问题分成小问题,并先着手解决这些小问题,最后得到最优解2. 解决问题通常需要在给定约束条件下优化某种指标时应用,如下:背包问题要高度注意:"背包"可不仅仅是指例子中物理的背包,是指一种约束条件.比如说要在规定时间去旅游,那么这个"背包"就是时间!最长公共子串(子序列)问题3. 时间复杂度:采用动态规划网格算法...原创 2020-05-05 16:15:30 · 149 阅读 · 0 评论 -
算法简介:贪婪算法
算法简介算法简介贪婪算法每步都选择局部最优解,最终得到的就是全局最优解.属于近似算法的一种2. 解决问题主要是为了解决类似NPC问题,比如(包括但不限于):背包问题集合覆盖问题旅行商问题3. 时间复杂度:如不用贪婪算法,采用精确算法:背包问题:O(2^N)集合覆盖问题:O(2^N)旅行商问题:O(N!)4. 代码示例背包问题每步都选择局部最优解,这...原创 2020-05-04 09:39:36 · 247 阅读 · 0 评论 -
算法简介:拓扑排序
算法简介算法简介拓扑排序1. 相关概念有向无环图:如果一个有向图的任意顶点都无法通过一些有向边回到自身,那么称这个有向图为有向无环图.拓扑排序是将有向无环图的所有顶点排成一个线性序列,使得对图中的任意两个顶点u v,如果存在边u->v,那么在序列中u一定在v前面,这个序列又被称为拓扑序列.说直白点:拓扑排序,就是用来确定事物发生的顺序的.2. 解决问题借助有向无环图描述一...原创 2020-04-29 15:08:50 · 481 阅读 · 0 评论 -
游戏设计------A* 寻路算法
强烈建议参考以下网址:A*寻路算法简介定义是一种启发式的寻路算法思想F = G + H 公式的理解Dijkstra算法思想的理解示例代码A*寻路算法代码原创 2020-04-27 16:38:37 · 169 阅读 · 0 评论 -
算法简介:排序算法---归并排序
算法简介算法简介归并排序1. 介绍这里就不多说了,网上大佬介绍的很多2. 解决问题排序问题求逆序对的个数3. 时间复杂度:O(NlogN)4. 算法思想:分治思想递归思想5. 算法特点:归并排序 = 归并排序主体递归 + 合并算法归并排序的主体部分的temp参数是主调函数分配内存合并其实是递归回溯的时候自下而上的合并该排序可以说是以空间换时间的排序算...原创 2020-04-23 11:58:22 · 94 阅读 · 0 评论 -
算法简介:排序算法---插入排序
算法简介算法简介插入排序1. 介绍这里就不多说了,网上大佬介绍的很多2. 解决问题排序问题3. 时间复杂度:最坏和平均的时间复杂度均为:O(N^2)稳定排序4. 算法思想:插入排序将数列划分为"已排序的"和"未排序的"两部分,每次从"未排序的"元素中选择一个插入到"已排序的"元素中的正确位置5. 算法特点:插入排序第一趟是将第一个元素视为有序,从第二个元素(...原创 2020-04-22 18:03:57 · 116 阅读 · 0 评论 -
算法简介:排序算法---桶排序
算法简介算法简介桶排序1. 介绍这里就补多少了,网上大佬介绍的很多2. 解决问题排序问题可以统计某个数出现的次数可以对某个数出现进行标记(记数排序)3. 时间复杂度:期望的时间复杂度:O(N)4. 算法思想:对值域进行分块,每块分别排序.由于每块元素不多,一般使用插入排序.如果使用稳定的内层排序,并且将元素插入桶中时不改变相对顺序,那么桶排序就是稳定的.5. ...原创 2020-04-22 15:50:06 · 116 阅读 · 0 评论 -
算法简介:二分图最大匹配
算法简介算法简介二分图最大匹配相关概念二分图:如果一个图的所有顶点可以被分为X和Y两个集合,并且所有边的两个顶点恰好一个属于集合X,另一个属于集合Y,即每个集合内的顶点没有边相连,那么此图就是二分图.无权二分图:没有权重待权权二分图:有边权相关算法1. 无权二分图最大匹配----匈牙利算法* 时间复杂度:用邻接表存储:O(NM)* 算法特点:首先从任意一个未被配对的点...原创 2020-04-21 16:27:56 · 599 阅读 · 0 评论 -
算法简介:求图的割边
算法简介算法简介图割边相关概念连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图.图的割点:如果去掉一个点以及与它连接的边,该点原来所在的图被分成两部分(不连通),则称该点为割点.图的割边:在一个无向连通图中,如果删掉某条边后,该图不在连通,则称该边为割边.相关算法代码示例图原图深度遍历示意图1. tarjan算法* 时间复杂...原创 2020-04-19 20:52:30 · 918 阅读 · 0 评论 -
算法简介:求图的割点
算法简介算法简介图割点相关概念连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图.图的割点:如果去掉一个点以及与它连接的边,该点原来所在的图被分成两部分(不连通),则称该点为割点.相关算法代码示例图原图深度遍历示意图最终每个顶点的最小时间戳示意图1. tarjan算法* 时间复杂度:深度优先遍历或广度优先遍历:O(N(N+M))...原创 2020-04-19 17:50:15 · 1414 阅读 · 0 评论 -
算法简介:图最小生成树
算法简介算法简介图最小生成树相关概念连通图:在无向图中,若任意两个顶点vi与vj都有路径相通,则称该无向图为连通图.强连通图:在有向图中,若任意两个顶点vi与vj都有路径相通,则称该有向图为强连通图.连通网:在连通图中,若图的边具有一定的意义,每一条边都对应着一个数,称为权;权代表着连接连个顶点的代价,称这种连通图叫做连通网.生成树:一个连通图的生成树是指一个连通子图,它含有图中全...原创 2020-04-17 16:32:51 · 139 阅读 · 0 评论 -
算法简介:并查集
算法简介算法简介并查集1. 定义:并查集实际上就是并集和查集的过程.集(集合)可以理解为一棵树,即一个根结点连着无数个子节点.并查集也称为不相交集数据结构.形象地来说,有点像"朋友圈":A和B是朋友,A和B就构成了一个朋友圈,C和D是朋友,C和D也构成了一个朋友圈,那么这时,如果B和C在成为了朋友,A、B、C、D就构成了一个大的朋友圈.2. 算法思想:并查集通过一个一维数组来实现,其本...原创 2020-04-16 15:06:46 · 136 阅读 · 0 评论 -
算法简介:排序算法---堆排序
算法简介:堆排序算法简介算法简介排序算法—堆排序堆排序简介这里我就不多说了,网上很多大佬们都详细介绍了时间复杂度O(NlogN)堆排序应用数据量较大的情况求一列数据中第K大(小)的数示例代码示例代码...原创 2020-04-15 21:04:11 · 103 阅读 · 1 评论 -
算法简介:图最短路径
算法简介:图最短路径图最短路径相关算法1. 深度优先算法(DFS)解决问题求图中多源(全源)最短路问题代码示例最短路径DFS—无向图和有向图2. 广度优先算法(BFS)解决问题求图中多源(全源)最短路问题时间复杂度O(N^2)特点比深度优先算法块,更加适用于边权相同的情况代码示例最短路径BFS—无向图3. Floyd-Warshall(弗洛伊德算法----只...原创 2020-04-08 17:50:52 · 482 阅读 · 0 评论 -
算法简介:图遍历----深度优先搜索(DFS)与广度优先搜索(BFS)
算法简介:图遍历----深度优先搜索(DFS)与广度优先搜索(BFS)图遍历1. 图定义简单的说,图就是由一些小圆点(称为顶点)和连接这些小圆点的直线(称为边)组成的.2. 图分类图可以分为无向图和有向图3. 图遍历算法1. 深度优先搜索(DFS)图遍历DFS思想首先以一个未被访问过的顶点作为起始顶点,沿当前顶点的边走到未访问过的顶点;当没有未访问过的顶点时,则回到上一个顶点,继...原创 2020-04-08 11:48:10 · 238 阅读 · 0 评论 -
算法简介:层层递进----广度优先搜索(BFS)
算法简介:层层递进----广度优先搜索(BFS)算法思想:首先以一个未被访问过的顶点作为起始顶点,访问其所有相邻的顶点,然后对每个相邻的顶点,再访问它们相邻的未被访问过的顶点,直到所有顶,点都被访问过,遍历结束.算法应用:迷宫问题(连通图问题)--------复杂度比较低图遍历------适合边权一样的情况具体介绍1. 迷宫问题(连通图问题)--------复杂度比较低迷宫...原创 2020-04-07 12:07:27 · 282 阅读 · 0 评论 -
算法简介:不撞南墙不回头----深度优先搜索算法(DFS)
算法简介:不撞南墙不回头----深度优先搜索算法(DFS)算法简介算法简介DFS算法简介DFS算法思想1.理解DFS的关键:DFS在于解决"当下该如何做",至于"下一步如何做"和"当下该如何做"是一样的2.实现的方法一般是递归调用自己注意事项:1.虽说实现的方式是递归,但是要注意时间复杂度。下图仅供参考:DFS算法的应用:1.全排列系列及变种问题具体介绍1.全排列系列及变...原创 2020-04-03 17:54:56 · 277 阅读 · 0 评论 -
算法简介:枚举算法
算法:枚举算法的应用(一)-----数的全排列原创 2020-04-01 20:17:40 · 175 阅读 · 0 评论 -
MMSEG分词算法
最近看了下MMSEG分词算法,觉得这个算法简单高效,而且还非常准确 作者声称这个规则达到了99.69%的准确率并且93.21%的歧义能被这个规则消除。核心思想是抽取3个可能的词(存在多个组合),然后根据4个消歧义规则确定到底选择那个组合 1. 组合长度最大 2. 组合中平均词语长度最大 3. 词语长度的变化率最小 4. 计算组合中所有单字词词频的自然对数,然后将得到的值相加,转载 2017-01-11 17:14:43 · 258 阅读 · 0 评论