算法:
算法是解决问题的分步过程。一个好的算法应该在时间和空间上进行优化。不同类型的问题需要以最优化的方式解决不同类型的算法技术。有很多类型的算法,但是本文将讨论您必须知道的最重要和最基本的算法。
蛮力算法:
这是最基本,最简单的算法。蛮力算法是解决问题的直接方法,即,我们想到问题的第一种方法。从技术上讲,这就像迭代解决该问题的所有可能方法。
例如:如果有一个4位PIN码的锁。从0-9选择的数字则蛮力将一个尝试所有可能的组合由一个像0001,0002,0003,0004,依此类推,直到我们得到正确的PIN码。在最坏的情况下,将需要10,000次尝试才能找到正确的组合。
递归算法:
这种类型的算法基于递归。在递归中,通过将问题分解为相同类型的子问题并一次又一次地调用自己的自身来解决问题,直到借助基本条件解决了问题为止。
使用递归算法可以解决的一些常见问题是数阶乘数,斐波那契数列,河内塔,用于图的DFS等。
分而治之算法:
在分而治之算法中,其思想是分两部分解决问题,第一部分将问题分为相同类型的子问题。第二部分是独立解决较小的问题,然后将合并的结果相加,以得出对该问题的最终答案。
使用分而治之算法可以解决的一些常见问题是二进制搜索,合并排序,快速排序,斯特森矩阵乘法等。
动态编程算法:
这种类型的算法也称为记忆技术,因为在这种思想下,要存储先前计算的结果,以避免一次又一次地对其进行计算。在动态编程中,将复杂的问题分成较小的重叠子问题,并将结果存储起来以备将来使用。
使用动态规划算法背包问题,加权作业调度,弗洛伊德·沃舍尔算法,狄克斯特拉最短路径算法等可以解决以下问题。
贪婪算法:
在贪婪算法中,解决方案是逐部分构建的。选择下一部分的决定是基于其带来的直接好处。它从不考虑以前做出的选择。
可以通过贪婪算法解决的一些常见问题是Prim算法,Kruskal算法,霍夫曼编码等。
回溯算法:
在“回溯算法”中,问题是以增量方式解决的,即它是一种算法技术,它通过尝试逐步构建一个解决方案来一次递归地解决问题,并删除那些不能满足问题约束条件的解决方案。任何时间点。
通过回溯算法可以解决的一些常见问题是哈密顿循环,M色问题,N皇后问题,迷宫中的老鼠问题等。
如果您希望与行业专家一起参加现场课程,请参阅《 Geeks现场课程》和《 Geeks现场课程美国》。