我找到了几种解释如何在有向图中找到强连接组件的算法,但没有解释为什么你想要这样做。强连接组件的一些应用是什么?
答案 0 :(得分:15)
你应该查看Tim Roughgarden在Coursera上的算法导论课程。对于他过去的每个算法,他解释了它的一些应用。非常有用,让人看到学习算法的价值!
我记得他使用的强连接组件是可以用它来查找在大量数据中更密切相关的人群。想想facebook以及他们如何推荐可能是你朋友的人......
这也可用于查看人口中的大块。说,“哇,这个巨大的组件都有倒退的爱好,喜欢吃发霉的比萨饼!”它可能显示出相关性。发霉的披萨广告商会使用这些数据来定位喜欢倒退的人。谁知道!
答案 1 :(得分:5)
一个例子是model checking:
查找强关联组件是在model checking中的显式formal verification中完成的。
在模型检查中 - 我们有一个状态机,它代表我们软件/硬件的模型,我们尝试在其上证明temporal logic 1 公式。
例如:公式 EG(p)
表示:图表中有一个路径,对于每个州,逻辑公式p
产生true
。
algorithm for proving if EG(p) is true on a graph(模型)找到最大强连通分量(SCC),然后检查图表中通向它的路径。
请注意,模型检查广泛应用于行业 - 尤其是为了证明硬件组件的正确性。
(1)时间逻辑对计算机科学的重要性是巨大的,它的发明者Amir Pnueli获得了图灵奖!
答案 2 :(得分:0)
可以在车辆路线选择应用程序中找到另一个应用程序。可以将道路网络建模为有向图,其中顶点为交叉点,弧为有向路段或单个车道。如果该图未牢固关联,则车辆可能会困在该图的特定部分(即,他们可以进入但不能离开)。
在许多这样的车辆路线选择应用程序中,您希望生成特定区域的路线(例如,城市内的路线问题)。在生成路线之前,您必须提取街道数据,例如,从Google地图,此处地图或开放街道地图中提取。这些地图不仅覆盖您感兴趣的区域,还覆盖整个世界。因此,您最终将获得感兴趣区域的快照,例如,通过计算地理坐标位于感兴趣区域内的所有路口的诱导子图来完成。生成的子图不一定是牢固连接的(例如,您可以有一条进入和离开该区域的道路,但不与该区域内的任何其他道路连接)。然后,通过枚举所有强连接的组件并丢弃除最大组件之外的所有组件来预处理子图。