[{"data":1,"prerenderedAt":272},["ShallowReactive",2],{"article:column:/column/math-beauty/modeling-map":3},{"id":4,"title":5,"body":6,"description":12,"extension":261,"meta":262,"navigation":267,"path":268,"seo":269,"stem":270,"__hash__":271},"column/column/math-beauty/modeling-map.md","一张地铁图，究竟保留了什么",{"type":7,"value":8,"toc":249},"minimark",[9,13,16,19,22,26,29,32,35,38,45,48,51,54,58,61,64,67,70,73,76,79,85,92,95,98,101,105,108,111,114,117,123,126,129,132,135,138,142,145,148,151,154,160,163,166,172,176,179,182,185,188,191,194,197,200,203,206,209,212,215,218,221,243,246],[10,11,12],"p",{},"地铁线路图上的两站，看起来很近，坐过去却未必快。线可以拐成整齐的直角，站点可以被挪开，城区的形状也可能变得认不出来。可我们依然会拿着它找站、换乘。",[10,14,15],{},"一张图删掉了这么多东西，为什么还管用？",[10,17,18],{},"这个问题适合放在整个系列的开头。写程序、分析数据、训练模型，经常都要先做一件类似的事：从许多细节中，选出眼前问题需要的那一部分。选对了，复杂的事情有机会变得清楚；选错了，后面的计算再精细，也可能答非所问。",[10,20,21],{},"我们先不谈真实城市，用五个虚构站点画一张足够小、可以亲手算完的图。下面的线路、时间和换乘条件全部是为解释原理设定的，不代表实际出行数据。",[23,24,25],"h2",{"id":25},"先问你想从图上知道什么",[10,27,28],{},"站点记为S、A、B、C、T，S是起点，T是终点。只有下面这些直接连接，暂且都允许双向通行：",[10,30,31],{},"S连A，A连T；S连B，B连C，C连T。",[10,33,34],{},"因此，从S出发，不绕回已经走过的站，有两条到T的路线：S→A→T，以及S→B→C→T。",[10,36,37],{},"现在把图上方的A往左挪，把B往下挪，把直线弯成折线。只要站名没有弄错，连接也没有增减，这两条路线仍然在。你照着S、B、C、T的顺序走，每一对相邻站仍然能够直接抵达。",[10,39,40],{},[41,42],"img",{"alt":43,"src":44},"图1：同样五个站点、同样五条连接，可以画成不同形状。两幅图都保留S-A、A-T、S-B、B-C、C-T，不能按线段长短推断距离或用时。","/collections-assets/math-beauty/ch01/01-two-maps.png",[10,46,47],{},"这里已经有一小段可以检查的推理。假设一条路线在第一幅图里可走，那么沿路每一步都是一条保留下来的连接，所以它在第二幅图里也可走。反过来也一样。于是，两幅图对于“哪些站能够沿线路互相到达”这个问题，给出的答案相同。",[10,49,50],{},"注意这个结论的范围。它没有证明两站步行距离相同，也没有证明坐车时间相同。我们保留的是连接关系，纸上线段的长短没有被约定为真实距离。",[10,52,53],{},"如果你问“能不能坐车到T”，这张图已经很有用。如果你问“走路去T要多久”，就缺了道路、距离与步行速度。图没有突然变坏，只是问题换了，需要的信息也跟着变了。",[23,55,57],{"id":56},"最好的一条路还没有说清楚","“最好的一条路”还没有说清楚",[10,59,60],{},"即使终点已经确定，“选一条最好的路线”也仍然不够明确。",[10,62,63],{},"如果想经过尽量少的区间，S→A→T只有两段，S→B→C→T有三段，前一条更少。这里数的是相邻站之间的区间数，不是换乘次数。",[10,65,66],{},"如果想尽快到达，就要补上时间。我们为每段连接标一个固定的行车用时：S到A、A到T各4分钟；S到B、B到C、C到T各2分钟。",[10,68,69],{},"暂时假设没有额外候车、换乘和进出站时间，途中也没有延误。于是：",[10,71,72],{},"S→A→T：4＋4＝8分钟。",[10,74,75],{},"S→B→C→T：2＋2＋2＝6分钟。",[10,77,78],{},"同一张连接图，按区间数选，答案是上面那条；按行车时间选，答案是下面那条。后者多走一段，却更快。",[10,80,81],{},[41,82],{"alt":83,"src":84},"图2：路线P经过2个区间，共8分钟；路线Q经过3个区间，共6分钟。“区间最少”和“行车时间最少”得到不同答案。","/collections-assets/math-beauty/ch01/02-two-objectives.png",[10,86,87,88],{},"这些附在线路上的数字，通常叫作权重。它可以表示时间，也可以表示费用，但含义要先说清楚。把一条路线经过的各段时间相加，就得到这里定义的路线代价。加权路径的这种表示是图论里常用的建模方式。",[89,90,91],"span",{},"1",[10,93,94],{},"用一个短公式写，就是T(P)＝t₁＋t₂＋…＋tₖ。P代表一条路线，k是它经过的区间数，t₁到tₖ是各段用时，T(P)是总用时。字母只是让我们不用每次都重写整句话。",[10,96,97],{},"这条加法也有依据：乘车在这些区间上依次发生，各段计时没有遗漏或重叠。我们把各段的分钟数加起来，仍然得到分钟。假如某条边记分钟，另一条边记公里，就不能直接相加后称为“最快”。",[10,99,100],{},"问题到这里才逐渐完整：从哪些路线里选，用什么数比较，哪些现实条件暂时被忽略。只有把这些说清楚，“最优”才有确定的意思。",[23,102,104],{"id":103},"漏掉五分钟答案就反过来了","漏掉五分钟，答案就反过来了",[10,106,107],{},"现在补上一条刚才没有记录的信息。",[10,109,110],{},"S→A→T在蓝线上，全程不换乘。S→B→C在绿线上，C→T在橙线上，乘客到C以后要换车。假设这一次换乘固定需要5分钟，包含换站台与等下一趟车；起点候车等两条路线共有的额外时间暂时记为0。",[10,112,113],{},"那么，下面那条路线的总时间变成2＋2＋5＋2＝11分钟，上面那条仍是8分钟。",[10,115,116],{},"刚才推荐的6分钟路线，现在更慢了。加法没有算错，问题出在原模型根本没有把换乘计入目标。",[10,118,119],{},[41,120],{"alt":121,"src":122},"图3：行车时间相同，加入C站的5分钟换乘后，路线Q由6分钟变为11分钟。路线P仍为8分钟，比较结果随遗漏条件改变。","/collections-assets/math-beauty/ch01/03-transfer-cost.png",[10,124,125],{},"我们还可以往下推一步，看看答案对这个遗漏有多敏感。",[10,127,128],{},"把换乘用时记为τ，读作“tau”，并假设τ不小于0。两条路线分别用8分钟和6＋τ分钟。下面那条更快，恰好要求6＋τ＜8，也就是τ＜2。",[10,130,131],{},"所以，换乘少于2分钟，选下面那条；恰好2分钟，两条一样快；超过2分钟，选上面那条。",[10,133,134],{},"这个结果比“要考虑换乘”更具体。它告诉我们，真正影响这次选择的分界是2分钟。如果估计换乘需要5分钟，即使误差有半分钟，结论仍不会改变；如果估计需要2分钟左右，就不能把推荐说得那么确定。",[10,136,137],{},"这还只是一个静态小模型。现实中的候车时间可能随到站时刻变化，电梯是否可用也会影响不同乘客。那些信息要不要加进来，取决于我们希望回答什么，以及愿意接受多大的偏差。",[23,139,141],{"id":140},"有时要补数字有时要重新定义对象","有时要补数字，有时要重新定义对象",[10,143,144],{},"换乘的例子还有一层值得看看。",[10,146,147],{},"“到达C站”真的足以描述乘客现在的处境吗？站在绿线站台的人，和站在橙线站台的人，虽然都在C站，继续坐橙线去T的代价却不一样。",[10,149,150],{},"如果只记一个“C”，这两种情况会被揉在一起。一个更细的表示办法，是把C拆成“C的绿线站台”和“C的橙线站台”，两者之间画一条需要5分钟的连接。",[10,152,153],{},"路线就可以写成：S→B→C绿→C橙→T。两段行车各2分钟，站台间转换5分钟，最后行车2分钟，合起来仍是11分钟。",[10,155,156],{},[41,157],{"alt":158,"src":159},"图4：把C站拆为C绿和C橙两个状态，并用5分钟换乘连接它们。物理站点只有一个，模型里的状态可以有两个，因为下一步的代价不同。","/collections-assets/math-beauty/ch01/04-state-expansion.png",[10,161,162],{},"这并不是说地图一定越细越好。只问“C站能不能到T”时，站台层面的细节可能暂时不重要；一旦计算换乘代价，站台就成了不能随便丢掉的信息。一个模型里的“点”，也不必永远对应一个物理物体，它可以对应眼前问题需要区分的状态。",[10,164,165],{},"在软件里也会遇到同样的选择。一项任务显示“已收到”，和“已完成”，下一步允许做什么并不相同。若只存一个含糊的“成功”，程序就失去了判断后续行为所需的信息。",[10,167,168,169],{},"数学建模走到这里，已经不只是给现实配一个公式。我们在决定哪些对象需要区分，哪些关系要记录，又允许在什么条件下把几种情况看成同一种。",[89,170,171],{},"2",[23,173,175],{"id":174},"从地图回到程序与ai","从地图回到程序与AI",[10,177,178],{},"回头看，五个站点的小问题实际经历了三次变化：先保留连接，回答能否抵达；再加行车时间，比较快慢；发现换乘被遗漏后，补代价，必要时细分状态。",[10,180,181],{},"这些步骤在别的场景里也会出现，但具体规则得重新检查。",[10,183,184],{},"例如，一串服务调用依次执行，粗略总耗时可以按顺序相加；两个4毫秒任务若同时开始、互不争抢资源，且必须等两者都结束，理想等待时间是4毫秒，而非8毫秒。画面里都有“两项任务”，时间的组合规则却由执行关系决定。",[10,186,187],{},"AI也需要选择表示。把一篇文章变成一串数字时，哪些差别会被保留，哪些会被压到一起，会影响后续判断。“两个数字向量靠近”是表示空间里的关系；它是否对应我们在意的语义接近，还需要数据和实验检验。这个系列后面会认真拆开向量与距离，现在先记住这种边界就够了。",[10,189,190],{},"在假设确定后，我们可以证明图上哪些路线可走，也能证明τ超过2时哪条更快。但是，“换乘固定需要5分钟”来自我们的设定；如果拿去解决真实出行问题，它就得接受测量和验证。推理可靠与假设贴合现实，都需要各自的证据。",[10,192,193],{},"地铁图好看的地方，也正在这里：它容许形状变化，却把需要的关系留下来，让眼睛从拥挤的街道细节中看到一副清楚的结构。把对象和规则选好，原先模糊的一句“怎么走更好”，就能一步步变成可算、可比较、可检查的问题。",[10,195,196],{},"下一篇先把“规则”这件事讲清楚：一句“满足条件就可以”，究竟说了什么，又没有说什么。",[23,198,199],{"id":199},"顺手试一下",[10,201,202],{},"**题目1：**沿用本文两条路线，行车用时分别是8分钟和6分钟，只有后一条需要换乘。如果换乘分别需要1分钟、2分钟、3分钟，哪条路线更快？",[10,204,205],{},"**提示：**比较8与6＋τ。相等也是一种可能的结果。",[10,207,208],{},"**参考答案：**换乘1分钟时，后一条共7分钟，更快；2分钟时，两条都是8分钟；3分钟时，后一条共9分钟，前一条更快。",[10,210,211],{},"**题目2：**如果两条路线都额外增加完全相同的3分钟进站时间，它们的快慢关系会改变吗？这一结论能用于“两条路线各增加平均3分钟、但每次实际等待不同”的情况吗？",[10,213,214],{},"**提示：**先给两个总用时同时加3，再区分固定值与只知道平均值。",[10,216,217],{},"**参考答案：**固定增加相同的3分钟不会改变比较，因为a＜b时，a＋3仍小于b＋3。只知道平均各增加3分钟，不能保证某一次出行的快慢关系不变：平均相同，不等于那一次实际增加的时间相同。",[23,219,220],{"id":220},"延伸阅读",[222,223,224,235],"ol",{},[225,226,227,234],"li",{},[228,229,233],"a",{"href":230,"rel":231},"https://ocw.mit.edu/courses/6-006-introduction-to-algorithms-spring-2020/aa57a9785adf925bc85c1920f53755a0_MIT6_006S20_lec11.pdf",[232],"nofollow","MIT 6.006：Weighted Shortest Paths","，了解加权连接和路径权重。本文只用它们描述问题，最短路算法留到第05篇。",[225,236,237,242],{},[228,238,241],{"href":239,"rel":240},"https://www.siam.org/publications/reports/guidelines-for-assessment-and-instruction-in-mathematical-modeling-education/",[232],"SIAM与COMAP：GAIMME数学建模指南","，关于提出问题、作出假设、形成模型与回到现实检验的说明。",[244,245],"hr",{},[10,247,248],{},"作者：Jiancheng Wang · 数学之美（独立原创）",{"title":250,"searchDepth":251,"depth":251,"links":252},"",3,[253,255,256,257,258,259,260],{"id":25,"depth":254,"text":25},2,{"id":56,"depth":254,"text":57},{"id":103,"depth":254,"text":104},{"id":140,"depth":254,"text":141},{"id":174,"depth":254,"text":175},{"id":199,"depth":254,"text":199},{"id":220,"depth":254,"text":220},"md",{"collection":263,"order":264,"slug":265,"author":266},"数学之美",1,"modeling-map","Jiancheng Wang",true,"/column/math-beauty/modeling-map",{"title":5,"description":12},"column/math-beauty/modeling-map","UFAUr6YZCtZeO-TS6BHbdeKWefFRvGHIbTOtLWHOHOw",1791935829058]