计算机算法的本质--穷举

127 阅读2分钟

算法的本质

算法的本质是穷举

这个想法还没有想到更好的解释,暂时认可吧

算法分为数学算法和计算机算法

数学算法的研究者是算法工程师,如何将一个问题经过研究与分析,得出相应的数学公式及优化

计算机算法是用计算机的逻辑解决问题,本质是找到用计算机解决现实问题的方法,数据结构也是针对数据在计算机内存的存储方式的结构。

为了区分,不妨称算法工程师研究的算法为「数学算法」,称刷题面试的算法为「计算机算法」,我写的内容主要聚焦的是「计算机算法」

穷举有两个关键难点:无遗漏、无冗余

遗漏,会直接导致答案出错;冗余,会拖慢算法的运行速度。所以,当你看到一道算法题,可以从这两个维度去思考:

1、如何穷举?即无遗漏地穷举所有可能解。

2、如何聪明地穷举?即避免所有冗余的计算,消耗尽可能少的资源求出答案。

不同类型的题目,难点是不同的,有的题目难在「如何穷举」,有的题目难在「如何聪明地穷举」。

数组/单链表系列算法

单链表常考的技巧就是双指针

1.判断单链表是否成环

2.双链表

二叉树系列算法

二叉树模型几乎是所有高级算法的基础,二叉树题目的递归解法可以分两类思路,第一类是遍历一遍二叉树得出答案,第二类是通过分解问题计算出答案,这两类思路分别对应着 回溯算法核心框架动态规划核心框架

小结

数据结构与算法研究是的计算机存储数据的结构及使用数据的方法,并对使用的效果进行有效的评估。从而使用计算机更有效来处理我们的数据,计算机的处理速度虽然快,但“穷举”的计算量更大,一个更好的算法可以提升成千上万倍的效率。

引用出处