选课类别:基础 | 教学类型:理论课 |
课程类别:研究生课程 | 开课单位:计算机科学与技术系 |
课程层次:硕士 | 学分:3.0 |
算法设计与分析是计算机科学与技术各专业硕士研究生必修的基础课。本课程主要介绍概率算法、近似算法和分布式算法基础,使学生掌握概率算法、近似算法和分布式算法设计及分析的基本方法。主要内容分为如下三个部分。
一. 概率算法,主要包括:
1.基本概念:主要介绍概率算法的特点、意义、分类、复杂性分析方法;2.数字概率算法:重点介绍π值计算、数值积分、概率计数以及其它数值算法的设计和分析;3.Sherwood算法:以选择和排序、随机预处理、有序表搜索等问题为例重点介绍Sherwood算法的概念和特点,以及算法设计和分析的方法;4.Las Vegas算法:以n-皇后、模p平方根、整数的因式分解等问题为例重点介绍Las Vegas算法的概念和特点,以及算法设计和分析的方法;5.Monte Carlo算法:重点介绍一致、有偏、精度分析等基本概念,以主元素、素性判定、矩阵相乘等问题为例,重点介绍Monte Carlo算法设计、分析和改进的方法。
二、近似算法,主要包括:
1.NP完全性理论:主要介绍图灵机等计算模型、问题变换及计算复杂性规约、P类问题、NP类问题、NP-hard和NPC问题、Cook定理等;2.基本概念:介绍优化问题的近似解分类、近似算法的绝对性能保证、相对性能保证(包括绝对性能比、渐近性能比、最佳可达性能比)、近似模式(多项式近似模式、完全多项式近似模式)、绝对近似算法之否定、相对近似算法之否定等;3.基本算法:图的顶点着色、图的边着色、多机调度、装箱、旅行商、顶点覆盖和最大独立集问题等问题的近似算法。
三、分布式算法基础,主要包括:
1.基本概念:介绍分布式系统、计算模型、复杂性度量标准等分布式计算的基本概念;2.分布式算法基础:主要介绍同步和异步网络模型,同步/异步环中的Leader选举、一般网络中的Leader选举、生成树构造、广播和敛播、广度/深度优先搜索、最短路径、最大独立集等分布式算法;介绍异步共享存储器和网络算法、重点介绍互斥和资源分配问题,介绍哲学家用餐算法、着色算法、有向无环图算法以及哲学家饮水算法等。
出分更新:
97分,给分看起来很奶,加一分。
考后更新:
鉴于对考试题目的不满,再扣0.5分,虽然难度是不大的,但是考试内容有种让我说不出来的怪异。比如PPT上只出现了两三页也没有数学推导的布谷鸟哈希,出了一道高达十分的名词解释题(我是没怎么看,只能靠记忆碎片拼凑一些东西糊上去)。还有设计出线性时间的3倍近似负载均衡算法(我还是很怀疑到底存不存在这样的算法,如果m也是输入的一部分)。
我自己就是TCS方向的,所以课程难度对我并不大
但是让我比较反感的是,这个班助教批改作业有点过于严苛了。题目没有明确要求写时间复杂度的时候,我觉得是没有写的必要的(比如题干只要求了近似比/正确性这样,虽然只要多写一句算法是多项式时间就够了),代价就是有几道作业每题被扣了五分。某道题目给出反例已经完全充足了,但是没有写某个式子还是被扣掉分,苦我敲了半天LaTeX。相比之下隔壁中文班助教真就非常宽松,我觉得评分应该有一些宽容度,这种严苛的扣分让我梦回小初高。(研究生成绩似乎也没啥用,不过还是很不爽
比较好的一点是英文班这学期只上了近似算法和随机算法,而中文版还有分布式算法(有点异类,算法正统在英文班,逃
简单评价一下。这学期英文班是由两位老师负责上,每位老师上一半时间,没有涉及分布式部分,五分是给彭老师,一分是徐老师的。原本是徐老师先上的,但因为周五给本科生上课喉咙问题让彭老师先上了。
首先,彭老师负责的部分(近似算法、随机算法)收获很多,上课节奏也很合理,会把重点用中文再简述一遍。但很多算法的证明跳了,这里提个小建议,相同方法的证明可以只讲一题,把时间留给其他方法,这样覆盖范围可以更全面,有更整体的认识。因为ppt上的推导过程真的很清晰,讲了一遍证明后,课后自己看一遍应该没什么问题。
其次,徐老师负责的部分令人一言难尽,学期初的几次课节奏很拖沓,时不时会停顿一下,给人一种在措辞的感觉,而且基本是先讲中文,再用英文重新讲一遍,浪费了很多时间。后半学期徐老师请了另一位老师来讲,就没怎么去听了,徐老师应该每次课都在下面听,但ppt用的似乎还是彭老师写的。至于为什么没讲分布式部分,我觉得可能原先是打算彭老师来讲分布式部分。换老师令人疑惑的是如果是嗓子问题,徐老师后半学期照常在教中文班。
当然,从水的角度,徐老师还是很好的,直接将复习范围缩到了2/3。此外,彭老师学期初说的是会布置六次作业,其中只有三次需要提交。本学期彭老师布置了三次作业,有两次需要提交,徐老师没有布置作业,作业量也--,就是不知道会不会影响平时分的占比。
这个难度有点哈人了,动辄上百页的slides加上老师的英文授课,属于是听课自学都难受/(ㄒoㄒ)/作业虽然题目不多,一次三四个,但是都很花时间,希望最后能捞吧
结课了来评价一下讲课,slides很好,但是老师讲的非常难评,故下调1分。
原来还有同学觉得课程内容非常简单,再次见识到人与人的差距
ps. 虽然成绩让人害怕得心惊肉跳但是算法真的好有意思hhh
名义上是英文班,但实际上中英文都会讲。只不过很多时候会出现同样的内容PPT上看一遍、英文听一遍然后中文又听一遍,信息密度有点低。这个学期徐老师貌似出了点问题,开学上了几节课后就提前让彭老师来上了,彭老师上完之后又让张辉老师和助教来带,最后几节课直接停了,导致分布式部分就完全没讲。本来上课期间会觉得这课掺了很多水是不是不太好,现在发现寒假过完什么都不记得了,看来课程水不水都无所谓了。考虑到给分好和相对于中文班作业和内容都更少,体验还是不错的…