北京大学的数据结构与算法实习PPT文档.pptVIP

北京大学的数据结构与算法实习PPT文档.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北京大学的数据结构与算法实习PPT文档

数据结构与算法实习 北京大学信息科学技术学院 张 铭 mzhang@ /mzhang/ds/shixi/ 2007.7.16 课程目的 配合“数据结构与算法”主课,提高实际动手能力和程序设计的质量 基本数据结构 线性表(向量、串、栈和队列)、二叉树、树、图等 ADT、STL 综合应用程序 排序、检索、文件、索引等技术 程序设计实践和技巧 课程内容 C++编程技术补充 标准模板库 STL的基本概念 C++流处理 程序设计实践和技巧 风格、设计和实现 界面、排错 测试、性能和可扩展性 基本算法 枚举法、贪心法 递归、回溯、搜索与分支限界 分治法、动态规划 高级数据结构 线性:多维矩阵、稀疏矩阵、广义表、存储管理 树型:字符树、 BestBST、AVL树、伸展树 问题建模 数学建模、软件模型 成绩评定办法 平时:20% 考勤、开卷随堂测试、课堂表现 ACM作业:20% 北大ACM结果、源程序、实习报告 综合上机题:40% 源程序、实习报告 期末考试 20% 有附加题 作业要求 实习课4道大综合实习,6道ACM “诚实代码” 要调试 要提交上机报告 课程资源 数据结构与算法(信息学院) /mzhang/DS/ 数据结构实习(计算机和智能专业强化) /mzhang/DS/shixi/index.htm 课程答疑 /mzhang/ds/bbs/ 注册:1-学号xxx 教材 1. 张铭、赵海燕、王腾蛟,《数据结构与算法--学习指导与习题解析》,高等教育出版社,2005年 9月。ISBN 7-04-017829-X。 2. 许卓群、杨冬青、唐世渭、张铭,《数据结构与算法》,高等教育出版社,2004年7月。 3. Brian W.Kernigham 著,裘宗燕 译,《程序设计实践》,机械工业出版社,2003年9月。 4. M. H. Alsuwaiyel, Algorithms Design Techniques and Analysis, 电子工业出版社影印,2003年1月。 程序设计实践和技巧 风格、设计和实现 程序的境界 界面、排错 测试、性能和可扩展性 风格、设计和实现 风格 文件结构、版式、命名、注释…… 程序员的素质 程序的境界 设计和实现 问题求解 数学建模、问题建模 数据结构抽象 算法抽象 效率分析 选择能在合理时间内解决预期规模问题的简单算法和数据结构 在一些互相冲突的需求和约束条件之间寻找平衡 反复试验,推倒重来,直至…… 界面(interface)与排错 用户界面、程序接口 字符界面:菜单型,命令行型 简单、清晰、规范、统一 鲁棒性 排错 注意程序风格(避免全局变量、不用goto……) 排错的时间至少跟写程序一样长 不要去怀疑编译器和库函数 读程序,而不是马上去改程序 不要过于依赖debug工具 测试、性能和可扩展性 测试(Testing):用系统的方法来发现程序中可能存在的隐藏的bug 黑盒测试 白盒测试 性能优化 编译、代码、算法优化 可扩展性 软件复用 紧盯标准 平台无关 在总体设计上要注意代码风格、可复用性和可扩展性 在关键段要牺牲上面的内容来追求性能 性能和可扩展性是相互矛盾的 STL中的容器 STL中的容器 基本算法 问题的状态空间 穷举法 回溯、搜索 贪心法 递归分治 动态规划 八皇后问题 在8×8格的国际象棋棋盘上摆放8个皇后,使其不能互相攻击 任意两个皇后都不处于同一行、同一列或同一斜线上 问有多少种摆法? 八皇后问题的一个解?? 穷举法(枚举法) 4个皇后各占一行,穷举每一行上可能占有的列 共有44 = 256种情况 枚举时,可以排除直观不符合条件的情况,减小候选集 有4! = 24种情况 最后输出合理的解 穷举法的代价 穷举问题域的所有解,找到所有最佳解 减少穷举次数 穷举的变量 注意穷举的顺序 减少判断每种情况的时间 时间代价最高 问题规模n,搜索空间Σ,总搜索时间是: T= |Σ| ?t,O(n!) = O(nn),O(2n) 指数级时间代价 状态空间 四皇后的解空间树 解空间树 根(root):问题的起点 问题状态(problem states):树中结点 状态空间(state space):由根结点到其它结点的所有路径 解状态(solution states)S:由根到S的路径确定了解空间中的一个元组 答案状态(answer states)S:由根到S的路径确定了这问题的一个解(即,它满足隐式约束条件) 回溯法图示 “可行则进,不行则换、换不成则退”。 简化为4皇后问题。搜索过程如下: 四后问题求解 回溯算法 八皇后问题的表示 棋盘行列、皇后依次编上0, 1,…,7号 A[0..n-1][0..n-1] 表示n×n棋盘上的格 行号从上至下、列号从左到

文档评论(0)

skvdnd51 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档