2. 问题求解导论¶
2.1. 问题求解导论¶
本文简要概述了四本教科书中的精选材料 (见参考文献中的 [FL95, Lev94, WL99, Zei07])。 阅读其中任何一本都应该帮助你成为更出色的 问题求解者。
要成功求解任何问题,最重要的 是让自己积极参与进去。 Levine [Lev94] 称其为"亲密投入原则"。 写问题求解的人常常使用诸如"卷起袖子" 和"弄脏双手"这样的说法。 其含义是积极地投入到问题中去,做点工作 把它搞定。 对较容易的问题,一旦你积极参与,通常 很快就会"看到"答案,剩下的问题是努力 走完全程。 对较难的问题,也就是最重要的那些,你不会 马上"看到"答案。 对这些问题,即使只是起步,你也必须使用各种策略来想出 一个可能的部分解。
问题求解者可以分为"投入型"或"放弃型"。 投入型通常有成功的问题求解史。 放弃型则多有失败史。 当然,你可能对一类问题是投入型, 对另一类却是放弃型。 许多学生出于娱乐而大量进行问题求解—数独谜题、带有有意义问题求解任务的电脑游戏, 以及各种"谜题"。 他们可能花几个小时投入在"有趣"的问题上。 然而,同样的这些学生可能会因为历史上缺乏成功 而排斥数学和分析性计算机科学问题。 如果你有这个毛病,那么为了在生活中取得成功, 你需要想办法克服这个明显的心理障碍。 你需要学会把在一个生活领域中发现有效的问题求解策略, 迁移到其他领域。
Levine 用了尝试修理干衣机或摇晃的桌子 这样的例子。 如何解决这个问题可能不是立即可见的。 第一步是付出努力去查看这个问题。 在这些例子中,它始于打开干衣机的后盖,或者 往桌子底下看。 这种 初步调查 常常能导向解决方案。 这关系到采取一种愿意承担风险和付出的心理态度。 然后是与之相伴的问题:与问题周旋一段时间,看看 能做什么。 在那一刻,一条可能的解决路径也许会打开。 但除非你愿意花时间并付出努力, 否则什么都解决不了。 所有解决问题的方法都由此开始。
Fogler 和 LeBlanc [FL95] 讨论了高效与低效 问题求解者之间的差异。
区分低效与高效问题求解者的最重要因素是: 他们接触问题时的态度、他们在问题求解过程中的进取性、 他们对准确性的关注,以及他们使用的求解过程。 例如,高效的问题求解者相信问题可以通过 使用启发式方法和仔细、坚持不懈的分析来解决, 而低效的问题求解者则想,"要么你会,要么你不会"。
高效的问题求解者在问题求解过程中变得非常积极: 他们画图、做草图、向自己 和别人提问。 低效的问题求解者似乎并不理解解决这个问题需要 多大的个人努力。 高效的问题求解者非常仔细地准确地理解 所有事实和关系。 低效的问题求解者在没有检查准确性的情况下就做出判断…… 通过以高效问题求解者的典型态度和行动来接触 一个情境,你将在找到真正的问题并生成出色 解法的道路上走得很好。
2.1.1. 调查与论证¶
问题求解有两部分 [Zei07]: 调查 和 论证 。 学生们在教科书和讲座中常常只看到论证。 这意味着他们没有足够多的调查部分 的例子。 不幸的是,要在学校(以及毕业后的生活中)取得成功, 人们需要两者都擅长,并理解过程的这两个 阶段之间的差异。 要解决一个问题,你必须成功地进行调查。 然后,要把答案交给你的客户(家庭作业或考试上的答案, 或向老板报告),你需要能够以清晰简洁 传达解法的方式做论证。 论证阶段涉及良好的技术写作技巧—作出清晰、 合乎逻辑论证的能力。 理解标准的证明技巧对你会有帮助。 三种最常用的证明技巧是演绎(直接证明)、 反证法和归纳法。
2.1.2. "小尺度"的问题求解启发式方法¶
本节介绍一组被广泛认可的 启发式方法 , 用于如何着手解决难题。
把它写下来 在动机和心理态度之后,对你解决问题能力的 最重要的限制是生物学上的: 虽然你有大量的存储容量,但你的"工作记忆"很 小。 对于主动操作,你只能存储 \(7\pm 2\) 条信息。 你不能改变这个生物学事实。 你能做的只是利用你的环境绕过它。 这意味着,你必须把东西放到你的环境中去操纵 它们。 最经常地,这转化为把东西写下来,并且以一种 能让你操纵问题各层面(正确表示)的方式去做。
寻找特殊特征 例子包括密码算术加法问题。 你可能会认出某一端的东西必须是 1, 在另一些情况下,某一个数字必须是 0。 考虑下面的密码算术谜题,你必须用数字 替换字母,使其成为一个合法的加法问题。 在这种情况下,我们应该认出两个特殊特征: (1) 答案的首位数字必须是 1,以及 (2) 最右端的数字之一必须是 0。 认出这些特殊特征,让我们在解决整个 问题的路上走了很远。
A D
+ D I
-----
D I D
走向极端 研究问题的边界条件。 对很多问题来说,从小情形入手会有所帮助, 小情形是边界条件的一种形式。
简化 走向极端的一个变体是简化问题。 这可能会给出一个可扩展为原问题的部分解。
倒数第二步 在最后一步求解之前,必须发生什么 前置条件? 如果你认出这一点,那么走到倒数第二步就能导致 最终解,而求解倒数第二步问题可能 更容易。 汉诺塔为"从倒数第二步出发寻找解" 提供了一个极好的例子。
横向思维 小心不要被引入死胡同。 使用不恰当的问题求解策略可能会让你 对解法视而不见。 如果你卡住了,试试不同的方法。
弄脏你的双手 有时候你只需要"摆弄"一下问题,以获得一些 初步的洞察。 例如,当试图看出一个求和的闭式解时, 写下前几项的和通常是一个好的起点。
如意算盘 这是简化问题的一种变体。 有时你可以把问题转化为容易的形式,或者 看到如何把起始位置变成你可以"希望"是解法的东西。 那可能是通往真正解法的一小步。
对称性 在问题中寻找对称性。 它们可能给出解法的线索。
2.1.3. "大尺度"的问题求解¶
有许多处理更大、更麻烦的"现实世界"问题的标准技巧 (工程师在职业生涯中经常遇到的那类问题)。 Fogler 和 LeBlanc [FL95] 详细讨论了这样的技巧。 下面是"现实世界"问题进行规训式问题求解 整体过程的一个简要大纲。
问题定义 问题的客户往往不会正确地 陈述问题。 你迈向解法的第一步常常是定义需要求解的"真实" 问题。 它可能并不明显是什么。 要触及"真正"的问题,你需要从研究它开始、 收集关于它的信息,并与熟悉该问题的人交谈。 你可以考虑以多种方式重述这个问题。 定义期望的状态。 然后对当前问题的表述做出能触发新洞察的重述。 考虑通过提出相反陈述来审视问题陈述。 或者,也许我们可以改变周围的情境,使当前 问题可以被"修好"而不是直接 解决。
生成解法 一旦你确定了问题陈述,你需要生成并 分析一系列可能的解法。 头脑风暴等技术可以生成一份 供研究的可能解法清单。
决定行动方针 有若干种从给定潜在行动清单中选择 的标准技巧 (例如情境分析、帕累托分析、K.T. 问题分析、 决策分析)。
实施解法 获得批准可能是实施的必要第一步。 一旦处理好这事,又有若干种 规划实施的标准技巧 (例如甘特图、关键路径分析)。
评估 评估应内建于问题求解过程的各个阶段。
2.1.4. 结对问题求解¶
Whimbey & Lochhead [WL99] 讨论了一种结对问题求解的技巧, 把结对双方分成一个求解者和一个倾听者。 倾听者扮演积极的角色,负责让 问题求解者保持在正轨上,并要求问题求解者 把他们(自己)的过程说出来。 倾听者积极检查问题求解者的错误。 关于此技巧的更多细节,请参阅文章 《How Pair Programming Really Works》(结对编程究竟如何起作用)。
2.1.5. 推理中的错误¶
同样来自 Whimbey & Lochhead [WL99] 的,是对人们在问题求解 中如何出错的描述。 特别是与家庭作业和考试相关的、源自未能仔细 阅读问题的典型错误。 这样做常常会使人无法使用所有相关事实,或者干脆 误解问题。 其他典型错误来自未能系统化,或者更糟, 就是完全粗心大意。 这一切都表明,学生在考试和家庭作业上丢掉的许多分数 并不是由"不懂材料"造成的,而是 由没有有效执行问题求解造成的。 这些是不必丢掉的分数。
阅读理解是成功的一个主要因素。 正确理解技术材料需要仔细阅读, 并且常常需要重读。 没有所谓带理解的速读。 速读倡导者的神话,例如"按意群读"、"略读概念"、 "不要重读",都是无效的。
2.1.6. 参考文献¶
[FL95] H. Scott Fogler 和 Steven E. LeBlanc。创造性问题解决策略。Prentice Hall,1995。
[Lev94] Marvin Levine。有效解决问题。Prentice Hall,第二版,1994 年。
[WL99] Arthur Whimbey 和 Jack Lochhead。《问题解决与理解》。Lawrence Erlbaum Associates,第六版,1999 年。
[Zei07] Paul Zeitz。《问题解决的艺术与技巧》。John Wiley & Sons,第二版,2007 年。
