最后的总结
让我们结束本课程。
-
我们研究了在加权和无权、有向图中寻找最短路径的问题,了解了一些单源最短路径算法。这类算法可用于寻找关联成本最小的路径,例如最短旅行时间、最低费用或机会成本。它们也可用于寻找能最大化利润或其他收益的路径。我们还发现,为了求出所有顶点对之间的最短路径,采用从每个顶点出发反复运行单源算法的方式效率较低,存在更优的方法。
-
一个有趣的应用是全对最短路径算法在化学图论中的使用,其中图被用来建模分子结构。原子表示为顶点,原子间的化学键表示为边。一种称为维纳指数(Wiener index)的数学性质定义为所有顶点对之间最短路径长度的总和。通过计算这些值,可以更深入地理解分子的结构特征。
-
我们学习了两种用于在连通图中寻找最小生成树的算法。寻找最小生成树在通信网络中有实际应用。然而,正如本课程讨论的其他概念一样,最小生成树的概念也可以以新颖的方式应用。例如,该近似算法可用于解决度量旅行商问题。
在最小生成树的背景下,我们探讨了不相交集合数据结构的一个具体应用场景:每个不相交集合代表一个连通分量。在其他场景中,不相交集合数据结构也可用于表示网格或网络中的连通区域。例如,它可以用于存储社交网络的信息。在这种情况下,该数据结构可用于判断信息是否能在两个人之间传递,只需检查他们是否属于同一个连通分量。
-
我们学习了福特-福克森算法,并了解到它可用于在流网络(如供水系统、货物配送或电力传输网络)中寻找最大流量。我们还看到,福特-福克森算法可用于找出流网络中的最小割,因此在识别交通拥堵等问题上非常有用。
需要注意的是,福特-福克森算法是学习流相关问题的良好起点。它被视为一项里程碑式算法,对现实世界组合优化问题的解决方式产生了深远影响。
福特-福克森算法的一个有趣应用是图像分割,即需要区分图像的前景和背景。在此场景中,像素被建模为顶点,相邻像素之间用边连接。运行算法后,最小割 中的两个集合 与 所对应的顶点分别对应图像的前景和背景。
-
我们还了解到,福特-福克森算法可以作为子程序,用于在二分图中寻找最大匹配和最小顶点覆盖。
许多需要将两类对象、动物或人进行配对的应用都可以建模为在二分图中寻找最大匹配的问题。例如,在计算机视觉中,需要在不同视频帧之间追踪移动的物体。此时,连续的两帧被视为两个部分集,每帧中的物体视为顶点。
-
同样,二分图中的最小顶点覆盖在资源分配方面具有实用价值,可用于确定覆盖所有需求所需的最少资源数量。例如,假设一家公司计划在城市中开设多个客户支持中心,距离某个支持中心一定范围内的客户能得到更好服务。在这种情况下,能够覆盖所有客户的最少支持中心数量,就对应于一个二分图中的最小顶点覆盖。
-
最后,我们学习了加尔-沙普利算法,用于在两组个体之间寻找稳定匹配,并深入分析了该算法内在的偏向性。