算法刷题目录

什么是计算机算法?

单从计算机算法的角度讲,大部分算法是反算术的或者只算不术的。用数学的方法解决通用计算机问题的想法,是不值得骄傲的。在学习算法的一开始,就应该有计算机算法和数学算术的区分。计算机算法本质是一套结构,我们在解决一切问题之前都要问,对于本题的状态空间,什么样的数据结构可以提炼出要素,方便对问题进行归纳和有序化,进而通过对状态空间的有限次的遍历,结合一定的分支跳转,构建一个自动机解决问题。我们不难想到,一切算法的本质是自动机的构建,是利用自动的结构处理数据,进而解决问题。如果不把算法的目光落在对机械结构的构造上,计算机算法就是虚无的。

计算机有什么数据结构?

本质上,计算机只有两种数据结构: 矩阵和链表。
矩阵类的数据结构包括:数组,队列,图,栈。
链表类的数据结构包括:链表,树,堆。

矩阵是静态的,链表是动态的。
矩阵是穷举而无序访问的,链表是划分而定向访问的的。

如何操控数据结构?

对于链表类的数据结构,由于链表是递推的,我们采用递归调用的方法访问和操控。对于矩阵类的数据结构,我们常常进行循环遍历。
但无论如何,我们都是要对状态空间与解空间之间,通过有序而精准的穷举搭建桥梁。有序要求算法保障穷举的完整性,精准要求穷举不能有不可接受的冗余。
怎么实现这种归纳?数学归纳法给出了充分的解答。(推着推着就能归纳了)
怎么实现对自动机的构建?状态机的化简给出了解答。(先暴力再精炼)

先挂这,没时间写了。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×