【MIT-离散数学】高级程序员必备知识!+专业中英文字幕!

P1:
31:17 从这里开始就不懂了。
=>符号我直觉上的理解是 p意味着q,即如果p是正确的,那么q也是正确的。
比如 8是一个偶数=>8一定不是素数。
后者是否正确得基于前者。如果我说8是一个奇数,那后者就不成立了。
也不对......反正我老是觉得后者得基于前者。
但老师似乎不是这么想的。特别是第三个,p=false,q=true.
首先p是一种前提,基本不会为false。即使按照那个例子,假如我是国王,那么猪会吃饲料来看......
好吧,第四个:那么按照这种理解,我是不是可以这么证明:1是偶数=>2是奇数。
两者都是假的,因此整个表达式为真。
好像还真就可以,好像确实没毛病。
好吧,纠结了一个晚上,第二天问了Sydney,算是暂时解释清楚了:


P2:
前一半:
反证法我大概理解了,唯一的疑问是:0也是偶数,但0不是4的倍数,那个证明似乎没有考虑0。
归纳法讲实话,一眼递归,但仔细分析下来还有额外的细节:
首先要证明一种基础情况正确,这很重要。
然后证明p(n)=>p(n+1)成立。
这里我看了两遍才懂,这里面的逻辑链条是这样的:
我们证明了p(0)=true。
假设了:p(n)=true,并且p(n)=>p(n+1)
这一切都基于一种假设,但是这不重要,因为就像一开始说的,没有假设什么都做不了。
然后通过一段不算证明的证明,描述了p(n)可以推出p(n+1)。
也就是说证明了p(n)正确的话,那么p(n+1) 也正确。
但这样还不能说明1,2,3...n=n(n+1)/2
这里的关键点是假设1,2,3...n=n(n+1)/2 正确,实际上我们不关心它是否正确,只关心能否能由它推出后面的情况正确。
最后把p(n)=>p(n+1)代入到p(0)的基本情况,因为p(0)证明过是正确的,到这里才能确定p(n)为true,也就可以以一种递归的方式证明所有n都满足上述公式了。
后一半:
我只看懂了第一个证明,就是3的倍数那个。
那个马的证明为什么不对,还是有些模糊。我没Get到这跟dot dot dot有什么关系,我的想法是每一个马都在自己的集合里,这里证明的是这些马在自己的集合里颜色相同,而不是很多马在同一个集合颜色相同,因此证明是错的。
然后是最后一个,L型瓷砖那个。按照我的理解的话就是:修改前面的假设为可以在任意位置,既然可以在任意位置,那自然可以在中间,因此只需要证明空地可以在任意位置。
不明确的地方还是很多,后面再慢慢看吧。