算法

作者: 陈星空 | 来源:发表于2018-12-04 23:06 被阅读0次

常用排序算法总结:

image.png
参考:排序算法时间复杂度、空间复杂度、稳定性比较

快速排序优化:快排的思路是每次都确定一个数据的位置,基于分治的思想,所以可以使用三路快排的思路进行优化。将数据分为大于、小于、和等于三个部分
快速排序 详解(快速排序 双路快排 三路快排)

遗传算法小记

遗传算法一般用来解决最优化问题,模拟生物进化的过程,优胜略汰,具有一定的意义吧。

最简单的一般流程:

编码初始化种群
计算个体适应度
选择父代
这里呢,有一点讲究,一般就是轮盘赌选择,某个个体可以多次出现,某些个体可能就灭绝了,要的就是随机性,没有选择到的个体就被淘汰了,不可能出现在下一代种群中了。
交叉、变异
选择子代
这里讲究比较多,父代交叉变异后分别产生一些新的个体,在这些个体中选择计算适应度,选择两个(一般是2个)精英保留直接成为下一代种群中的一分子,然后剩余的名额在这些个体连同父代形成新的集合中使用选择算子选择(简单如轮盘赌选择),形成新的种群。

如何停止呢,一种是按照迭代的次数,另一种就是在某一代种群中出现了你想要的值就可以了。

回溯法

1、概念
回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。
回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。
2、基本思想
在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。
若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。
而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。
3、用回溯法解题的一般步骤:
(1)针对所给问题,确定问题的解空间:
首先应明确定义问题的解空间,问题的解空间应至少包含问题的一个(最优)解。
(2)确定结点的扩展搜索规则
(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
回溯法模板

void run(当前状态)
{
  if(当前状态的边界)
  {
      if(当前状态为最佳的目标形态)
          记下最优结果;
          return;
  }
  for(int i = 算符最小值; i <= 算符最大值 ; ++i)
  {
      算符i作用于当前状态,扩展出一个子状态;
      if(子状态满足约束条件)&&(子状态满足最优性要求)
          run(子状态);
  }
}

递归理解

递归三个要素:递 + 结束条件 + 归。
其实递归可以是“有去有回”,也可以是“有去无回”。但其根本是“由大往小地去,由近及远地去”。“递”是必需,“归”并非必需,依赖于要解决的问题,有的需要去的路上解决,有的需要回来的路上解决。有递无归的递归其实就是我们很容易理解的一种分治思想。
这个理解很不错,参考如下:
递归的理解

相关文章

  • 匈牙利算法

    算法思想 算法流程 算法步骤 算法实现 python 算法应用

  • web开发需要知道的几个算法

    算法分类 快速排序算法 深度优先算法 广度优先算法 堆排序算法 归并排序算法

  • 机器学习算法

    机器学习的算法分监督算法和无监督 算法。监督算法包括回归算法,神经网络,SVM;无监督算法包括聚类算法,降维算法。...

  • 字符串匹配

    BF 算法和 RK 算法BM 算法和 KMP 算法

  • 垃圾回收算法有几种类型? 他们对应的优缺点又是什么?

    常见的垃圾回收算法有: 标记-清除算法、复制算法、标记-整理算法、分代收集算法 标记-清除算法 标记—清除算法包括...

  • 头条-手撕代码

    [toc] 图算法 以及最短路径算法 树算法 手写LRU 排序算法 链表算法

  • 关于一些算法

    我们平常说的算法按照使用方向加密算法,排序算法,搜索算法,优化算法,音视频处理算法,图片处理算法 1.加密解密算法...

  • 给我巨大影响的技术书籍

    算法《算法概论》《算法设计与分析基础》 Anany Levitin《算法引论》Udi Manber《算法导论》《什...

  • 缓存相关

    cache淘汰算法:LIRS 算法 缓存那些事 Redis缓存淘汰算法,LRU算法,LRU算法讲解

  • LZW压缩算法

    参考链接:超级简单的数据压缩算法—LZW算法压缩算法——lzw算法实现LZW算法 LZW 压缩算法正确图解

网友评论

      本文标题:算法

      本文链接:https://www.haomeiwen.com/subject/ossbcqtx.html