Algorithm 覆盖所有路径的最短路径算法

Algorithm 覆盖所有路径的最短路径算法,algorithm,graph,Algorithm,Graph,这是我在模拟面试视频中遇到的一个问题的变体 假设有一组路线例如:[罗马->达拉斯,达拉斯->罗马,伦敦->巴黎->法兰克福,伦敦->达拉斯,法兰克福->罗马]等等。现在我想给这条路线添加一个新的位置,例如:德里。问题是找到我需要建立的连接的最小数量,这样我就可以覆盖德里的所有上述地方 我的解决办法是: 构建一个图并获取该图中强连接组件的列表 将此新位置的边添加到SCC列表中每个组件的至少一个节点。由于SCC中的每个节点都相互连接,因此向任何一个节点添加边都应该有效 这个解决方案有意义吗?我无法找

这是我在模拟面试视频中遇到的一个问题的变体

假设有一组路线
例如:[罗马->达拉斯,达拉斯->罗马,伦敦->巴黎->法兰克福,伦敦->达拉斯,法兰克福->罗马]
等等。现在我想给这条路线添加一个新的位置,例如:德里。问题是找到我需要建立的连接的最小数量,这样我就可以覆盖德里的所有上述地方

我的解决办法是:

  • 构建一个图并获取该图中强连接组件的列表
  • 将此新位置的边添加到SCC列表中每个组件的至少一个节点。由于SCC中的每个节点都相互连接,因此向任何一个节点添加边都应该有效

  • 这个解决方案有意义吗?我无法找到一种方法来证明这种方法在任何情况下都有效。这个解决方案有什么缺点吗?请分享您的意见。

    多亏了@Henry,问题的棘手部分是要理解,要么找到弱连接的组件,要么找到强连接的组件,然后只为每个组件添加一条路由是不行的

    @Henry指出的一个很好的例子是:
    L->p存在;添加德里,只需向L添加一条路线


    <> >反对<代码>弱连接组件< /代码>,考虑<代码> L> >你听说过这个吗?这就是你的意思。@winarcooo我不认为这是TSP问题。通过向每个SCC添加一条边,可以添加比需要更多的边。(两个SCC可能仍然通过单向连接连接)。您所说的“连接组件”是什么意思?对于强连接的组件,可以添加比需要更多的路由,对于弱连接的组件,组件中的任何两个节点都不一定能够相互连接。我在上面的答案中定义了连接组件,所以它表示强连接组件。但是这个答案和你之前的答案有同样的问题。以两个通过单向路由连接的节点为例。这包括两个部分。但是一条额外的路线就足以让两个城市都可以从一个新的城市到达;只是这一个有一些更相关的解释。话虽如此,我不确定你到底关心什么?