Python - 算法类

算法是明确的步骤,它应该通过处理零个或多个输入为我们提供定义明确的输出。 这导致了许多设计和编写算法的方法。 据观察,大多数算法可以分为以下几类。


贪婪算法

贪婪算法会尝试找到局部最优解,这最终可能会导致全局优化的解。 然而,一般的贪婪算法不提供全局优化的解决方案。

所以贪婪算法会在那个时间点寻找一个简单的解决方案,而不考虑它如何影响未来的步骤。 这类似于人类如何在不查看所提供输入的完整细节的情况下解决问题。

大多数网络算法都使用贪婪方法。 这是其中几个的列表 −

  • Prim 的最小生成树算法

  • Kruskal 最小生成树算法

  • Dijkstra 的最小生成树算法


分治法

这类算法涉及将给定问题分成更小的子问题,然后独立解决每个子问题。 当问题无法进一步细分时,我们开始合并每个子问题的解决方案,以得出更大问题的解决方案。

分治算法的重要例子有 −

  • 归并排序

  • 快速排序

  • Kruskal 最小生成树算法

  • 二分查找


动态算法

动态算法涉及将较大的问题分成较小的问题,但与分治法不同,它不涉及独立解决每个子问题。 相反,较小的子问题的结果会被记住并用于相似或重叠的子问题。

大多数情况下,这些算法用于优化。 在解决手头的子问题之前,动态算法将尝试检查先前解决的子问题的结果。动态算法的动机是对问题进行整体优化,而不是局部优化。

动态规划算法的重要例子是 −

  • 斐波那契数列

  • 背包问题

  • 汉诺塔