“2016级--学期安排 (第四学期)”的版本间的差异

来自问题求解
跳转至: 导航搜索
第439行: 第439行:
 
     <td>
 
     <td>
 
       <ul>
 
       <ul>
 +
        <li>JH第2章练习2.2.3.21、2.2.3.22</li>
 +
        <li>JH第5章练习5.3.4.12</li>
 
       </ul>
 
       </ul>
 
     </td>
 
     </td>

2018年6月4日 (一) 09:32的版本

基本要求

  • 掌握复杂性理论的基本内容与问题规约方法。
  • 掌握解决“难”问题的主要方法,理解相关的重要理论结果。

注意:程序设计能力要求贯穿于整个课程,不再单列。

指定教材

  • JH: Juraj Hromkovic: Algorithmics for Hard Problems - Introduction to Combinatorial Optimization, Randomization, Approximation, and Heuristics, 2nd ed. Springer, 2004
  • TC: Thomas Cormen: Introduction to Algorithms, 3rd ed. MIT, 2009

推荐课外读物

  • Richard Lipton: The P=NP Question and Gödel's Lost Letter. Springer, 2010

学习周历

日期 论题 学习目的 阅读材料 引导要点 书面作业 编程任务
3.5--3.9 4-1:问题的形式化描述
  • 熟悉以基于集合的形式化方式描述问题以及相关的对象,为严格的算法分析打下基础
  • JH第2章第3节第1小节、第2小节的三个定义
  • 如何有效地理解形式化描述?
  • JH第2章练习2.3.1.7、2.3.1.8、2.3.3.8
  • 附录A.01
3.12--3.16 4-2:NP完全理论初步
  • 理解如何按照问题难度对问题进行分类
  • 理解NPC的证明方法
  • TC第34章
  • 规约在NPC理论中的意义
  • TC第34.1节练习2、3、5
  • TC第34.2节练习3、4、6、11
  • TC第34.3节练习2
  • TC第34.4节练习3、5、7
  • TC第34.5节练习6
  • 附录A.02
3.19--3.23 4-3:伪多项式算法
  • 理解为什么若输入满足一定条件,则此条件有可能被利用来降低算法的复杂性
  • JH第3章第2节第1、2、4小节
  • 如何识别一个可利用的输入子集条件
  • JH第3章练习3.3.2.7、3.3.2.8、3.3.2.9
  • 说明可以用确定的多项式算法解网络最大流问题,不必限制输入。
  • 附录A.03
3.26--3.30 4-4:分支-界限算法
  • 理解如何加快解空间搜索的速度,以至于算法复杂度得以降低
  • JH第3章第4节
  • 如何判断可以剪枝的条件
  • JH第3章练习3.4.2.1、3.4.2.2
  • 采用branch-and-bound方法解背包问题,并分别给出对你的方法有利与不利的输入
  • 附录A.04
4.2--4.6 4-5:局部搜索算法
  • 掌握通过局部搜索试图获得最优解的方法
  • JH第3章第6节第1、2小节
  • 如何合理定义邻集
  • JH第3章练习3.6.1.3
  • 如果一个局部搜索算法给出的解一定是全局最优解,则这个算法称为“精确局部搜索算法”:(1)证明解TSP的2-exchange不是精确的。(2)证明解TSP的(n-1)-exchange是精确的。
  • 考虑带权图的最大边割集问题……(参见课件)
  • 附录A.05
4.9--4.13 4-6:松弛算法
  • 掌握将整数规划问题转换为一般线性规划问题的解题途径
  • JH第3章第7节第1小节、第2小节的集合覆盖问题、第4小节的开头部分
  • 如何从可能是非可行解得到需要的结果
  • JH第3章练习3.7.2.1、3.7.2.4、3.7.2.5、3.7.4.4、3.7.4.12、3.7.4.16
  • 附录A.06
