跳转至

算法

计算机科学研究的正是算法,计算机只是工具,解决问题的过程以及解决方案,可能存在也可能不存在,存在即为可计算。

算法并不一定涉及复杂的数学,而是更多的依赖基本逻辑,这些逻辑在我们的日常中随处可见。

20210911230835

搜索算法 searching_algorithm

关于搜索和查找的区别 - 搜索:不知道想要的内容,在广泛的范围内寻找信息,比如搜索引擎 - 查找:知道想要的信息,在既定的范围内通过寻找和筛选信息,比如文档内使用关键词查找

  • 暴力搜索
    • 线性搜索
    • 广度优先搜索:从初始节点开始逐层搜索,由近及远地访问各个节点
    • 深度优先搜索:从初始节点开始,沿着一条路径走到头,再回溯并尝试其他路径,直到遍历完整个数据结构
  • 自适应搜索(查找算法)
    • 二分查找 binary_search
    • 哈希查找
    • 树查找

思想

  • 分治
  • 贪心,一条路走到黑,就一次机会,只能哪边看着顺眼走哪边
  • 回溯,一条路走到黑,无数次重来的机会,还怕我走不出来 (Snapshot View)
  • 动态规划,Dynamic Programming,简称 DP,拥有上帝视角,手握无数平行宇宙的历史存档 (Versioned Archive View),同时发展出无数个未来,存在递推关系,可以使用动态规划求解