算法概要(读算法图解笔记)

  如果你是算法小白,那么算法图解是你入门的最佳选择。下面是我读算法图解后的一些心得与大家分享。

  第一个算法:二分法,简单来讲就是对半查找

  大O表示法反映了算法运行时间的增速

  O(log n),也叫对数时间,这样的算法包括二分查找。 

  O(n),也叫线性时间,这样的算法包括简单查找。 

  O(n * log n),这样的算法包括第4章将介绍的快速排序——一种速度较快的排序算法。 

  O(n2),这样的算法包括第2章将介绍  的选择排序——一种速度较慢的排序算法。 

  O(n!),这样的算法包括接下来将介绍的旅行商问题的解决方案——一种非常慢的算法

 

链表和数组,区分

递归的使用可使程序更清晰

栈用于存储多个函数的变量,被称为调用栈(后进先出)

 

解决问题的思路:分而治之,尽可能不断缩小问题的规模。

选择排序 快速排序

新的数据结构:字典

广度优先搜索算法

新的数据结构:队列(先进先出)

狄克斯拉特算法:加权图,找需要最短时间的路径(只适用于有向无环图),找出图中最便宜的结点,并确保没有到该结点的最便宜的路径,不能将该算法用于包含负权边的图,此时要用贝尔曼-福德算法。

贪婪算法:每一步都采取最优的选择,能够大致解决问题的算法

NP完全问题:集合覆盖,旅行商,求出近似解。

 元素较少时算法的运行速度非常快,但随着元素数量的增加,速度会变得非常慢。

 涉及“所有组合”的问题通常是NP完全问题。

 不能将问题分成小问题,必须考虑各种可能的情况。这可能是NP完全问题。

 如果问题涉及序列(如旅行商问题中的城市序列)且难以解决,它可能就是NP完全问题。

 如果问题涉及集合(如广播台集合)且难以解决,它可能就是NP完全问题。

 如果问题可转换为集合覆盖问题或旅行商问题,那它肯定是NP完全问题

 

动态规划:先解决小问题,逐步解决原来的问题。

算法概要(读算法图解笔记)_第1张图片

需要每个子问题都是离散的,不相互依赖

 

K最近邻算法:将相近的个体归为一类。(需要进行特征抽取来估计两者的相似程度,然后回归即预测结果,需要挑选合适的特征)

OCR:

算法概要(读算法图解笔记)_第2张图片

 

高级算法:

二叉查找树

反向索引

分布式算法

布隆过滤器

SHA安全散列算法

线性规划

你可能感兴趣的:(算法)