0%

6.数据结构与算法

KMP算法

目的:寻找最长子串

原理

  • 当有目前的位置不匹配,且前面有一段恰好与模式串的开头一样,则那段开头后面开始对比;
  • 因为不匹配的位置前面,是匹配的,所以只需要针对模式串处理,得出每个模式串位置的最长前后缀,从而的得出每个位置不匹配时开始处理的点(next函数值)

  • 需要考虑三种情况了,第一个点不匹配,有前后缀,无前后缀

  • 视频讲解:https://www.bilibili.com/video/BV1jb411V78H?share_source=copy_web

next函数值计算公式

image-20210507223558023

经典算法思想

分治

​ 分解->求解->合并;

回溯

​ 深度优先搜索

动态规划

  • 根据某些判定条件,舍弃肯定无法得到最优解的局部解,最终得到全局最优解
  • 将复杂问题分成多个子问题,与分治的不同,分治的子问题时相同的
  • 通常会在前期算出把各种可能的答案,然后逐步排查得出最优解

贪心

  • 每一步都是最优选择
  • 不需要穷尽所有解
  • 不一定可是最优解,但是可以快速的得到满意的解

分支限界

  • 广度优先搜索
  • 利用队列实现

概率算法

  • 前提,问题可以接受小概率错误
  • 随机选择下一步,以此降低算法运行时间

近似算法

  • 放弃精确的最优解,利用近似解,降低算法的运行时间,
  • 比如求Π的值

数据挖掘算法

主要功能:分类、回归、关联规则、聚类

分类算法

分类步骤:建立学习模型:对现有数据进行处理;建立应用模型:对未知数据进行处理、预测

  • 决策树归纳算法
  • 朴素贝叶斯算法
  • 向后传播BP
  • 支持向量机SVM

关联规则算法

频繁模式和关联规则:频繁模式产生关联规则,不同事件频繁同时发生,挖掘其中关联性

  • 类Apriori算法
  • 基于频繁模式增长的方法
  • 使用垂直数据格式的算法

聚类算法

聚类:无监督学习过程,将相似数据归到同一类中

  • 基于划分的方法
  • 基于层次的方法
  • 基于密度的方法
  • 基于网格的方法
  • 基于统计模型的方法

智能算法

以数学为基础

  • 人工神经网络ANN:模拟人脑神经元,建立神经网络
  • 深度学习:基于ANN,是机器学习的一个新领域
  • 遗传算法:模拟达尔文的“优胜劣汰”和孟德尔的遗传变异,寻找更好的结构
  • 模拟退火算法SA:模拟物理退火过程(加温,等温,冷却)
  • 禁忌搜索算法:向函数值变化最多的移动,避免陷入局部最优解
  • 蚁群算法:优化路径的概率型算法,模拟蚂蚁在路径上留信息素,后面的蚂蚁更加信息素浓度,判断出最优路径
  • 粒子群优化算法PSO:又称鸟群觅食算法,粒子追随最优粒子,在解空间搜索