【算法设计与分析】期末汇总

上传者: m0_65787507 | 上传时间: 2025-05-11 19:21:12 | 文件大小: 6.5MB | 文件类型: PDF
算法设计与分析期末汇总 算法设计基础 算法是指令的有限序列,用于解决特定问题。算法的特性包括输入、输出、有穷性、确定性、可行性、正确性、健壮性、可理解性、抽象分级和高效性。算法的描述方法有自然语言、程序流程图、伪代码和程序设计语言。 欧几里得辗转相除法是一个经典的算法,用于求自然数 m 和 n 的最大公约数。伪代码如下: 1. r = m % n; 2. 循环直到 r 等于 0 2.1 m = n; 2.2 n = r; 2.3 r = m % n; 3. 输出 n; 算法的评估包括正确性、时间代价、空间代价和最优性。 算法分析 算法分析是估算时间和空间资源的过程。时间复杂性分析的关键是问题规模、基本语句和渐进符号。渐进符号包括大 O(上界)、大Ω(下界)和Θ(同时上届+下届)。 非递归算法分析的一般步骤是: 1. 建立一个代表算法运行时间的求和表达式。 2. 用渐进符号表示这个求和表达式。 递归算法分析的一般步骤是: 1. 猜测技术:对递归关系式估计一个上限,用数学归纳法证明正确性。 2. 扩展递归技术:根据递归过程建立递推关系式,然后求解该递推关系式。 判定树是一种特殊的二叉树,左子树 x≤y,右子树 x>y。判定树的高度至少是Ω(nlog2n)。任何基于比较的排序算法,对 n 个元素进行排序的时间下界为Ω(nlog2n)。 难解问题是指不能用计算机求解的问题,如停机问题和病毒检测问题。判定问题是指回答“是”或“否”的问题。确定性算法是指每一步只有一个确定的选择的算法。非确定性算法是指猜测阶段+验证阶段的算法。 P 类问题是指可以在多项式时间内解决的问题。NP 类问题是指可以在多项式时间内验证解决的问题。NP 完全问题是指可以在多项式时间内变换为其他 NP 问题的问题。 蛮力法 蛮力法是一种设计思想,直接基于问题的描述。常见的蛮力法有顺序查找、串匹配问题、选择排序和起泡排序。 顺序查找的时间复杂性是 O(n),可以通过增加哨兵来避免判断越界。串匹配问题可以使用 BF 算法或 KMP 算法,时间复杂性分别为 O(m*n) 和 O(n+m)。 选择排序的时间复杂性是 O(n²),可以通过交换记录来实现。起泡排序的时间复杂性也为 O(n²),可以通过省去最后一次扫描来改进。 组合问题包括生成排列对象、生成子集、0/1 背包问题和任务分配问题。生成排列对象的时间复杂性是 O(n!),可以通过插入元素到已经生成的排列中来实现。生成子集的时间复杂性是 O(2^n)。

文件下载

评论信息

免责申明

【只为小站】的资源来自网友分享,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,【只为小站】 无法对用户传输的作品、信息、内容的权属或合法性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论 【只为小站】 经营者是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。
本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二条之规定,若资源存在侵权或相关问题请联系本站客服人员,zhiweidada#qq.com,请把#换成@,本站将给予最大的支持与配合,做到及时反馈和处理。关于更多版权及免责申明参见 版权及免责申明