贪心算法 (Greedy Algorithm)
- 原理: 贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,从而希望最终能够达到全局最优解的算法。
- 应用: 最短路径算法(Dijkstra算法)、最小生成树算法(Prim算法、Kruskal算法)、任务调度问题、霍夫曼编码等。
分治算法 (Divide and Conquer)
- 原理: 将原问题分解为若干个规模较小且结构与原问题相似的子问题,递归地求解这些子问题,再将子问题的解组合成原问题的解。
- 应用: 快速排序、归并排序、求解最近点对问题、大整数乘法等
动态规划算法 (Dynamic Programming)
- 原理: 将问题划分为多个重叠的子问题,通过解决子问题来解决原问题,但与分治算法不同的是,动态规划算法通常会记录子问题的解,避免重复计算
- 应用: 最长公共子序列、背包问题、最短路径问题(Floyd-Warshall算法)、编辑距离等。
-
回溯算法 (Backtracking)
- 原理: 一种暴力搜索的方法,尝试所有可能的解,并在搜索过程中剪枝,即提前终止不符合条件的搜索路径。
- 应用: 八皇后问题、0-1背包问题、图的着色问题等。
图搜索算法 (Graph Search)
- 原理: 在图中搜索特定节点或路径的算法,包括深度优先搜索(DFS)和广度优先搜索(BFS)。
- 应用: 迷宫问题、拓扑排序、网络分析、社交网络分析等。
机器学习算法
- 原理: 一类算法,通过从数据中学习模式和规律来进行预测或者决策。
- 应用: 决策树、支持向量机、神经网络、随机森林、K-近邻算法等,应用于分类、回归、聚类、降维等各种机器学习任务。
搜索算法
- 原理: 通过在搜索空间中寻找解来解决问题的算法,包括启发式搜索(如A*算法)和元启发式搜索(如模拟退火算法、遗传算法)等。
- 应用: 最优路径规划、旅行商问题、人工智能、优化问题等。
字符串匹配算法
- 原理: 在一个字符串中查找一个子串的算法,包括朴素算法、KMP算法、Boyer-Moore算法、Rabin-Karp算法等。
- 应用: 字符串搜索、模式匹配、文本编辑器中的搜索功能等。