Python - 算法类

  • 简述

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

    贪心算法试图找到一个局部最优解,最终可能导致全局最优解。然而,通常贪心算法不提供全局优化的解决方案。
    所以贪心算法在那个时间点寻找一个简单的解决方案,而不考虑它如何影响未来的步骤。它类似于人类如何在不查看所提供输入的完整细节的情况下解决问题。
    大多数网络算法使用贪心方法。这是其中几个的列表 -
    • 旅行商问题
    • Prim 的最小生成树算法
    • Kruskal 的最小生成树算法
    • Dijkstra 的最小生成树算法
  • 分治法

    这类算法涉及将给定问题分成更小的子问题,然后独立解决每个子问题。当问题不能进一步细分时,我们开始合并每个子问题的解决方案,以得出更大问题的解决方案。
    分而治之算法的重要示例是 -
    • 合并排序
    • 快速排序
    • Kruskal 的最小生成树算法
    • 二进制搜索
  • 动态规划

    动态规划涉及将较大的问题分成较小的问题,但与分而治之不同,它不涉及独立解决每个子问题。相反,较小的子问题的结果会被记住并用于类似或重叠的子问题。
    大多数情况下,这些算法用于优化。在解决现有子问题之前,动态算法将尝试检查先前解决的子问题的结果。动态算法的动机是对问题进行整体优化,而不是局部优化。
    动态编程算法的重要示例是 -
    • 斐波那契数列
    • 背包问题
    • 河内塔