解题计划
- 理解问题。你必须要理解问题。
未知量是什么?现有的数据是什么?条件是什么?能够满足这些条件吗?这
些条件足以决定出未知量吗?还是并不够?或者其中有冗余?甚至是矛盾的?
画一幅图,引进一些合适的记号,把条件的不同部分分离开。你能把它们
一一 写下吗? - 设计一个计划。找出现有数据和未知量之间的联系。如果你找不出居中的联系,
那么可能还得考虑些辅助性的问题。最终你应该能得出一份解决方案的计划来。
在此之前你遇见过这一问题吗?或者曾经遇见过与此差别不大的问题?
你知道某个相关的问题吗?你知道一个可能会有用的定理吗?
盯住那个未知量!试着想出一个有着相同或者类似的未知量的问题来。一定
有一个和你的问题相关的而且此前已被解决过的问题,你能用它吗?你能用它的
结果吗?或者用它的方法?为了让它有用你需要再引入一些辅助的元素吗?
你能再重述这个问题吗?你能再次用与以前都不同的方式重述这个问题
吗?回过头去考虑一下定义吧。
如果你还是解决不了提出的这个问题,那么试着先去解决一些相关的问题。
你能设想出一个更容易解决的与此有关的问题吗?一个更一般的问题?一一个更特
殊的问题?一一个类似的问题?你能解决这个问题的一部分吗?只留下一部分条件
而去掉其他条件,未知量能够确定多少,它又能怎样变化?你能从这些数据中得
出有用信息吗?你能找出其他适合用于确定未知量的数据吗?你能修改未知量或
者已知数据,或者必要时修改两者,以便新的未知量和新的数据更加接近吗?
你使用了全部的数据吗?你使用了所有的条件吗?你考虑了该问题所涉
及的所有核心概念了吗? - 执行这一计划。请执行你的计划。
执行你的求解计划,检查每一步。你能清楚地看到每一步都是正确的吗?
你能证明它是正确的吗? - 回顾。检视整个的解。
你能核对结果吗?你能核对论据吗?你能用不同的方法来得出这个结果
吗?你能一眼就看出来吗?
你能在其他问题上使用这一结果或方法吗?
最有效的原则之-就是不要卡在单一的方法上。 如果用UML画设计图不可
行,那么就直接用英语来写。写段简短的测试程序。尝试一-种截然不同的方法。
想出一种蛮力解决方案。用铅笔画出轮廓和草图来指导思维。如果这些方法都不
行,那么就先离开这个问题。可以去散散步,或者去想- -想其他的事情,然后再
回来重新面对这个问题。如果你尽了全力还没能取得突破,那么暂时不要去想它
反而会比穷思苦想的效果要好。
你无须马上解决整个设计难题。一旦被卡住了,那么请记住回过头来时有一
处地方需要做决策,但眼下你还没有足够的信息来解决这个问题。为什么要在最
后的20%设计环节冥思苦想,如果后来能轻易地找到答案呢?为什么在自己还缺
少经验时一定要去做出–些不好的设计、而不等到日后自己经验丰富时再做出更
好的决策呢?有些人如果在一个设计循环过后没有把所有的问题都解决,就会感
到很不舒服。实际上,如果你尝试了一些设计方案,但没有很好的解决问题的时
候,更自然的方式是让那些问题留在未解决的状态,等到你拥有更多信息之后再
去做(Zahniser 1992, Beck 2000)。