读书笔记 · 约 18,031 字 · 预计推送 2 部分

《怎样解题》(How to Solve It, Pólya)精读 —— 四步启发法的可复用拆解流程:刷题与工程场景 未开始

目录

题记与说明

条目:knowledge-mfrwuvk4-2(主题研究)|精读日期:2026-11-05|精读员:#2
对象:George Pólya, *How to Solve It: A New Aspect of Mathematical Method*, Princeton University Press, 1945(第2版 Doubleday 1957,Penguin/PUP 多次再版,204页)

TL;DR

Pólya 把"解题"这件看似依赖灵感的事,拆成四个阶段 + 一张两页的问题清单 + 一部 67 词条的启发法词典。核心操作不是规则而是提问:老师(或你自己)只问"未知是什么?你见过类似的题吗?能不能先解一个相关的简单题?"这类通用问题,把解题者自己的头脑推着走。它不是解题算法——Pólya 明说"万无一失的发现规则是哲学家的点金石之梦"——而是一套元认知脚手架:让卡住的人保持推进("keep the ball rolling"),并在解题后通过"回顾"把方法沉淀为可迁移的资产。对刷题:四阶段直接映射为"读题建模 → 模式检索/化归 → 实现+逐步自检 → 复盘归类";对工程:同一清单可用于调试、需求澄清与技术方案设计,微软 Charles Simonyi 说这本书"就像一张解题检查清单(checklist for problem solving)"。


一、核心问题(Problem)

1945 年以前,"解题能力"在教学里处于一个尴尬位置:数学教育把大量时间花在讲授知识本身(定理、公式),却几乎不教"拿到一道不会做的题该怎么办"。解出难题被普遍归因于天赋和"灵光一闪",因此不可教。Pólya 要回答的问题是:

解题这种表面上依赖天才与灵感的活动,能否被提炼为一套可传授、可操作的心理操作,写成一张普通学生也能用的问题清单?

书中自述其研究对象是"启发法"(heuristic,"ars inveniendi"):

"The aim of heuristic is to study the methods and rules of discovery and invention."(启发法的目标,是研究发现与发明的方法和规则。)

而他对"万无一失的规则"的边界有清醒设定(见"Rules of discovery"词条):

"Infallible rules of discovery leading to the solution of all possible mathematical problems would be more desirable than the philosophers' stone… Such rules would work magic; but there is no such thing as magic."(能解决一切数学问题的万无一失的发现规则,比点金石还珍贵……这类规则能行魔法;但世上没有魔法。)

所以本书的实际定位是:不求保证成功的规则,只求"典型有用"的提问与操作。


二、主要主张(Claim)

  1. 解题过程有相对稳定的四阶段结构:
    1. 理解问题(Understand the problem):未知是什么?数据是什么?条件是什么?
    2. 拟定方案(Devise a plan):找到数据与未知之间的联系;必要时先解一个辅助问题。
    3. 执行方案(Carry out the plan):逐步执行,逐步检查每一步。
    4. 回顾(Look back):检验结果与论证;能否换个方法推导?能否把结果或方法用到别处?
  1. 每个阶段都可以被一组通用问题激活。问题清单的作用不是直接给出答案,而是"让球继续滚起来"(Puzzles 词条:"What the questions and suggestions of the list can do is to 'keep the ball rolling.'")。
  1. 最重要的是"化归到已知问题"。Pólya 认为:"Do you know a related problem?" 是整套方法中最关键的一问;解题总是从已解决的问题中获益——用它的结果、用它的方法、或用解题经验。
  1. 教法上,问"启发性问题"而不是"诱导性问题"。问"Do you know a related problem?"(你知不知道一个相关的题?)是有教益的;问"Could you apply the theorem of Pythagoras?"(你能不能用勾股定理?)看起来是好意,实际上没有教益——学生不知道老师是怎么想到它的(Pólya 1957, p.22)。
  1. 解题是意志的训练:
"Teaching to solve problems is education of the will."(教解题是教育人的意志。)

学生在"不太容易"的题上学会忍受失败、珍视微小进展、等待关键想法、在它出现时全力集中。


三、方法(Method)

3.1 书本身的结构与写法

