【系统架构师-综合题(14)】数学与经济管理知识点
数学与经济管理这一章,表面上最不像“系统架构师”的章节,因为它看起来更像一组杂乱的应用题:有组合计数、有工程进度、有集合统计、有线性规划、有图论最短路、最大流、最小生成树、动态规划、指派问题,还有概率决策和匿名调查。可如果把这些题放在一起看,就会发现这章真正考的不是“你会不会做一道小学奥数题”,而是你能不能把现实问题翻译成数量关系,再用合适的方法求出最优结果或合理估计。
所以这一章最怕的,不是公式不会,而是方法混乱。明明题目说的是“选方案”,你却在做普通加减;明明是“网络总能力”,你却按最短路去算;明明是“装配资金分配”,你却用贪心代替动态规划。真正稳的学法,是先把题目分成几类:能直接建立数量关系的基础题、带约束求最优的规划题、基于网络结构的图论题、带不确定性的概率决策题。一旦分类清楚,解题就会稳定很多。
一、先把基础数量关系抓住:这一部分解决“题目里的数到底该怎样组织起来”
这一类题看起来简单,但其实是整章的底子。因为后面的建模、优化、决策,都是从“把条件转成可计算关系”开始的。
1. 组合计数题,先看“每一步有几种选择”,再决定是加法还是乘法
比如题目说,一个对象有 10 个属性,每个属性都有 2 种可能取值,问所有组合共有多少种。这个题的本质不是“10 和 2 怎么算”,而是:每一个属性都是一次独立选择,每一步都有 2 种可能,一共做 10 步。
这类题应当直接想到乘法原理,所以总组合数是:
2^10 = 1024
遇到这类题,先做的第一件事不是算,而是判断:这是“多个步骤依次选择”,还是“若干种情况择一发生”。前者通常用乘法,后者通常用加法。最常见的错误,就是把“10 个属性,每个 2 种”误看成10 × 2 = 20,这其实把“顺序组合”误做成了“简单累计”。
2. 工程进度题,要抓住“总工作量不变”
计划 15 天完成、提前 3 天完成、问每天工作量提高多少,这类题最稳的思路永远是:先把总工作量设为同一个量。
设原来每天完成x,总工作量就是15x;提前 3 天意味着 12 天完成,若新效率为y,总工作量就是12y。由于总工作量不变:
15x = 12y
于是:
y = 1.25x
说明每天工作量提高了25%。
这类题容易错在两处:一是把“提前 3 天完成”误理解成“提高 3/15 = 20%”;二是只盯着天数变化,忘了真正不变的是总工作量。以后遇到工程进度类题,先写一句“总量不变”,解题就不会跑偏。
3. 多重计数和集合统计题,先把人按“参与了几项”分层
比如 75 个儿童去游乐园,20 人三项都玩过,55 人至少玩过两项,总消费 700 元,每项 5 元,问多少人一项都没玩。这类题一眼看上去信息很多,但核心其实只有两个统计关系:总人数关系和总参与次数关系。
先算总参与次数:
700 / 5 = 140
再分层:
- 三项都玩过:20 人
- 至少两项:55 人,其中“恰好两项”是
55 - 20 = 35人 - 设“恰好一项”为
A - 设“一项都没玩”为
B
则总人数关系为:
A + 35 + 20 + B = 75
总参与次数关系为:
1×A + 2×35 + 3×20 + 0×B = 140
解得:
A = 10
再代回总人数关系,得到:
B = 10
这类题最值得记住的方法不是答案,而是分层思路:把人按“0 项、1 项、2 项、3 项”分层,再分别写人数关系和次数关系。只要分层分对,大多数题都能顺出来。
二、再把建模与规划看明白:这一部分解决“在约束条件下怎样找到最优方案”
这一部分是本章的核心。因为它把普通数量关系进一步推进成“有目标、有约束、要最优”的问题。真正考试时,很多题并不会明说自己是哪一种算法,但你只要抓住“求最优”这个信号,思路就会清楚。
1. 数学建模不是为了把问题写复杂,而是为了让问题变得可计算
很多人一看到“数学建模”四个字就紧张,其实它的本质非常朴素:把现实问题中的目标、变量、约束和关系,翻译成数学表达。
比如参数会变化,模型求出的最优解是否还可靠,这时候就要做灵敏度分析。它关注的不是模型算没算出来,而是:当参数变化时,结果会不会发生明显变化,最优方案还能不能站得住。
所以题目说“根据数学模型求出最优解或满意解后,还需要对计算结果进行检验,分析计算结果对参数变化的反应程度”,这考的就是灵敏度分析,而不是准确性分析、一致性分析。因为关键词非常明确:参数变化、结果反应程度。
以后看到“参数变了怎么办”“结果对参数敏不敏感”,第一反应就应该是灵敏度分析。
2. 线性规划题,先列约束,再看最优点通常落在哪里
比如题目给出:
x <= 4y <= 3x + 2y <= 8x, y为非负整数
要求目标函数2x + 3y的最大值。
这类题不要上来就代选项,而要先知道它在考什么:这是在线性约束下求目标函数最优值。而线性规划的一个非常重要的直觉是:最优解通常出现在可行域边界或顶点附近。
如果再加上“非负整数”条件,就需要检查那些满足约束的整数点。这里可行点中比较关键的两个是:
(4, 2),目标值为2×4 + 3×2 = 14(2, 3),目标值为2×2 + 3×3 = 13
所以最大值是14。
遇到这类题,建议固定按三步走:
- 先把约束写完整
- 先判断可行区域,再找边界点或关键整数点
- 最后代入目标函数比较大小
最容易错的地方,是只看某个变量大不大,而忽略另一个约束把它卡死了。
3. 蒙特卡罗方法的本质,不是“瞎随机”,而是“用随机样本近似几何量”
题目说,在(0,1)区间上随机产生大量点(r1, r2),其中满足r2 <= f(r1)的有N个,总共产生M个点,那么N/M近似表示什么。这个题如果只看公式可能有点抽象,但一旦换成图像就很好理解了。
在单位正方形里,曲线y = f(x)下方那块面积,恰好就是:
∫0^1 f(x) dx
如果你在整个单位正方形里随机撒点,那么落在曲线下方区域的比例N/M,就近似等于这块区域面积,也就是这个定积分的值。
所以这类题真正考的是蒙特卡罗思想:用频率近似概率,用概率近似面积,用面积近似积分。
以后只要看到“随机撒点 + 满足某个不等式的比例”,基本就要往概率估计面积、积分这个方向想。
4. 动态规划题,关键不是“枚举所有方案”,而是“把大问题拆成阶段最优”
资金分配题就是动态规划的典型场景。比如 5 百万元资金分配给A、B、C三个子公司,每个子公司投入不同金额对应不同收益,问总收益最大是多少。
这种题如果硬靠直觉,很容易只盯着单个公司的“单位收益高不高”;但动态规划真正关心的是:总资金固定时,不同阶段如何分配,才能让整体最优。
虽然小题目也能穷举,但考试更希望你理解其结构:
- 阶段:给第几个子公司分配
- 状态:还剩多少资金可分
- 决策:当前给这个子公司投多少
- 目标:总收益最大
题目最终最优答案是5.5百万元,本质上说明:全局最优不一定来自“某一个公司单独收益最高”,而来自不同阶段的搭配最优。
所以动态规划的核心不是死背表格,而是记住一句话:局部选择要服从整体阶段结构,不能只看眼前收益。
5. 指派问题要注意:不是每个人都做自己最快的那个岗位,而是整体最小
四个工人分配到四个岗位,问总工时最短。这类题最容易掉进的坑,就是“贪心地让每个人选自己最短的那一列”。但指派问题的本质是一一匹配,一个岗位只能给一个人,一个人也只能去一个岗位,所以它求的是整体最优,不是各自行最小值的简单相加。
题目里最后的最优总工时是14。这说明什么?说明有时候某个人虽然在某岗位上是最省工时的,但如果让他占了这个岗位,反而会迫使其他人去更差的位置,导致整体更差。
做这类题时,先问自己一句:这是“每人单独最好”,还是“所有人搭配后最好”?如果是后者,那就是典型的指派问题。
三、图论与网络优化,是这一章最像工程问题的一部分:这一部分解决“在网络结构中怎样找最优路径、最大能力或最省连接”
这一部分和项目管理、系统设计其实很贴近,因为很多真实系统问题都能转成网络问题:运输、通信、供水、供气、资源连接,本质上都在图上做优化。
1. 最短路径题,核心是“从起点到每个点的当前最短值不断被更新”
运煤路线题看起来图很复杂,其实本质就是最短路径。每一段路有运输费用,起点和终点还有装卸费用,要求总费用最小。你不需要一眼看出哪条路最优,而应该像做动态更新一样,从起点一层层往后推。
题目最终答案是19。它背后的方法,不是蒙,而是:
- 从起点出发,先得到第一层各点的最小代价
- 用这些结果去更新第二层
- 继续向后推进
- 到终点时取最小总代价
这其实就是最短路思想的核心:到某个点的最短路,来自前面某个点的最短路再加上一条边。
如果图是分层的,层层递推尤其好用;如果图更一般,则常见算法是 Dijkstra。无论哪种形式,本质都一样。
2. 最小生成树题,求的不是“到终点最短”,而是“把所有点连起来总长度最小”
从水库开始铺水管,把所有村连起来,要求总管长最短,这就不是最短路径题了,而是最小生成树。它和最短路径最容易混,因为两者都在“图上找最小”。但它们追求的目标完全不同:
- 最短路径:关注某个起点到某个终点怎么走最省
- 最小生成树:关注所有点怎样连通,总边长最小
题目答案是11.3 km。它的判断重点不是“走哪条到终点”,而是:每一步都在保证不形成回路的前提下,选当前最短、最划算的连接边。
这类题常见做法有 Prim 和 Kruskal。考试里哪怕不让你写算法,也要有算法思维:不能只看单条边最短,还要看它是否会重复连接已连通区域、是否会造成回路。
3. 最大流题,要抓住“总能力不是简单相加,而受瓶颈和结构限制”
天然气输送网络题要求从源点S到汇点T的最大输气能力,这考的是最大流。很多人会误以为“从S流出的边容量加起来就是答案”,或者“到T的边容量加起来就是答案”,这都不对。因为中间节点和中间边也会形成瓶颈。
题目最终答案是9。这个结果说明:虽然局部看似还能多送,但受整张网络的分流和汇合能力限制,整体最大只能到这个值。
以后遇到最大流题,要先记两个判断原则:
- 节点中转必须满足流量守恒
- 每条边流量不能超过边容量
真正的最大流,不是局部大,而是全网能同时成立的最大总流。
4. 网络类题先判断“它到底在求什么”
这一章的图论题最容易错的,不是算不过来,而是方向错了。建议你以后拿到图题,第一步先不算,先分类型:
- 问“从 A 到 B 最省” -> 最短路径
- 问“把所有点连起来最省” -> 最小生成树
- 问“从源到汇最多送多少” -> 最大流
只要这一步分清,后面才有可能用对方法。
四、概率、统计与决策,考的是“在不确定条件下怎样估计和选择”
这一部分的共同点是:条件里存在概率、不确定、隐私偏差或者未来状态,而题目又要求你给出合理决策或估计。也就是说,这里考的不再是简单确定性计算,而是“面对不确定,怎么做出尽量合理的判断”。
1. 期望值决策题,先把每种前景的收益按概率加权
比如某公司开发新产品,未来有“成功、较成功、失败”三种情形,概率分别是40%、40%、20%,三种方案在不同前景下收益不同,问应该选哪一个方案。这个题的关键不是看“哪种方案在成功时赚最多”,而是看平均意义下谁最值。
也就是对每个方案计算期望收益:
- 方案 1:
20×40% + 5×40% - 10×20% = 8 - 方案 2:
16×40% + 8×40% - 5×20% = 8.6 - 方案 3:
12×40% + 5×40% - 2×20% = 6.4
因此应选择方案 2。
做这类题最容易错的是只看“最高收益”或者只看“最坏损失”。但题目明确要求最大期望利润,就必须做概率加权。
2. 匿名随机应答题,关键在于把“表面回答概率”拆回“真实比例”
这类题是概率统计里很典型的应用题。学校为了调查作弊比例,不直接问“你作弊了吗”,而是让学生随机回答“你是男生吗”或“你作弊了吗”。这样别人不知道他回答的是哪一个问题,学生更愿意说真话。
题目里:
- 题 1:你是男生吗
- 题 2:你作弊了吗
- 选题 1 和题 2 的概率相同,都是
0.5 - 学生中男生比例是
0.6 - 最终回答“是”的比例是
0.35
设作弊比例为x,则:
0.5×0.6 + 0.5×x = 0.35
解得:
x = 0.1
所以作弊比例大约是10%。
这个题最关键的理解,是:表面看到的“是”里面,有一半来自人口结构问题,另一半才来自敏感问题。你要做的是把混合概率拆开。
3. 不确定条件下做决策,不是求绝对正确,而是求信息约束下的最合理
这一部分其实把前面的灵敏度分析、期望值决策、随机估计串起来了。无论是方案选择,还是匿名调查,还是蒙特卡罗积分,它们都在做同一件事:当现实不完全确定时,用结构化方法减少主观拍脑袋。
所以考试里如果你看到“概率”“参数变化”“未来情形”“随机样本”“估计”这些词,就要意识到:这类题的重点不是精确到绝对真值,而是用数学方法给出合理、可解释、可比较的结果。
五、把这一章串起来看,真正要学会的是“先识别问题类型,再套对方法框架”
第十四章看起来像一章“杂题集”,但它其实很有主线。组合计数、工程进度、集合统计这些基础题,解决的是怎么把文字关系变成数量关系;线性规划、动态规划、指派问题、灵敏度分析,解决的是在约束下怎么找最优方案;最短路径、最小生成树、最大流,解决的是网络结构中的费用、连接和能力优化;期望值决策、匿名调查、蒙特卡罗方法,则解决的是不确定条件下怎么估计和选择。
所以这章最重要的不是记住某一道题,而是形成一个固定动作:
- 先判断这是计数题、规划题、图论题,还是概率决策题
- 再找它的核心对象:总量、约束、网络、概率
- 最后再用对应方法去算,而不是一上来硬代数字
只要这个步骤稳了,这一章就不会再像“东一题、西一题”那样难受。
考前速记可以压成几句话:多属性多取值先想乘法原理;工程进度先抓总工作量不变;多人多项目统计先按参与层次分组;参数变化看灵敏度分析;线性规划先列约束再找可行最优点;最短路径、最小生成树、最大流要先分清题型;期望值决策就是收益按概率加权;匿名随机应答要把表面概率拆回真实比例;资金分配看动态规划,岗位匹配看指派问题。
