2020-08-13

今天我学习了基础算法,感觉收益很大,发现算法是这样实现的。
首先是枚举。枚举,顾名思义就是利用计算机运算速度快、精确度高的特点,对要解决问题的所有可能情况,一个不漏地进行检验,从中找出符合要求的答案,因此枚举法是通过牺牲时间来换取答案的全面性。在数学和计算机科学理论中,一个集的枚举是列出某些有穷序列集的所有成员的程序,或者是一种特定类型对象的计数。这两种类型经常重叠。
其次是深度优先搜索(简称“深搜”或DFS),它的基本思想就是不撞南墙不回头,就是一条路走到底,发现不能走到终点便回头(回溯)到上一步,往下一条路走,直到发现可以走到终点,
但是它的效率低,碰到大数据便会超时。
其实深度优先搜索(DFS)就是一个针对图和树的遍历算法。
接下来是广度优先搜索(简称“宽搜”或BFS),这是连通图的一种遍历算法这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。基本过程,BFS是从根节点开始,沿着树(图)的宽度遍历树(图)的节点。如果所有节点均被访问,则算法中止。一般用队列数据结构来辅助实现BFS算法。
最后就是分治算法,分治算法是一种很重要的算法,它就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个技巧是很多高效算法的基础(如快速排序(简称“快排”))。
这几个算法很常用,但是也要注意其算法效率。

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