计算机中的数学 · 小白练习本 第 4 课 / 共 7 课
第 4 课 · 约 9 分钟

图论:
地图与社交网络的骨架

把世界看成一些「点」,点和点之间有「连线」——地铁站是点,线路是线;人是点,好友关系是线;网页是点,超链接是线。研究这个「点线结构」的数学就叫图论(Graph Theory)。

需要的基础:会看地图 · 会数数

1

图 = 点 + 连线,就这么简单

图论里的「图」不是图表,而是一种结构:节点(Node,那些点)和(Edge,那些线)。它完全不关心画得像不像,只关心「谁和谁相连」。

地铁线路图就是被「抽象」过的图论:真实的轨道弯弯曲曲,但图上只画「哪些站相连、坐几站」——把无关信息全部扔掉,只留结构。这种「只留关键、扔掉细节」的本事,正是数学最迷人的地方。

如果边上有数字(比如两站之间 5 分钟),就叫带权图,数字就是「代价」——时间、距离、花费都行。

2

起点:一座城市的七座桥

图论诞生于 1736 年的「哥尼斯堡七桥问题」:城里有条河、两座岛、七座桥,市民问:能不能不重复地走遍七座桥再回到原地?

数学家欧拉做了一个聪明到家的转化:把两座岛、两块岸各缩成一个点,七座桥就是七条线。然后他指出:想不重复地走遍,每个点必须有「偶数条线」(进出成对)——而四个点全是奇数条,所以答案是不存在这样的走法

欧拉的高明在于「换视角」:不研究桥的长短宽窄,只研究「连接关系」。一个几千人争论不休的走路问题,被他用四个点七条线一锤定音。图论从此诞生。

3

最短路径:导航 App 的心脏

「从 A 到 B 哪条路最快」= 在带权图上找总代价最小的路径。经典解法叫 Dijkstra(迪杰斯特拉)算法,思路很像你自然会做的事:

  1. 从起点出发先标出「到隔壁点的最短距离」。
  2. 永远先处理「当前已知最近」的点像水面涟漪一样,一圈圈往外确认距离。
  3. 发现更近的路就更新「绕过大路反而快 2 分钟」——更新那个点的记录。
  4. 直到终点被确认终点一旦被确认,路线就是全局最短,结束。

配套知识点:仓库里记「谁和谁相连」的方式叫邻接表;探索顺序有「一层层扩散」(广度优先 BFS)和「一条路走到黑再回头」(深度优先 DFS)两种,各有所长。

4

社交网络:你在一张巨大的图里

社交软件给你推荐「可能认识的人」,等于在几十亿人的大图里做一次「两步搜索」——数学上平淡无奇,体验上却像读心术。

?

常见疑问

图和树是什么关系?

树是没有环的图:像公司组织架构、文件夹目录,每个节点只有一条「向上的路」。文件系统、HTML 标签、游戏技能树,本质都是树——图论的特例。

「旅行商问题」为什么有名?

「送货员要走遍所有城市且总路程最短」看似简单,但城市一多,完美解的验证次数爆炸增长(联系第 3 课的复杂度)。它是「P vs NP」悬案的标志性问题,也催生了大量实用近似算法。

图论需要会画图吗?

不需要画得好,需要「建模」的思维:遇到问题先问「点是什么?边是什么?边上数字代表什么?」——这三个问题问完,一半的图论题已经解开了。

下一课