怎样解题
波利亚在《怎样解题》中给出一个怎样解题表,虽然它面向的是数学的领域,但后来被发现在编程上也有其方法论意义。
第一,你必须弄清问题##
弄清问题###
- 未知数是什么?
- 已知数据(指已知数、已知图形和已知事项等的统称)是什么?
- 条件是什么?
- 满足条件是否可能?
- 要确定未知数,条件是否充分?
- 或者它是否不充分?或者是多余的?或者是矛盾的?
- 画张图。
- 引入适当的符号。
- 把条件的各个部分分开。你能否把它们写下来?
第二,找出已知数与求知数之间的联系##
- 如果找不出直接的联系,你可能不得不考虑辅助问题。
- 你应该最终得出一个求解的计划。
拟定计划###
- 你以前见过它吗?你是否见过相同的问题而形式稍有不同?
- 你是否知道与此有关的问题?你是否知道一个可能用得上的定理?
- 看着未知数!试想出一个具有相同未知数或相似未知数的熟悉的问题。
- 这里有一个与你现在的问题有关,且早已解决的问题,你能应用它吗?
- 你能不能利用它?你能利用它的结果吗?为了能利用它,你是否应该引入某些辅助元素?
- 你能不能重新叙述这个问题?你能不能用不同的方法重新叙述它?
- 回到定义去。
- 如果你不能解决所提出的问题,可先解决一个与此有关的问题。你能不能想出一个更容易着手的有关问题?一个更普遍的问题?一个更特殊的问题?一个类比的问题?你能否解决这个问题的一部分?仅仅保持条件的一部分而舍去其余部分,这样对于未知能确定到什么程度?它会怎样变化?你能不能从已知数据导出某些有用的东西?你能不能想出适合于确定未知数的其它数据?如果需要的话,你能不能改变未知数和数据,或者二者都改变,以使新未知数和新数据彼此更接近?
- 你是否利用了所有的已知数据?你是否利用了整个条件?你是否考虑了包含在问题中的所有必要的概念?
第三,实行你的计划##
实现计划###
- 实现你的求解计划,检验每一步骤。
- 你能否清楚地看出这一步是正确的?你能否证明这一步是正确的?
第四,验算所得到的解##
回顾反思###
- 你能否检验这个论证?你能否用别的方法导出这个结果?你能否一下子看出它来?
- 你能不能把这结果或方法用于其它的问题?
关键词
方法论