算法

算法

  • 算法的分类

    • 决定性算法:对于给定的输入只有一种方式能确定下一步采取的操作,如求一个集合的合只需要逐个相加并不需要进行猜测。
      非决定性算法:非决定性算法将问题分解成猜测和验证两个阶段。算法的猜测阶段是非确定性的,算法的验证阶段是确定性的,它验证猜测阶段给出解的正确性。如查找算法会先猜测数组中某个数,再验证其是否是需要查找的那个数。
  • 需要解决的判定问题的分类

    • P问题:能够用决定性算法在多项式时间内解决的问题。
    • NP问题:能够用非决定性算法在多项式时间内解决的问题。
    • NPC问题:这里P类问题一定属于NP类问题。如果任何一个NP问题都能通过一个多项式时间算法转换为某个NP问题,那么这个NP问题就称为NP完全问题,该问题则成为NP完整性,也成为NPC问题。
  • 算法的复杂度

    • O表示法 表最小上界
    • Ω表示法 表最大下界
    • Θ表示法 当最小上界和最大下界相等时

刷题顺序

  • 第一遍按照tag刷,第二遍一题多解,多题同解

心得

  • 先看是否有现成的工具类可以解决
  • 主要判断边界条件
  • 如何找到最优解
    • 从数据状况出发
    • 从要求的时间复杂度出发

对数器

  • 1.有一个你想要测的方法a;
  • 2.实现一个绝对正确但是复杂度不好的方法b;
  • 3.实现一个随机样本产生器;
  • 4.实现对比算法a和b的方法;
  • 5.把方法a和方法b比对多次来验证方法a是否正确;
  • 6.如果有一个样本使得比对出错,打印样本分析是哪个方法出错;
  • 7.当样本数量很多时比对测试依然正确,可以确定方法a已经正确。

递归

  • Master公式
    $$
    T[N] = aT[\frac{N}{b}]+O(N^d)
    $$

    • 变量解释

      • b:子过程的样本量
      • a:子过程的计算次数
      • O(N^d):子结果合并的时间复杂度
    • 当d<$log_ba$时,时间复杂度为O($N^{log_b,a}$)

    • 当d=$log_ba$时,时间复杂度为O(($N^d$)*logN)

    • 当d>$log_ba$时,时间复杂度为O($N^d$)

    • 如果a的x次方等于N(a>0,且a≠1),那么数x叫做以a为底N的对数(logarithm),记作x=log(a,N)


算法
https://x-leonidas.github.io/2022/02/01/02数据结构及算法/算法/
作者
听风
发布于
2022年2月1日
更新于
2025年6月25日
许可协议