“2012级--讨论记录 (第一学期)”的版本间的差异
来自问题求解
第323行: | 第323行: | ||
</li> | </li> | ||
</ol> | </ol> | ||
+ | |||
+ | =最后一次作业讲解= | ||
+ | [[媒体文件:讨论记录-第一学期-2班-第14次.pdf|[课件下载]]] |
2013年1月11日 (五) 23:02的最新版本
目录
2012年9月27日
-
利用the list求解UD第1章问题1(找水平、垂直对称单词)。
- 审题:分别水平、垂直翻转后不变,还是同时水平、垂直翻转后不变。
- plan:包括数据、算法两部分;未必每个字母都要对称(也可以翻转成为另一个字母);字典中的单词要先转为大写。
-
将上述plan转换成计算机可理解的形式(输入、算法、输出)。
- 输入:字典;字母及其是否对称。
- 算法:描述的颗粒度要适中。
- 输出:题目只要找一个单词,不是全部。
-
要把大象装冰箱,总共分几步(小品视频)。
- 问题的输入和算法的输入要匹配。
- 算法要能处理异常输入。
- 算法-->C++程序(计算机仍然不能直接理解)-->机器语言。
- 熟悉VC++编程环境。
2012年10月11日
- C++程序设计(1)
2012年10月18日
-
理解Cantor定理。
- 幂集的含义。
- 证明的思路。
-
Implication的陈述方法。
- 中英文术语的对应。
- 直译与意译。
-
Exercise 2.8。
- 真值表的应用。
- 形式化问题时的命题选择。
- 求解Knights and Knaves:命题的形式化(特别是等价运算符的使用)。
-
合取/析取范式的化简。
- 可合取分量的选择:只有一个变元前的正反符号不同。
- 编程:循环的使用(特别是循环的条件)。
- 量词与集合:命题形式化的全面性与准确性。
- proof in cases方法的正确性:命题的形式化。
- 扑克牌魔术的原理:将问题形式化为数学归纳法可解的形式(特别是确定n的含义)。
- 表达式的范式表示:数学归纳法证明中要确保能覆盖n+1时的所有可能性。
2012年10月23日
- C++程序设计(2)
2012年11月2日
-
不用递归实现second-visit-traversal。
- 方法1:引入“返回父节点”操作。
- 方法2:运用堆栈。
-
走迷宫的算法。
- (没有回路的)迷宫可表示为树。
- 走迷宫可表示为树的遍历。
- 树节点的逐层输出:运用队列(操作受限的数组)。
-
对战tic-tac-toe的算法。
- 下每一步棋的目的:最大化获胜概率。
- 结果最完美的算法:穷举所有可能性。
- 所有可能性的表示方法:树。
- 下每一步棋的获胜概率的计算:叶子节点的分布。
2012年11月8日
-
“选择排序”算法的流程图:自顶向下解决问题的思路。
- 先绘制外层循环。
- 再绘制内层循环。
- 子程序(函数)的四个作用及举例。
-
所有C++变量名构成的语言:
- 对应的BNF:自顶向下解决问题的思路;递归定义的多种写法。
- *对应的有穷状态自动机。
- 利用有穷状态自动机检查句子的合法性。
- *利用有穷状态自动机对不合法的句子提出修改建议。
- C++变量声明语句对应的BNF:自顶向下解决问题的思路。
2012年11月16日
- C++程序设计(3)
2012年11月22日
-
编译型语言 vs. 解释型语言。
- 编译型的优势:运行效率、知识产权保护。
- 解释型的优势:跨平台、交互性。
- 用C语言来编写一个C语言编译器自身的绝大部分:递增实现。
- 包含于 vs. 属于。
-
自顶向下证明集合相关的命题。
- if and only if的分治。
- 集合相等的分治(包含于)。
- 下标集、幂集、笛卡尔乘积、关系的含义。
2012年11月29日
- 关系的性质:自反、反自反、对称、反对称、强反对称、传递、等价。
-
关系的转换。
- 反对称-->强反对称:去掉(x,x)。
- 问题10.6:对称+传递-->自反?x在关系中不出现(即找不到y)。
- 等价关系(和等价类)、划分及其一一对应:关系/集合的内涵和外延。
-
界、极值和确界的比较。
- 数量。
- 是否在集合中。
-
序。
- 举例:集合上的“包含”关系是偏序;实数上的“大于等于”关系是全序。
- 哈斯图:偏序哈斯图的必要条件是无回路(自回路除外);全序哈斯图的核心是一条有向路径。
- 从数学归纳法推导well-ordering principle of N。
2012年12月6日
-
函数。
- 基本术语:定义域、陪域、值域、单射、满射、双射。
- 举例:单射非满射;满射非单射;双射。
- 函数相等:从集合的角度定义。
-
函数相关的证明。
- 求解函数值域的思路。
- 证明函数是双射的思路。
-
函数的复合。
- 复合与单射/满射的关系。
- 举例:f单射、g单射;f单射、g非单射、g◦f单射;f满射、g满射;f非满射、g满射、g◦f满射;f双射、g双射。
- 恒等函数的性质证明:well-defined;one-to-one;onto;its own inverse(根据函数相等的定义)。
-
函数的像。
- f-1(y)和f-1({y})的区别:反函数值和反像。
- Exercise 16.4的反例。
2012年12月13日
- 数独程序设计答辩。
2012年12月20日
-
算法方法的应用(0-1背包问题)。
- 穷举搜索:通过位串(二进制数)实现子集的穷举。
- 带剪枝的穷举搜索。
- 贪心:定义性价比;局部最优。
- 动态规划:定义子问题;全局最优。
-
程序设计中的错误。
- 语言错误。
- 逻辑错误:语义错误(=和==的混用);算法错误。
-
算法的正确性。
- 部分正确:if终止then正确(特例:一个死循环程序)。
- 终止。
- 完全正确:部分正确+终止。
-
算法正确性的一般证明手法。
- 部分正确:基于checkpoint的局部证明。
- 终止:递减量的收敛。
-
算法正确性的证明。
- 选择排序算法:先证内循环、后证外循环,即as-you-go verification。
- 汉诺塔问题的迭代算法:数学归纳法,分奇偶情况讨论。
-
计算机辅助的算法正确性证明。
- interactive verification:计算机辅助的交互式证明。
- proof checking:计算机自动证明。
2012年12月27日
-
等势和有限集合。
- 等势的本质:双射。
- 证明集合有限和求解集合的势之间的联系:都是找m。
- 有限集合的子集是有限集合的证明:找双射。
- 从Exercise 20.13不能推出Z+是有限集合:任意大和无穷大的区别。
-
从有限集合到无限集合。
- 证明集合无限的基本思路:不是有限。
- N是无限集合的证明:反证法+鸽巢原理。
-
可数集合。
- 可数无限集合的本质:双射到N。
- 定理证明中的双射构造:N的子集;NxN;Q。
- 可数集合的子集是可数集合的证明:找双射。
-
不可数集合。
- 证明集合不可数的基本思路:不是可数。
- R是不可数集合的证明:反证法+构造法。
-
Metric。
- Metric函数的四个特征。
- 集合的距离函数:|(A union B) \ (A intersection B)|,即编辑距离。