1. 贪心算法
贪心算法通过局部最优选择构建全局,关键在于证明贪心选择性质和最优子结构。典型应用:哈夫曼编码最优前缀码、活动选择问题按时间排序、最小生成树Kruskal和Prim算法。2. 动态规划
动态规划通过存储子问题最优避免重复计算,核心是状态定义和转移方程。步骤包括问题分、定义状态、推导转移方程、确定边界条件。经典问题:最长公共子序列LCS、背包问题0-1背包与全背包、矩阵链乘法、最优二叉搜索树。3. 分治算法
分治算法将问题分为独立子问题,递归求后合并结果。适用场景:问题可分且子问题可合并。实例:归并排序时间复杂度O(n log n)、快速排序平均O(n log n)、Strassen矩阵乘法O(n².⁸¹)。4. 回溯法与分支限界法
回溯法采用深度优先搜索,通过剪枝优化;分支限界法采用广度优先搜索,利用上下界剪枝。应用:n皇后问题、旅行商问题TSP、子集和问题。 三、图算法 图算法是算法设计的重要领域,涉及路径、连通性和网络流等问题。- 最短路径:Dijkstra算法非负权图,O(M + N log N)、Floyd-Warshall算法多源最短路径,O(N³)。
- 最小生成树:Kruskal算法基于并查集,O(M log M)、Prim算法适用于稠密图,O(N²)。
- 拓扑排序:基于DFS或入度表的方法,决有向环图DAG的节点排序问题。
四、排序与查找算法
- 排序算法:比较类排序冒泡、插入、选择、归并、快排、堆排与非比较类排序计数、基数、桶排序。重点掌握快排的分治思想、归并排序的稳定性及堆排的堆操作。
- 查找算法:顺序查找O(n)、二分查找O(log n),有序、哈希查找平均O(1),决冲突方法包括链地址法和开放定址法。
五、NP全问题
NP全问题是法在多项式时间内求的难题,需掌握概念及典型问题。典型NP全问题:布尔可满足性问题SAT、旅行商问题TSP、图着色问题。近似算法是求NP全问题的常用策略,如TSP的2近似算法。
通过以上核心知识点的梳理,需重点掌握算法设计策略的适用场景、复杂性分析方法及经典问题的求思路,结合编程实践提升算法应用能力。
