Algorithm 无向图算法

Algorithm 无向图算法,algorithm,graph,nodes,Algorithm,Graph,Nodes,假设我们有一个n-节点,m-边无向图G=(V;E),我们有两个不同的节点 叫做s和t。假设s和t之间的距离严格大于n/2 . 显示在那里 是一个与s和t不同的节点v,因此从s到t的每条路径都经过v。 给出一个运行时间为O(n+m)的算法来 nd这样一个顶点。你不必 证明你的算法是正确的,但你必须给出一个类似v的顶点存在的证明 我想不出这个问题的确切答案,帮我解决 假设s和t之间有两条路径不共享一个节点。由于s和t之间的距离大于n/2,因此s和t之间的每条路径都大于等于n/2个节点。这意味着图形

假设我们有一个n-节点,m-边无向图G=(V;E),我们有两个不同的节点 叫做s和t。假设s和t之间的距离严格大于n/2 . 显示在那里 是一个与s和t不同的节点v,因此从s到t的每条路径都经过v。 给出一个运行时间为O(n+m)的算法来 nd这样一个顶点。你不必 证明你的算法是正确的,但你必须给出一个类似v的顶点存在的证明


我想不出这个问题的确切答案,帮我解决

假设s和t之间有两条路径不共享一个节点。由于s和t之间的距离大于n/2,因此s和t之间的每条路径都大于等于n/2个节点。这意味着图形有>=n+2个节点,这是一个矛盾

对于算法,只需找到任何路径,然后查看连接到一侧而不使用路径节点的子图的完成位置即可。详情如下:

  • 如果s只连接到我们要查找的节点之外的一个节点
  • 如果不是,则从s生成BFS
  • 查找路径s-t
  • 查找连接到s的节点,而不使用路径s-t节点的边
  • 路径s-t上连接部分中的最后一个节点是我们要查找的节点

我可能误解了这两个问题中的任何一个,但问题似乎是为了证明每个路径共享一个节点,而您证明了每对路径至少共享一个节点(但不一定是同一个节点)。不完全是这样。这证明不可能找到不共享至少一个节点的两条路径。这意味着存在(至少)一个节点,该节点将图形分为(至少)两部分,并且s和t位于不同的部分。证据不是建设性的,而是存在性的。对于建设性的证明,我们需要一个算法:-)啊,我现在明白你的逻辑了。我想在你的原始答案中添加这一点,因为就目前而言,你的证明似乎不完整。我添加了算法,现在它是完整的:-)社区标准是你展示你迄今为止所做的,而不仅仅是要求答案