课程简介

这是关于计算机算法的入门课程。适合受过高中程度的教育,希望对计算机算法相关话题有比较专业的了解,但还没系统学习的学习者。这里提供的完整内容(包括总共400分钟讲课视频,80道习题和一套包含15个题的试卷),既可以作为大学非计算机专业的选修课材料,也可以用于大学面向学有余力的高中生开设的AP(先修)课程。 课程概述 在概述了算法是什么、算法的描述、算法的分析和算法的类型等四个方面的要点之后,课程选择了10个有代表性的问题进行算法求解的讨论。采用问题导入,算法思路,算法描述和算法分析的基本框架,展现了计算机科学中常用的算法思维内涵。同时,对有些问题,通过强调一题多解的过程,体现了丰富的算法设计思想。 课程目标 通过本课程的学习,预期学习者将获得关于算法世界的一个多维度、有深度的视野,通过熟悉10个典型的问题求解过程,领会丰富多彩的算法思想和算法作为一门学问所关心的要点。学完了本课程,能比较专业地与他人讨论算法问题。

课程大纲

第一讲    开启算法学习之旅

  1.1  什么是算法

  1.2  算法的描述

  1.3  算法的分析

  1.4  算法的类型

第二讲    量水问题  

       2.1量水问题的引入

       2.2 欧几里得算法

       2.3 扩展欧几里得算法

第三讲    二分法

       3.1 二分搜索

       3.2 求奇次方程的一个实根

第四讲    最优编码树

               4.1信息编码

               4.2 哈夫曼编码树

               4.3 哈夫曼编码算法

第五讲    优化互连互通的成本

         5.1 连通图与生成树

         5.2 最小生成树算法

         5.3 算法的正确性

第六讲    斐波那契数的三种解法

               6.1递归法

               6.2 记忆法(动态规划)

               6.3 矩阵解法

第七讲    最大收益的投资组合

         7.1 背景问题

         7.2 最大回报——动态规划法

         7.3 最佳投资组合

第八讲    路径规划

               8.1 图论基础及最短路径问题

               8.2 单源最短路径算法(Dijkstra算法)

               8.3 多源最短路径——动态规划策略

               8.4 多源最短路径算法(Floyd-Warshall算法)

第九讲    物以类聚,人以群分

         9.1 层次聚类法

         9.2 K均值聚类法

         9.3 比较与升华

第十讲    近朱者赤,近墨者黑

               10.1分类问题

               10.2 K近邻分类算法

第十一讲 旅行推销员问题三解

         11.1 蛮力解法

         11.2 遗传算法

         11.3 最小生成树法




课程说明

参考资料

李晓明,王卫红,薛定稷,《信息技术之选修——算法初步》,华东师范大学出版社,20218

陈道蓄,李晓明,《算法漫步——乐在其中的计算思维》,CCF PRESS(机械工业出版社),20218

李晓明,周刚,顾秋辉,白晓琦,《信息技术之选择性必修——数据与数据结构》,华东师范大学出版社,20213



拓展阅读

其他

主讲教师

李晓明   

1986年,在美国史蒂文斯理工学院计算机系获得博士学位,后在中国哈尔滨工业大学做博士后、教授。1995-1997在美国锡拉丘茨大学东北并行计算中心(NPAC)做高级访问学者。1997年9月至现在,为北京大学计算机系教授。

王卫红   计算机

毕业于美国科罗拉多州立大学计算机科学系,获硕士学位。现为北京大学信息科学技术学院专职教师,担任计算机网络相关的课程教学工作,参与《网络、群体与市场》教材翻译工作。

相关课程推荐

  • 正在进行
    算法设计与分析
    本课程的内容分成两大部分:算法的基础知识、通用算法设计技术与分析方法。 第一部分是算法基础知识,约占20%,主要介绍算法相关的基本概念和数学基础。比如,什么是算法的伪码描述?什么是算法最坏情况下和平均情况下的时间复杂度?算法时间复杂度函数的主要性质,算法复杂度估计中常用的数学方法,如序列求和及递推方程求解。 第二部分是通用的算法设计技术与分析方法,主要介绍分治策略、动态规划、贪心法、回溯与分支限界。主要介绍这些设计技术的使用条件、分析方法、改进途径,并给出一些重要的应用。
  • 正在进行
    面向对象技术高级课程
    《面向对象技术高级课程》深入、系统、完整地讲解当今主流的面向对象软件开发方法的分析、设计、实现及重构方法,深入讲解UML语言的高级技术细节,以及近年来面向对象方法最新的发展趋势。课程集百家之所言,并结合主讲者最新的研究成果,并通过大量、丰富、完整、不同领域、应用不同技术的案例将其中的关键知识点串联起来,便于理解和应用。 此课程适用人群:面向广大软件开发爱好者,并不局限专业与学历层次。最佳选课者为计算机科学和软件工程专业的大学生和硕士研究生。选课者最好具有一门面向对象的编程语言的基本知识和软件工程的基本知识。
  • 正在进行
    数据结构与算法Python版
    本课基于主讲教师在北京大学讲授数据结构与算法课(Python版)的多年教学实践经验,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法,强调问题-数据-算法的抽象过程,关注数据结构与算法的时间空间效率,培养学生编写出高效程序,从而解决实际问题的综合能力。

恭喜,报名成功

进入学习中心

恭喜,报名成功

确定

请进入开课界面预览

确定

X

请去您的邮箱验证

还没收到验证邮件?

1. 试试去广告邮件、垃圾邮件目录看看

2. 再次发送验证邮件

对不起,班次容量已满

请报名下一班次

知道了~!

对不起,您没有操作权限

知道了~!