4.16--4.20 4-7:近似算法的基本概念
  • 理解近似算法相关的基本概念
  • 理解近似算法的基本评价方法
  • JH第4章第1节、第2节第1、3小节
  • 近似算法分类的基本参考指标以及意义
  • JH第4章练习4.2.1.4、4.2.1.5、4.2.3.3、4.2.3.4、4.2.3.5
  • 附录A.07
4.23--4.27 4-8:覆盖问题与最大割集问题
  • 通过覆盖问题与最大割集的例子理解将贪心算法与松弛算法结合进行问题求解的方法
  • JH第4章第3节第1、2、3小节
  • 基于“直觉”的思路可以产生明显的效果
  • JH第4章练习4.3.2.3、4.3.2.6、4.3.2.9
  • 附录A.08
4.30--5.4 4-9:背包问题
  • 以背包问题为例理解如何针对一个相对容易的“难”问题找到好的算法(PTAS)
  • JH第4章第3节第4小节
  • 如何有效地利用多种概念与算法设计策略以达到效率的提高
  • JH第4章练习4.3.4.9、4.3.4.13
  • 附录A.09
5.7--5.11 4-10:旅行推销商问题
  • 以旅行推销商问题为例理解最难的一类优化问题的处理方法
  • JH第4章第3节第5小节
  • 如何对算法进行不断改进
  • 理解近似算法的问题性以及其在问题求解中的意义
  • 设计一个找最小完美匹配的算法
  • JH第4章练习4.3.5.6、4.3.5.11、4.3.5.13
  • 附录A.10
5.14--5.18 4-11:Bin-Packing问题
  • 以Bin-Packing问题为例,理解对偶近似方法
  • JH第4章第3节第6小节
  • 理解对偶在算法设计中的意义与效果
  • JH第4章练习4.3.6.6
  • 附录A.11
5.21--5.25 4-12:随机算法的概念
  • 理解与随机算法相关的基本概念
  • 理解随机算法的基本评价方法
  • JH第5章第1、2节
  • 正确性的概念与期望正确率的概念
  • JH第5章练习5.2.2.7、5.2.2.8
  • 附录A.12
5.28--6.1 4-13:Random Sampling和Abundance of Witnesses
  • 理解Random Sampling和Abundance of Witnesses在随机算法设计中的应用
  • JH第5章第3节第1、2、3小节
  • 为什么“乱猜”也是一种算法设计方法
  • 如何利用数学知识减少false witness
  • JH第5章练习5.3.2.5、5.3.3.2、5.3.3.9、5.3.3.10
  • 附录A.13
6.4--6.8 4-14:等价测试问题
  • 以多项式等价测试为例理解随机算法设计中的指纹方法
  • JH第5章第3节第4小节
  • 问题的转移
  • JH第2章练习2.2.3.21、2.2.3.22
  • JH第5章练习5.3.4.12
  • 附录A.14
6.11--6.15 4-15:最小割集问题
  • 以最小割集为例理解如何用随机算法解优化问题
  • JH第5章第3节第5小节
  • 随机算法用于优化问题与用于判定问题的差别
  • 附录A.15
6.18--6.22 4-16:不同方法结合使用
  • 通过Max-Sat问题理解如何将随机算法和优化算法很好地结合起来,以达到效率与解质量的权衡
  • JH第5章第3节第6、7小节
  • 多种方法的结合使用
  • 附录A.16
暑假自学 4-17:去随机方法
  • 理解并掌握去随机的基本方法,结合应用场景,可能可以在输入空间的一个子集上将随机算法改为确定算法
  • JH第5章第4节
  • 如何找合适的输入子集合
  • 附录A.17
暑假自学 4-18:启发式算法
  • 通过典型的模拟淬火算法,理解启发式算法的基本概念、其价值以及局限性
  • 理解遗传算法的基本思想及其适用性
  • JH第6章
  • 如何从自然界获得灵感,以非常简单的思路改造算法
  • 附录A.18

附录A