05-建模的完整机制
建模的完整机制——从解构到可用的模型
正向建模回答「模型从哪里来」(观察→比较→抽象→命名)。但一次完整的建模,细节远比四步多:解构要找到的是稳定关系,抽象不是删除细节而是保留重要关系,模型是有目的的结构,分类也是建模,概念与模型不同,模型可以组合、有层级,具体化是建模的反方向,而验证让模型逐渐接近现实。 本篇是正向建模(
03-建模与逆向/01)的完整展开。
一、具体事物不是模型
三个不同的游戏:平台跳跃、射击、解谜。
直接记忆每个游戏的所有细节,得到的是「三个游戏的清单」。但它们有共同结构:
1 | 玩家 |
模型不是某一个具体事物,而是多个具体事物共有的结构。 单独一个例子无法建模——建模需要多个实例,才能分辨「哪些是巧合、哪些是结构」。
二、解构不是简单地「拆东西」
把汽车拆成零件:发动机、车轮、方向盘……这只是罗列。
解构真正的重点是:找到部分之间稳定的关系。
1 | 方向盘 → 控制 → 车轮转向 |
同样的零件,如果关系不同,就是不同的系统。解构 = 拆出对象 + 找出对象之间的稳定关系。 只拆出对象没有关系,得到的不是结构,是清单。
三、解构的重点是找到稳定关系
为什么强调「稳定」?
因为同一个事物,不同时刻看,细节在变,但有些关系不变:
1 | 输入 → 控制系统 → 运动状态 → 位置变化 |
无论具体车型是什么,这条链都成立。建模要找的正是这种跨实例、跨时间仍然成立的关系——它们才是可复用的部分。
四、从多个实例中寻找共同结构
1 | 实例 1:平台跳跃游戏 |
比较的作用是过滤偶然:
- 平台跳跃有「跳跃」——射击没有 → 跳跃不是共同结构
- 都有「玩家操作改变世界状态」——三个都有 → 这才是结构
从多个实例中找共同结构 = 比较 → 过滤偶然 → 保留共同。 这就是正向建模第二步「比较」的完整含义。
五、抽象不是删除细节,而是保留重要关系
抽象经常被误解成「把话说得更模糊」。不是。
研究「如何控制汽车运动」:
1 | 需要保留:输入 → 控制系统 → 运动状态 → 位置变化 |
抽象做了两件事:
1 | 具体信息 |
抽象不是让模型包含更少的信息,而是让模型只保留对当前问题重要的信息。 同一辆车,研究发动机和研究交通流,保留的信息完全不同——所以抽象永远相对于「目的」而言。
六、同一个事物可以产生多个模型
汽车:
1 | 研究发动机:汽车 → 发动机 → 燃烧 → 能量转换 → 机械运动 |
三个模型都对,视角不同。没有「唯一正确的模型」,只有「适合当前目标/问题/观察角度的模型」。 强行追求一个全能的模型,得到的往往是哪个问题都解释不好的大杂烩。
七、模型实际上是一个「有目的的结构」
1 | 现实 |
设计刹车系统 → 发动机颜色无意义;设计外观 → 车身结构重要。
模型一定与问题、目标和观察角度有关。 模型不是现实的复制,而是现实被目标过滤后的结构。
八、分类也是一种建模
苹果、香蕉、橙子 → 共同:可食用、植物产生、有果实结构 → 「水果」
汽车、自行车、飞机 → 共同:承载人员、能够移动、需要动力 → 「交通工具」
1 | 多个具体实例 |
概念不是凭空产生的,而是对大量具体事物中稳定结构的压缩。 分类、目录、类型系统、继承体系,本质都是建模——用关系建立层级模型。
九、概念与模型的区别
「汽车」是一个概念——确定「它是什么」。
要描述汽车如何运行,需要更多关系:
1 | 驾驶者 → 输入 → 控制系统 → 动力系统 → 运动 → 车辆状态 |
这已经不只是概念,而是模型。
1 | 概念:确定「它是什么」 |
模型通常包含:对象 + 属性 + 关系 + 规则 + 机制 + 状态。具体包含什么,取决于建模目标。
十、模型还可以继续组合
运动模型 + 碰撞模型 + 生命值模型:
1 | 运动模型:输入 → 速度 → 位置 |
模型可以组合成更大的模型。 组合的方式与拆解相反:先各自建模,再按关系连接。这正是「系统 = 多个结构通过机制连接」在建模层面的对应。
十一、建模存在层级
1 | 底层模型:位置、速度(最具体) |
层级不是随意分的:低层模型被高层模型组合,高层模型依赖低层模型。 拆解是沿层级向下,建模是沿层级向上(或按目标直接选取某一层)。
十二、具体化是建模的反方向
1 | 模型(抽象结构) |
游戏模型 → 具体的平台跳跃游戏;循环模型 → 具体的 while 循环。
建模:具体 → 抽象;具体化:抽象 → 具体。 正向建模的产物是模型,具体化的产物是新的实现(这正是 03-建模与逆向/02-逆向应用 的内容——模型 → 解构 → 具体)。
十三、解构与建模形成循环
1 | ┌────── 建模 ──────┐ |
应用模型产生新的系统 → 观察新系统 → 发现新的结构 → 修正模型。
这不是一次性的过程。 模型会随着新实例不断被修正——这与 03-建模与逆向/03-双向循环 完全一致,本篇是循环中「建模」那一步的细节展开。
十四、模型并不一定正确
1 | 原模型:A → B |
模型不是终点,而是假设与现实之间的中间结构。 模型可能不完整、可能缺条件、可能只在特定范围成立——知道这一点,才能正确地使用和修正它。
十五、验证让模型逐渐接近现实
1 | 模型 → 预测 → 现实/实验 → 观察结果 → 比较 → 发现差异 → 修改模型 |
例:认为「攻击 → 生命值 -10」,运行后发现「攻击 → 护甲计算 → 生命值 -6」——模型需要增加攻击力、护甲、伤害计算规则。
验证不是可选的收尾,而是建模的一部分。 模型的价值在于预测;预测与现实的差异,就是模型需要修改的地方。
十六、好的模型不是越复杂越好
1 | ❌ 把所有细节塞进模型 → 无法复用、无法解释 |
两个判断标准:
1 | 1. 对当前问题,模型是否只保留了重要关系?(简洁) |
好的模型 = 足够覆盖 + 尽量简洁。 简洁让模型可理解、可复用;覆盖让模型不失效。两者冲突时,先保覆盖,再压缩简洁。
十七、从具体到抽象,再从抽象回到具体
完整的能力是双向的:
1 | 具体 → 抽象(建模):看到很多例子,提炼共同结构 |
只会建模不会应用 = 有模型但用不出来;只会应用不会建模 = 只会套现成方案。
建模与应用的完整循环,才是把知识变成能力的方式。 本篇展开「具体 → 抽象」这一半的机制;
03-建模与逆向/02-逆向应用展开「抽象 → 具体」那一半。
与其他线的关系
1 | 本线 ←→ 正向建模(03-建模与逆向/01) |
收束
1 | 建模不是简单四步,而是完整机制: |
建模的机制 = 从具体事物中,为目标保留重要结构,并通过验证不断逼近现实。 这是所有「理解世界」的底层动作——分类、概念、类型系统、架构设计,都是它的应用。
