计算机算法设计与分析期末复习总结该如何高效梳理?

计算机算法设计与分析期末复习 一、算法复杂性分析 算法复杂性是衡量算法效率的核心指标,包括时间复杂度和空间复杂度。时间复杂度通过大O记号表示,常见量级有O(1)、O(log n)、O(n)、O(n log n)、O(n²)、O(2ⁿ)等。分析方法包括循环次数统计、递归树法、主定理适用于分治算法。空间复杂度关算法运行时占用的存储空间,需考虑输入空间、辅助空间及递归栈空间。 二、经典算法设计策略

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近似算法。

      通过以上核心知识点的梳理,需重点掌握算法设计策略的适用场景、复杂性分析方法及经典问题的求思路,结合编程实践提升算法应用能力。

延伸阅读: