Skip to content

Latest commit

 

History

History
64 lines (43 loc) · 3.19 KB

algorithmic_thinking.md

File metadata and controls

64 lines (43 loc) · 3.19 KB

10大算法思想

十大算法思想可能因人而异,并没有统一标准。以下是一些常见且重要的算法思想。

1. 贪心算法(Greedy Algorithm)

贪心算法是一种逐步做出最优选择的策略,在每一步骤中选择当前最优的方案,以期达到整体最优。

  • 特点:贪心算法通常简单高效,但并非所有问题都适用。
  • 应用:背包问题、最小生成树、最短路径等。

2. 分治算法(Divide and Conquer)

分治算法将问题分成较小的子问题,递归解决每个子问题,然后合并结果。

  • 特点:递归式地解决问题,适用于具有自然分割点的问题。
  • 应用:归并排序、快速排序、二分查找、矩阵乘法等。

3. 动态规划(Dynamic Programming)

动态规划是将问题分解为可能重叠的子问题,通过定义状态和转移规则,缓存子问题结果,最终解决原问题。

  • 特点:通常用于递归问题,通过记忆化或表格化存储子问题结果。
  • 应用:最长公共子序列、背包问题、图中的最短路径等。

4. 回溯算法(Backtracking)

回溯算法通过尝试所有可能的解,逐步构建解决方案,若发现不符合要求则回溯。

  • 特点:通常用于组合问题和搜索问题,具有递归性质。
  • 应用:八皇后问题、数独、图的着色等。

5. 分支定界算法(Branch and Bound)

分支定界是一种改进的回溯算法,使用边界条件来剪枝,避免无效的搜索路径。

  • 特点:适用于优化问题,通过设置界限来剪除不必要的分支。
  • 应用:旅行商问题、背包问题等。

6. 递归算法(Recursion)

递归算法是一种直接或间接调用自身的算法。

  • 特点:在解决问题时调用自身,通常用于分治和回溯等算法。
  • 应用:二分查找、树遍历、阶乘、斐波那契数列等。

7. 图算法(Graph Algorithms)

图算法是处理图这种数据结构的算法集合,包括路径、连通性、最小生成树等。

  • 特点:针对节点和边的关系处理各种问题。
  • 应用:深度优先搜索、广度优先搜索、Dijkstra算法、Kruskal算法等。

8. 线性规划(Linear Programming)

线性规划用于求解线性方程组或不等式约束下的最优解,通常用于优化问题。

  • 特点:用于解决线性约束问题,通过单纯形法等方法求解。
  • 应用:资源分配、生产优化、物流规划等。

9. 概率和随机算法(Probabilistic and Randomized Algorithms)

概率和随机算法在解决问题时使用随机性或概率原理。

  • 特点:通过引入随机性实现某些优化或简化操作。
  • 应用:快速排序中的随机选择、蒙特卡洛模拟、哈希表等。

10. 贪心搜索(Greedy Search)

贪心搜索在搜索空间中逐步选择局部最优解,通常用于搜索和路径问题。

  • 特点:在搜索问题中,选择对当前最优的路径或操作。
  • 应用:A*算法、启发式搜索、贪婪策略游戏等。