📜  Python算法类

📅  最后修改于: 2020-11-07 08:43:31             🧑  作者: Mango


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

贪婪算法

贪婪算法试图找到局部最优解,最终可能导致全局最优解。但是,通常,贪心算法不会提供全局优化的解决方案。

因此,贪婪的算法会在那个时候寻找一个简单的解决方案,而不考虑它如何影响未来的步骤。这类似于人类如何解决问题而无需遍历提供的输入的完整细节。

大多数联网算法都使用贪婪方法。这是其中一些的列表-

  • 旅行商问题
  • Prim的最小生成树算法
  • Kruskal的最小生成树算法
  • Dijkstra的最小生成树算法

分而治之

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

分而治之算法的重要示例是-

  • 合并排序
  • 快速排序
  • Kruskal的最小生成树算法
  • 二元搜寻

动态编程

动态编程涉及将较大的问题分解为较小的问题,但是与“分而治之”不同,它不涉及独立解决每个子问题。而是会记住较小的子问题的结果,并将其用于相似或重叠的子问题。通常,这些算法用于优化。在解决现有子问题之前,动态算法将尝试检查先前解决的子问题的结果。

动态算法是针对问题的整体优化而不是局部优化。

动态编程算法的重要示例是-

  • 斐波那契数列
  • 背包问题
  • 河内塔