学径 LearnPath

CAICP-E · 数学基础 / Wiki

问题分解

把大问题拆成几个能单独解决的小问题,再拼回去完成原来的事。

它是什么

问题分解是把一件大事切开。每一块都能单独完成;全部做完,原来的大事也就完成了。

大事会把脑子堵住。「办一次班级水果分享」一下子冒出人数、采购、刀子、盘子。混在一起,就不知道从哪下手。

切开之后,每一块都有自己的答案。统计人数是一块,买水果是一块,切块分盘是一块。你可以先做这一块,同桌做那一块。

名字从哪来

切开大事来解决,人类早就在用。盖房子先打地基,写长故事先列提纲,都是分解。

2006 年,计算机科学家周以真(Jeannette Wing)把这件事说给更多人听。她称之为计算思维,英文是 computational thinking。其中一块,就是:遇到大问题,先拆成小问题。

CS Unplugged《不插电的计算机科学》用身体游戏练这套本领。不用电脑,也能练习「大事怎么切」。

分解不是把问题变没。它是换一种拿得动的拿法。

它怎么工作

用三句话检查切得对不对:

  • 每个小问题有自己的答案
  • 小问题之间尽量少互相卡住
  • 全部做完,原来的大事也完成了

如果两块必须死死等对方,拆得还不够干净。如果漏了一块,拼回去会缺角。

拆到「能动手做」就停。「拿一只碗」不必再拆成十步——拆太碎,步骤会比问题还难读。反过来,只写「认真一点」,等于没拆。

办水果分享,可以这样切:

  1. 统计:有多少人要来
  2. 采购:每种水果买多少
  3. 分配:每人能分到几块

算全班平均身高,也可以切:

  1. 收集每人身高
  2. 确认人数
  3. 求和
  4. 除以人数

每一块都能检查。人数错了,平均数一定错。所以「确认人数」值得单独成为一块。

切完以后,再用 顺序流程 排出先后。分解管切块,流程管次序。

生活里在哪里

  • 春游:路线、午餐、安全员、集合时间
  • 做手抄报:题目、资料、画、抄写
  • 收拾房间:衣服、书、垃圾、地板
  • 写一篇作文:开头、中间三件事、结尾
  • 认一只猫:先看颜色,再看体型,再看项圈,见 特征

科学家也这样工作。把「认识天气」拆成温度、风力、云量,再分别测量;把「做一个判断」拆成填表和规则,见 场景建模

和相近概念的差别

名称它在做
问题分解把大事切成能下手的小块
顺序流程给这些小块排先后
特征抽出能观察、能填写的信息
规律在切开的材料里找重复

分解不是越碎越好,也不是把目标改掉。「办水果分享」拆完,目标仍是办成分享,不是变成「写一篇关于水果的作文」。

如果小问题拼不回原来的目标,切法就要改。

常见误会

误会 1:切出来的小问题仍然一样大。

「把整场运动会办好」切成「把上午办好」「把下午办好」,还是太大。

误会 2:小问题互相抢同一件没准备好的数据。

还没数人数,就去买「每人两个」的苹果,两块缠在一起了。

误会 3:拆完拼不回原来的目标。

补救办法:写一句「做完这些,原来那件事就完成了吗?」如果答不上来,就还要调整切法。

误会 4:分解只属于电脑课。

收拾书包、安排作业、规划旅行,都在分解。计算思维先是一种想事的方法。

想知道更多

  • 活动:CS Unplugged《不插电的计算机科学》。用卡片、绳子、教室地板把大任务拆开玩,不必插电。
  • 纪录片:法国片《维度:数学漫步》(Dimensions)。复杂形状也是先拆成更能看清的部分。
  • 生活作业:选一件这周要完成的大事,只写三块小任务。明天先做最小的那一块。

未登录时不会保存学习进度