随笔分类 - 算法导论
研一必修课
摘要:基本概念 摊还分析也称平摊分析,用于总体考虑分析问题,通过 次操作来计算平均代价。 与平均情况分析的区别:平摊分析不涉及到概率,保证其平摊性能是每个操作在最坏情况下具有的平均性能。 三种平摊分析技术: 聚合分析(Aggregate analysis) 先求出操作序列里所有操作 个的总
阅读全文
摘要:多阶段决策问题 求解的问题可以划分为一系列相互联系的阶段,在每个阶段都需要作出决策,且一个阶段决策的选择会影响下一个阶段的决策,从而影响整个过程的活动路线,求解的目标是选择各个阶段的决策使整个过程达到最优。 基本概念 阶段:把所给的问题的求解过程恰当地划分为若干个相互联系的阶段 状态:表示每个阶段开
阅读全文
摘要:基本思想 将所有的解按照一定结构排列,再进行搜索。一般解空间构造成树状结构,用深度优先搜索策略。 针对所给问题,定义问题的解空间。 确定易于搜索的解空间结构。 以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。 常用的剪枝函数: 用约束函数在扩展结点处剪去不满足约束的子树。 用限界函数
阅读全文
摘要:维护堆 主要思想 比较 和 的大小 如果 不是最大的,则将其与比较大的孩子节点进行交换 在堆中继续向下比较和交换,直到 节点为根的子树是一个大顶堆 伪代码 Max-Heapify(A, i, n) { l = Le
阅读全文
摘要:效率分析 迭代法 求n! int fact(int n) { if(n <= 1) return 1; else return n * fact(n-1); } 递归关系式: $$ T(n)= $
阅读全文
摘要:算法概念 算法是若干指令的有穷序列,满足以下性质: 输入:外部量作为输入 输出:至少产生一个量 确定性:每条指令是无歧义的 有限性:每条指令的执行次数和时间是有限的 可行性: 能够有效解决问题的 算法分析 算法分析是指对算法所需的时间和空间等资源进行预测。 算法复杂性 = 算法所需要的计算机资源。
阅读全文