七桥问题
18世纪的哥尼斯堡城(今俄罗斯加里宁格勒),一条普雷格尔河穿城而过,河中有一座小岛,河上一共架着七座桥, 把城市分成的四块陆地连在一起:北岸、南岸、岛,以及岛东侧的陆地。
当地人中间流传一个游戏:能不能找到一条路线,从随便哪块陆地出发,把七座桥每座恰好走一次, 不用回到起点?在往下看之前,可以自己先在脑子里试几条路线——大部分人试几次就会发现,好像怎么走都会有一座桥被落下,或者被重复走过。
点击「抽象成图」,看看地图怎么变成一个数学对象。
把每块陆地看成一个点(顶点),每座桥看成一条连接两个点的线(边)。 地理上的"能不能走完七座桥",就变成了图上的"能不能一笔画出经过每条边恰好一次的路径"。 这一步决定了用什么数学对象表示现实——不关心桥有多长、路有多宽,只关心哪两块地之间有几座桥。
点击「显示每个点的度数」:数一数每个顶点连出去几条边。A=3,B=3,C=5,D=3,四个顶点全是奇数。 欧拉证明的规律是:一笔画路径存在,当且仅当奇数度顶点的个数是 0 个或 2 个。这里是 4 个,所以这样的路线根本不存在。 这一步是在已经建好的模型上,用数学工具推出结论。
建模和求解,是两件事
建模回答"用什么表示这个问题";求解回答"表示出来之后怎么算出答案"。建模错了,后面算得再对也没用; 建模是对的,求解方法选得不同,也可能得到差别很大的结果——甚至像七桥问题这样,求解的结论是"无解",这本身也是一个完整的答案。
再看三个例子
同样的建模/求解拆分,不只适用于图论。换几个场景再看一遍,会发现"求解"这一步经常是可以脱离具体场景、 只针对模型本身来做的通用数学操作。
电梯调度
这个例子比七桥问题更进一步:七桥的建模步骤基本是唯一的(陆地变点,桥变边), 但电梯问题的建模需要自己做选择——选什么状态变量、优化什么目标,都会直接影响最后的结果。这也更接近比赛里真实的建模过程。
先明确假设
- 一栋 5 层楼,只有 1 部电梯
- 乘客的呼叫时间、出发楼层、目的楼层是随机给定的,电梯只能在乘客呼叫之后才知道这个请求
- 每层运行时间、开关门时间、每位乘客上下电梯时间都是固定值,不考虑加减速
- 电梯有容量上限,超过上限的乘客只能等电梯下一趟再来
模型参数
目标定义 — 点一个,看下面表格里对应的列
求解 — 三种策略跑同一批请求
点几次「重新生成乘客请求」,多看几组结果:很少有一种策略在所有指标上都最好。这正是"选目标"这一步的意义 —— 目标不同,"更好的调度"指的是不同的东西。
定价与利润最大化
设价格为 $p$,需求量是价格的函数 $D(p)$,成本为 $c$,利润:
$$\pi(p) = (p - c)\,D(p)$$
对 $\pi(p)$ 求导,令 $\dfrac{d\pi}{dp}=0$,解出最优价格 $p^*$。这一步是纯数学操作, 跟"定价"这个场景已经没关系了——任何这种形状的函数求极值,步骤都一样。
背包 / 装箱问题
$n$ 件物品,第 $i$ 件重量 $w_i$、价值 $v_i$,容量上限 $W$。目标:选一个子集,使得
$$\sum_{i=1}^{n} w_i x_i \leq W,\quad \max \sum_{i=1}^{n} v_i x_i$$
贪心算法(按性价比排序)速度快但不保证最优;动态规划能保证最优,但计算量更大。 同一个模型,两种求解方法各有代价,在论文里要能说清楚选哪种、为什么。
| 阶段 | 产物 | 回答的问题 |
|---|---|---|
| 建模 | 图、函数、约束条件——一个数学对象 | 用什么表示这个问题? |
| 求解 | 具体数值、算法、证明 | 表示出来之后,答案是什么? |
LaTeX 怎么打公式
刚才的利润函数、背包约束,光靠 Word 自带的公式编辑器写起来很别扭,尤其是论文里反复出现的求和、极限、分段函数。 LaTeX 是建模论文的标准写法——记号是文本,渲染出来才是公式,方便修改、方便和队友对着改。
行内公式用一对 $ 包起来,比如 \$x^2\$ 会渲染成 $x^2$;独立成行的公式用 $$
包起来,会单独居中显示,比如上面利润函数那一行。
| 写法 | 渲染 | 说明 |
|---|---|---|
| x^2 | $x^2$ | 上标 |
| x_i | $x_i$ | 下标 |
| \frac{a}{b} | $\frac{a}{b}$ | 分数 |
| \sqrt{x} | $\sqrt{x}$ | 根号 |
| \sum_{i=1}^{n} | $\sum_{i=1}^{n}$ | 求和 |
| \int_0^1 | $\int_0^1$ | 积分 |
| \lim_{x \to \infty} | $\lim_{x \to \infty}$ | 极限 |
| \leq \; \geq \; \neq | $\leq \; \geq \; \neq$ | 不等号 |
| \alpha \; \beta \; \pi \; \Delta | $\alpha \; \beta \; \pi \; \Delta$ | 希腊字母 |
| \begin{cases}...\end{cases} | $$f(x)=\begin{cases}1 & x\geq 0\\-1 & x<0\end{cases}$$ | 分段函数 |
更完整的例子(矩阵、多行对齐等)见 LaTeX 公式演示页。
试一试
在线 LaTeX 公式挑战
看图打公式:屏幕上给出一个渲染好的目标公式,照着写出对应的 LaTeX 代码,实时预览,看谁先打对、打得快。
12 道题,从上标分数到分段函数,难度递增。
开始挑战 →