从抽火柴的问题思考中去-如何从结论推导条件

来源:互联网 发布:2016网络新词语大全 编辑:程序博客网 时间:2024/05/22 11:49

看了刘未鹏的文章《跟波利亚学解题》之后关于解题方法的一些想法。

这篇文章提到了我们从小大到看到的数学书上无一不是欧几里得方式定义的:从定义到定理,再到推论。是属于“顺流而下”式的。但这样的书其实完全扭曲了数学的发现过程。所以作者推荐我们去看波利亚的书《How to solve it》中的启发思考方法。刘未鹏自己也总结出了以下几点:

1. 时刻不忘未知量

2. 用特例启发思考

3. 反过来推导(归约)

4. 试错(这是大部分人一拿到题目都会尝试的方法)

5. 调整题目条件

6. 求解一个类似的问题

7. 列出所有跟问题有关的定理或者性质(这是我们高中解数学题常用的方法)

8. 考察反面,考察其他的情况

9. 将问题泛化,并求解这个泛化后的问题

其中我对第三点印象比较深刻,就是如何运用反过来推导的思维。意思就是从题目要得出的结论本身去推导一些对我们解题有用的推论,无论这个推论是充分的还是必要的。如果这个推论是充要的,那我们就将问题进行了一次“双向”规约,如果原问题不容易解决,那么可能推论的问题容易解决。即使得到的推论是必要而非充分的,那我们也可以知道——任何不满足这个推论的解都不是原问题的解。

我们可以用这个方法来尝试解决一下抽火柴的问题。问题描述如下:

100根火柴,两个人轮流取,每个人每次只能取1~7根,谁拿到最后一根火柴谁赢;问有必胜策略吗,有的话是先手还是后手必胜?

如果按照正常的思维习惯,我们会从条件入手,不断的进行试错。但是这个问题如果使用这个方法,我们会感觉无从下手,因为问题的整个解的搜索空间会很大。但如果我们先从要求解的结论入手就会感到容易很多。

我们先假设存在必胜的策略,如果我们最后给对手留下了1,2.....7根火柴的话,对手可以一次性的拿走所有的火柴,那对手可以获胜。但如果我们给对手留下8根火柴,我们可以发现,无论下一次对手如何取火柴,我们都可以把留下的火柴一次性取走,那么我们一定可以获胜。从这里我们可以知道8是一个分界点!接着我们再思考给对手留下9,10,.......15根火柴,如果对手足够聪明,那他一定会拿走一些火柴(如果剩9,那么他就拿1根;如果剩下10,他就拿2根;依此类推),只剩下8跟火柴,那这个时候我们就陷入了必输的状态当中了。如果我们给对手留下16根火柴,假设对手取走x根火柴(1<=x<=7),我们这时对应的取走(8-x)根火柴,那么就又留给对手8根火柴,那他也就陷入了必输的状态当中了。此时我们可以发现16也是一个分界点!

再往下推到我们不难发现,当我们留下8,16,24.....96(都是8的倍数)根火柴时候,对手一定处于必输的状态当中,因为对手如果取x跟,我们就取对应的(8-x)根,使得对手永远处于必输的状态当中(都剩下8的倍数根火柴)。再回到题目本身我们可以发现:存在着必胜的策略,而且是先手必胜。先手一开始先取走4跟火柴,那么就剩下了100-4=96根火柴,那么后手就一定处于必输。

其实这个问题可以泛化为:

m根火柴,两个人轮流取,每个人只能取1~n根(n<=m),问是否有必胜策略,有的话是先手必胜还是后手必胜?

当我们知道了上面这个特例的思想以后,这个泛化后的问题也就很容易解决了。如果m是(n+1)的倍数,那么后手必胜;反之,先手必胜。


如果我们从这个问题本身衍生出来,可以变种为下列几个同样思路的问题:

100根火柴,两个人轮流取,每个人每次只能取1,3,5,7根,谁拿到最后一根火柴谁赢;问有必胜策略吗,

有的话是先手还是后手必胜?(思路还是一样的)

或者是:

100根火柴,两个人轮流取,每个人每次只能取1,2,3,4,5,7根(不能取6根,注意,当剩下的火柴是m的时候,

不能因为能取的火柴数目比m大就完全拿下),谁拿到最后一根火柴谁赢;问有必胜策略吗,有的话是先手还是后手必胜?(还是存在必胜策略,不过这时候8的倍数不是必输的状态了,而是6的倍数,大家可以自己想一想,也欢迎大家一起讨论。)



参考链接:

刘未鹏《跟波利亚学解题》:http://mindhacks.cn/2008/04/18/learning-from-polya/ 


原创粉丝点击