1 / 26

第二十一讲 总结: 主要内容和方法

第二十一讲 总结: 主要内容和方法. 1. 2009年秋季 北京大学主干基础课 《 数据结构 》. 主讲:张乃孝 教授 对象:2008级元培班和数学学院本科. 2. 教材与参考资料. 3. 普通高等教育“十一五”国家级规划教材  普通高等教育精品教材 《 算法与数据结构 — C 语言描述 》 (第 2 版) 张乃孝 编著 , 高等教育出版社 2008. 普通高等教育“十一五”国家级规划教材配套参考书 《 算法与数据结构 》 (第 2 版)学习指导与习题解析  张乃孝 编著 , 高等教育出版社 2009.

moesha
Download Presentation

第二十一讲 总结: 主要内容和方法

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第二十一讲 总结:主要内容和方法 1

  2. 2009年秋季北京大学主干基础课《数据结构》2009年秋季北京大学主干基础课《数据结构》 主讲:张乃孝 教授 对象:2008级元培班和数学学院本科 2

  3. 教材与参考资料 3 • 普通高等教育“十一五”国家级规划教材  普通高等教育精品教材 《算法与数据结构— C语言描述》(第2版) 张乃孝 编著, 高等教育出版社 2008. • 普通高等教育“十一五”国家级规划教材配套参考书 《算法与数据结构》(第2版)学习指导与习题解析  张乃孝 编著, 高等教育出版社 2009.

  4. 学习目的 • 理解数据结构和算法的概念; • 掌握设计数据结构与算法的主要原理和方法; • 比较不同数据结构和算法的特点。 • 提高学生使用计算机解决问题的能力。

  5. 问题求解 着色问题,信号灯问题   Josephus问题   迷宫问题   农夫过河问题   Huffman编码   拓扑排序   关键路径   表达式计算 *骑士周游 *多边形的最优分割 *求组合数 *背包问题,0/1背包问题

  6. 用计算机求解问题

  7. “算法+数据结构=程序” 程序就是在数据的某些特定的结构和表示的基础上对于算法的描述。 算法与数据结构是程序设计中相辅相成、不可分割的两个方面。 与《图论》及《算法的分析和设计》课程的区别。 《数据结构》需要特别强调的原因。 7

  8. 抽象数据类型 • 有一定行为(操作)的抽象(数学)类型。 • 抽象出数据类型的使用要求,而把它的具体表示方式和运算的实现细节都隐藏起来。 • 允许独立地考虑数据类型的外部接口和内部的实现。 支持数据类型的实现与使用分离的原则。是一种十分有效的对问题进行抽象与分解的思维工具。 • 是面向对象技术与方法的主要理论基础。也有助于数据结构的学习和研究。 8

  9. 抽象数据类型    Set (集合)    Dictionary (字典)    List (线性表)    String (字符串)    Stack (栈)    Queue (队列)   BinTree (二叉树)    Tree (树)    PriorityQueue (优先队列)    Graph (图)

  10. 数据结构 • 传统的概念:数据结构是计算机中表示(存储)的、具有一定逻辑关系和行为特征的一组数据 • 面向对象的观点:数据结构是抽象数据类型的物理实现。 主要解决两个问题: 如何具体表示抽象数据类型中的数学模型; 如何给出抽象数据类型中需要操作的实现。 10

  11. 数据结构的三个方面 逻辑结构(数学模型) 指数学模型(集合,表,树和图等)中的基本元素(结点)之间的相互关系(在抽象数据类型中这些关系隐含在数学名称中)。 描述方式:B=<K,R>, K是结点的有穷集合, R是K上的一个关系。 存储结构(物理结构) 指数学模型的具体表示方式,包括结点的表示和关系的表示。 数据的逻辑结构在计算机存储器中的映射(或表示) 操作(行为) 指抽象数据类型关心的各种行为在不同的存储结构上的具体实现(算法或程序) 11

  12. 数据结构的分类(Ⅰ) 按逻辑结构分类 给定 B=<K,R>, 若<k1,k2> R, 则称k1为k2的前驱, k2为k1的后继.没有前驱的结点为开始结点, 没有后继的结点为终端结点 根据R的特点可以将数据结构分为以下三类: 线性结构: K中每个结点最多只有一个前驱和一个后继 树形结构: K中每个结点最多只有一个前驱,但可有多个后继 复杂结构:K中结点的前驱、后继结点的个数都不作限制 特别地 集合结构:当R为空集时,K中结点间没有约束关系。 12

  13. 数据结构的分类(Ⅱ) 按存储结构分类 计算机的内存提供了一个可以连续存储、随即存取和连续编址的存储空间 存储结构的设计目标,就是使用比较少的空间记录逻辑结构的必要信息,并且有效实现抽象数据类型中要求的操作 四种最基本的存储方法 顺序表示 链接表示 散列表示 索引表示 13

  14. 数据结构的分类(Ⅲ) 按操作(行为)分类(由抽象数据类型决定) 队列 栈 优先队列 字符串 14

  15. 内部数据结构 • 集合 •   单链表表示 •   位向量表示 • 字典 •   散列表示 •   顺序表示 •   二叉排序树(二叉搜索树) •   平衡二叉排序树 •   最佳二叉排序树 • 线性表 •   链表 •   顺序表 • 字符串 •   链接表示 •   顺序表示 • 栈 •   链接栈 •   顺序栈 • 队列 •   链接队列 •   顺序队列 • 二叉树 •   链接表示 •   顺序表示 •   线索二叉树 • 树 •   父指针表示 •   长子-兄弟表示 •   子表表示 • 图 •   邻接表表示 •   邻接矩阵表示

  16. 外部数据结构  顺序文件   倒排文件   散列文件   索引文件/索引顺序文件    B树     B+树    多分树

  17. 算法 算法是由有穷规则构成(为解决某一类问题)的运算序列。 算法设计的方法 贪心法 分治法 回溯法 动态规划法 *分枝界限法

  18. 不同方法的应用 • 对于某一问题来说,能用不同的设计技巧得到不同的算法,0/1背包问题就是典型的例子。 • 一个算法中,也可以结合使用几种算法设计技巧。如快速排序算法是分治的技巧和回溯的技巧的结合,其中分治的技巧是主要的。

  19. 检索/查找算法 集合和字典的查找 顺序表示 链接表示 散列表示 索引表示 线性表的查找: 顺序查找/二分法查找 字符串查找:模式匹配 二叉树的周游   广度优先周游   深度优先周游    后根次序    对称次序    先根次序 树的周游   广度优先周游   深度优先周游    后根次序    先根次序 树林的周游   后根次序   先根次序 图的周游   广度优先周游   深度优先周游

  20. 排序 插入排序   Shell排序   表插入排序   二分法插入排序   直接插入排序 选择排序   堆排序   直接选择排序 交换排序   快速排序   起泡排序 分配排序   基数排序 归并排序 二路归并 多路归并

  21. 算法分析 空间代价(空间复杂性):被解决问题的规模(以某种单位计)为n时, 某求解算法所需存储空间按某种单位为S(n), 则称该算法的空间代价为S(n). 时间代价(时间复杂性):当问题规模(以某种单位计)为n时, 算法所耗时间按某种单位为T(n), 则称该算法的时间代价为T(n). 21

  22. 算法空间代价分析 静态分析和动态分析 在静态空间分析中,值得注意的是数组(算法中静态明确定义大小的数组),它占用了大部分静态空间。 动态空间的分配主要由两种情况构成: (1)函数的递归调用; (2)执行动态分配函数。

  23. 算法的时间代价分析 循环语句的时间代价一般用以下三条原则分析: • (1) 对于一个循环,循环次数乘以每次执行简单语句的数目即为其时间代价。 • (2) 对于多个并列循环,可先计算每个循环的时间代价,然后按大O 表示法的加法规则计算总代价。 • (3) 对于多层嵌套循环,一般可按大O 表示法的乘法规则计算。但如果嵌套是有条件的,为精确计算其时间代价,要仔细累加循环中简单语句的实际执行数目,以确定其时间代价。 对于递归算法,一般可把时间代价表示为一个递归方程的解。

  24. ADT,数据结构与算法相互关系 一个抽象数据类型决定了一组需要的操作 不同抽象数据类型的实现,可以选择相同的逻辑结构 对于一种逻辑结构,往往可以采用不同的存储结构 一个算法的思想可以独立于具体的数据表示,但是操作的实现,总是依赖于具体的存储结构 具体选择何种存储结构,主要应该考虑操作的要求 使得主要运算的开销,在时间和空间的权衡中达到最佳效果 算法的时间代价是选择与评价不同存储结构的关键 24

  25. 复习要求 • 讲课内容与教材内容的交集为主 • 书面作业/上机实习/网上讨论为辅 • *教材第10章和2.5/2.6/4.3.3的内容不要求 • *算法7.5/7.6/8.3/8.9/9.8/9.9思路要清晰 • 期末考试包括全部内容,题型与期中相似.

  26. 2009年《数据结构》教学进度表 • 绪论 • 线性表 • 字符串 • 栈 • 队列 • 二叉树 • 二叉树的应用 • 树与树林 • 集合与字典 • 字典的散列表示 • 字典的树形表示 • 最佳和平衡二叉排序树 • 索引文件 • 插入排序 • 选择排序和交换排序 • 分配排序与归并排序 • 图 • 最小生成树 • 最短路径 • 拓扑排序和关键路径 • 总结:主要内容和方法

More Related