我们会学哪些算法? ·算法简介 ·算法复杂度简介 ·分治算法 ·动态规划算法 。搜索与机器学习算法 我们这里只能覆盖算法的基本概念和设计原则 ,口y44三,2QC 11/40
我们会学哪些算法? é{{0 é{E,›{0 ©£é{ ƒ5yé{ |¢ÜÅÏÆSé{ · · · · · · ·Ç˘pêUCXé{ƒVg⁄设OK 11 / 40
提纲 ①算法的概念 问题描述及算法描述方法 ©算法正确性分析 @。算法复杂性分析 ©标准符号和通用函数 ,口,y,生4三,2月0C 12/40
提纲 1 算法的概念 2 问题描述及算法描述方法 3 算法正确性分析 4 算法复杂性分析 5 标准符号和通用函数 12 / 40
问题描述 定义4(问题) 设Input和Output是两个集合。问题可以定义为一个关系R C Input x Output,Input称为问题R的输入集合,其每个元素称为R的一个输入; Output称为问题R的输出或结果集合,其每个元素称为R的一个结果。从 而问题就是定义了输入和输出的关系。 问题实例(排序问题): Input={<a1,a2,.an>|a;是整数}: 0 utput={<bi,b2,.bn>lb,是整数,b1≤b2≤…≤bn}: SORT ={(a,a2,...an >,bi,b2,...bn >)I<a1,a2,...an>E Input, bi,b2,…bn>∈Output,{a,a2,…an}={b,b2,…bn}。 13/40
问题描述 定义 4 (问题) 设Input 和Output 是两个集合。 问题可以定义为一个关系 R ⊆ Input × Output,Input 称为问题R 的输入集合,其每个元素称为R 的一个输入; Output 称为问题R 的输出或结果集合,其每个元素称为R 的一个结果。从 而问题就是定义了输入和输出的关系。 ØK实~ (¸SØK)µ Input = {< a1, a2, . . . an > |ai 是数}¶ Output = {< b1, b2, . . . bn > |bi 是数, b1 ≤ b2 ≤ · · · ≤ bn}¶ SORT = {(< a1, a2, . . . an >, < b1, b2, . . . bn >)| < a1, a2, . . . an >∈ Input, < b1, b2, . . . bn >∈ Output, {a1, a2, . . . an} = {b1, b2, . . . bn}}" 13 / 40
算法描述(插入排序) 算法描述的原则: ●提倡伪代码描述,不建议采用编程语言 ●简洁清晰为上,抛弃无关细节,可以使用自然语言描述一个可能很复杂的过程 ●伪代码只关心思维流程的正确性,不关心是否可编译,比如变量等无须声明可直 接使用 ●伪代码不关心软件工程问题,常忽略数据抽象、模块性和错误处理 ,口y4生4三,在QC 14/40
算法描述(插入排序) é{£述Kµ JÜñìË£述ßÿÔÆÊ^?ßäÛ {'òflè˛ßÔÃ'[!ßå±使^g,äÛ£述òáåUÈE,Lß ñìËê'%gë6ß(5ßÿ'%是ƒå?»ß'XC˛ÃL声²åÜ 使^ ñìËÿ'%^áÛߨKß~—数‚ƒñ!¨5⁄Üÿ?n 14 / 40