"Programmers get a couple of books on their first day here. One of them, called How to Solve It, is by George Pólya, the mathematician… These two pages are important. The rest of the book just elaborates on these two pages. This is like a checklist for problem solving."(*Programmers at Work*, Microsoft Press, 1986, p.18)

3.2 四阶段的完整问题清单(Queen's 大学讲义转录自第 2 版原文,"in the master's own words")

1. UNDERSTAND THE PROBLEM(理解问题)

2. DEVISING A PLAN(拟定方案)

3. CARRYING OUT THE PLAN(执行方案)

4. LOOKING BACK(回顾)

3.3 词典中与工程最相关的词条要点(Nightingale 长文摘录)

"And if you are inclined to be a pedant and must rely upon some rule learn this one: Always use your own brains first."

四、数据与证据(Evidence)

证据内容来源
出版影响1945 年 Princeton UP 出版,1957 年第 2 版;被译成 15+ 种语言,销量超 100 万册,"making it one of the most widely circulated mathematics books in history"Wikipedia 引 LA Times 讣告等
跨学科引用密度Schoenfeld (1987) 指出仅 1982–1987 五年间,本书被 *American Political Science Review*、*Annual Review of Psychology*、*Artificial Intelligence*、*Computers and Chemistry*、*Computers and Education* 等跨领域期刊引用Wikipedia 引 Schoenfeld, *Mathematics Magazine* 60(5):283–291
AI 界背书Minsky 1960 年《Steps Toward Artificial Intelligence》:"everyone should know the work of George Pólya on how to solve problems." Newell 1980 年伯尔尼启发法研讨会上专题报告其与 AI 的关系Wikipedia 引 Minsky 1960 / Newell 1981
工程界实际采用Microsoft 给新程序员发的书里就有它(Simonyi 访谈);Dromey 1982 年写 *How to Solve it by Computer* 明确致献:"there was a definite need for a book written in the spirit of Pólya's work, but translated into the computing science context."Wikipedia 引 *Programmers at Work* p.18 / Dromey 前言
平行发展佐证苏联 Altshuller 的 TRIZ(发明问题解决理论)在 1960–70 年代与 Pólya 方法平行发展、更偏工程Wikipedia 引 Savransky 2000
教育效果实证EJMSTE 2015 年发表过对初中几何"Polya 提问式教学"效果的实证研究(检索到该文,未精读全文)检索结果列表
当代刷题实践Medium 长文(Kakatkar 2024)把四阶段逐条映射到 HackerRank/LeetCode 类题目并给出完整 C++ 解例(Number Line Jumps 用公式代替循环、Forming a Magic Square 用查找表、Electronics Shop 用排序+二分),并论证 AI 时代框架(framing/planning/reviewing)价值上升精读全文
批评性证据(局限面)Schoenfeld 的课堂观察:学生面对几十条启发法策略时"常常困惑于该为眼前这道题选哪一条";策略本身不足以解决非常规问题,还需要领域知识、"数学成熟度"、元认知控制与信念系统Wikipedia 引 Schoenfeld 1980/1987
编程教育视角Heriot-Watt 论文(Michaelson & Paterson 2015):Dromey 推行 top-down design 与 stepwise refinement,"linking decomposition to algorithm",并用逻辑断言刻画程序阶段性质(典型即循环不变式);但"Despite acknowledging Polya's and Winklegren's influences, Dromey has little to say about problem formulation."精读 PDF 全文

本次研究的取材方法:先检索聚合来源,再逐个精读全文——(1) Wikipedia 条目全文;(2) UCSD 教师页 foursteps.htm;(3) Queen's 大学 4 页讲义 PDF(含第 2 版原文问题清单,用 pypdf 提取);(4) Medium "Algorithmic Thinking for Data Scientists" 全文;(5) Nightingale 长文(含词典词条大段摘录)全文;(6) Heriot-Watt 论文 15 页 PDF(pypdf 提取)。另下载了 Dromey *How to Solve it by Computer* 扫描版 PDF(463 页,无文本层,未能提取正文,改以二手文献精读代替)。


五、结论(Conclusion)

  1. 《怎样解题》的交付物不是一套定理,而是一张问题清单。两页清单 + 67 词条词典的价值在于:把模糊的"再想想"变成具体的、可执行的自我提问序列;它的正确用法是 Simonyi 式的——当作 checklist 随身带,卡住时逐项过。
  2. 四阶段中"理解问题"与"回顾"是最被低估、收益最大的两段。Pólya 自己的"诊断"词条显示,多数失败发生在第一段(没读懂就动手)和第四段(拿到答案就扔笔)——而刷题和工程复盘恰恰最缺的也是这两段。
  3. "化归"(related problem)是整个方法的主轴:见过吗?变过形吗?更一般/更特殊/类似的题会解吗?能否用其结果或方法?这条主轴在算法题里就是"模式识别 + 题型归类",在工程里就是"先找最小复现/先解一个更小的切片"。
  4. 它明确不保证成功:启发式推理是脚手架,必须与严格证明/严格验证分开;"Always use your own brains first" 是压轴规则。方法降低卡死的概率、提高推进速度,但不替代领域知识和练习。
  5. 后续实践共同体的评价:数学教育(Schoenfeld:是"marker event",但需要元认知与控制训练补充)、计算机科学(Dromey 直译 + Simonyi checklist 用法)、AI(Minsky/Newell 启发法源头)、工程发明(TRIZ 平行物)、数据可视化与设计(Nightingale:与 design thinking 的 Double Diamond 可叠加)——五条线都在用,各有修补。

六、局限(Limits)

作者/方法本身承认或被批评的:

  1. 策略≠能力(Schoenfeld 批评,最重的一条):Schoenfeld 不认为这些启发法策略足以让本科生解非常规问题——还需要领域专门知识和"数学成熟度";而且他观察到学生面对几十条策略时不知道当下该选哪一条。这催生了他后来关于"元认知控制(control)与信念系统"的研究路线(1985《Mathematical Problem Solving》)。换句话说:清单解决"想不起来往哪走",不解决"走不动"。
  2. 没有回答 problem formulation(Heriot-Watt 对 Dromey 的批评,外溢到整个谱系):"Dromey has little to say about problem formulation"——从 Polya 到 Dromey 的这条线假定问题已陈述清楚,重点在 pruning the search space;而真实工程里"把烂问题重新表述成好问题"常常是最难的一步(Pólya 只在 Variation of the problem / Could you restate the problem 词条里浅浅带过)。
  3. 例题年代与领域局限:全部例题是 1945 年的初等代数/几何;搬到分布式系统、ML 管线这类"实际问题"时,Pólya 自己在 Practical problems 词条承认差异:数据不可穷尽、必须舍弃一部分、概念本身模糊需要先澄清。
  4. 非算法化:问题清单不构成决策树,何时切换策略、何时弃案重来全靠判断("Pedantry vs Mastery"),可教学性因此打折——这正是 Schoenfeld 批评的根源。
  5. 可证伪性弱:全书是经验性、示范性论证(对话+例题),没有对照实验;效果证据多是间接引用链(如 Schoenfeld 的引用统计、EJMSTE 单项教学实验)。

本次精读的取材局限(如实标注):


七、对我的启发(Relevance)——提炼两张可复用的 checklist

7.1 刷题版四阶段 checklist(LeetCode/HackerRank 映射)

① 理解问题(读题 3–5 分钟,值得)

② 拟定方案(动手前先过问题清单)

③ 执行方案

④ 回顾(提交通过 ≠ 结束)

7.2 工程版四阶段 checklist(调试/设计映射)

① 理解问题(对应需求澄清与 bug 复现)

② 拟定方案

③ 执行方案

④ 回顾(复盘 = 工程里最常被砍掉的一段)

7.3 三个直接可用的元原则

  1. 问问题比背答案便宜:行动前先问"以前见过吗/更简单的相关题是什么",一次提问的成本远低于一次返工。
  2. 乐观的悲观主义:启发式推理给方向,严格验证给结论,两者分开记账(scaffolding metaphor)。
  3. Always use your own brains first:清单是激发器不是替代品——对 AI 时代尤其成立(Medium 文的观点:framing/planning/reviewing AI 生成代码所需的正是这层算法思维,提示词写清楚问题本身往往比直接写代码更费时——问题框定没法外包)。

7.4 与已有笔记的关联(只引用,不改动)


附:重要原文引述汇编

  1. "Trying to find the solution, we may repeatedly change our point of view, our way of looking at the problem. We have to shift our position again and again. Our conception of the problem is likely to be rather incomplete when we start the work; our outlook is different when we have made some progress; it is again different when we have almost obtained the solution."(Pólya 1957, p.5)
  2. "[T]he main achievement in the solution of a problem is to conceive the idea of a plan. This idea may emerge gradually. Or, after apparently unsuccessful trials and a period of hesitation, it may occur suddenly, in a flash, as a 'bright idea'."(pp.8–9)
  3. "The plan gives a general outline; we have to convince ourselves that the details fit into the outline, and so we have to examine the details one after the other, patiently, till everything is perfectly clear, and no obscure corner remains in which an error could be hidden."(pp.12–13)
  4. "Do you know a related problem?" 是启发性问题;"Could you apply the theorem of Pythagoras?" 是诱导性问题,"the student does not know how the teacher arrived at it"。(p.22)
  5. "try to solve first some related problem; then you may find courage to attack your original problem again. Do not forget that human superiority consists in going around an obstacle that cannot be overcome directly."(p.114)
  6. "everyone should know the work of George Pólya on how to solve problems."(Minsky, *Steps Toward Artificial Intelligence*, 1960)
  7. "Programmers get a couple of books on their first day here. One of them, called How to Solve It… These two pages are important. The rest of the book just elaborates on these two pages. This is like a checklist for problem solving."(Charles Simonyi, *Programmers at Work*, 1986)
  8. "there was a definite need for a book written in the spirit of Pólya's work, but translated into the computing science context."(Dromey, *How to Solve it by Computer* 前言, 1982)
  9. "I believe the most important part of thinking that is developed in mathematics is the right attitude in tackling and solving problems… we have only one head, and therefore it is natural that there should be one general set of tactics to tackling all kinds of problems."(Pólya,1960 年代末访谈,转引 Nightingale)
  10. "The first rule of discovery is to have brains and good luck. The second rule of discovery is to sit tight and wait till you get a bright idea."(词典 Rules of discovery 词条)
  11. "And if you are inclined to be a pedant and must rely upon some rule learn this one: Always use your own brains first."(词典 Pedantry and mastery 词条)
  12. "Teaching to solve problems is education of the will."(词典)
  13. "Gyorgy Polya's How to Solve It stands as one of the most important contributions to the problem-solving literature in the twentieth century… Essentially, the book is an encyclopedia of problem-solving methods to be carried out by hand, but more than that, it is a treatise on how to think about framing and attacking problems."(Michalewicz & Fogel, *How to Solve It: Modern Heuristics* 序言,转引 Nightingale)

附:来源清单(本次会话实际精读)

  1. Wikipedia — *How to Solve It*(全文抓取):https://en.wikipedia.org/wiki/How_to_Solve_It
  2. University of San Diego — "George Pólya's Four Steps to Problem Solving"(P. Myers 教学页,全文抓取):https://home.sandiego.edu/~pmyers/foursteps.htm
  3. Queen's University Student Academic Success Services — "Polya's Problem Solving Techniques" 4 页讲义(PDF,pypdf 全文提取;含第 2 版原文问题清单):https://sass.queensu.ca/sites/sasswww/files/uploaded_files/Resource%20PDFs/polya.pdf
  4. Chinmay Kakatkar — "Algorithmic Thinking for Data Scientists"(Medium/Data Science,2024-05-28,全文抓取):https://medium.com/data-science/algorithmic-thinking-for-data-scientists-4601ac68496f
  5. Jason Forrest — "How to Solve It – and by It – I Mean *Anything*"(Nightingale/DVS,2023-01-03,全文抓取;含词典词条摘录与 Polya 访谈引文):https://nightingaledvs.com/how-to-solve-it-and-by-it-i-mean-anything/
  6. Greg Michaelson & James Paterson — "Teaching Programming with Computational and Informational Thinking"(*Journal of Pedagogic Development* Vol.5 No.1,Heriot-Watt,15 页 PDF 全文提取;Dromey 谱系讨论):https://www.macs.hw.ac.uk/~greg/publications/gjm.jpd15.pdf

未能获取(如实标注):Schoenfeld 1987 原文(ResearchGate 403 / JSTOR 订阅墙);原书全文 PDF(notendur.hi.is 链接 404);Dromey 全书扫描版正文(无文本层)。

← 资料库今日播报 →