繁体   English   中英

找到两个顶点之间可能的最短路径

[英]Find the possible shortest path between two vertices

所以假设我有一个这样的图,我一次只能访问 6 个顶点,例如,我第一次可以访问 123654,当我再次移动时,我需要从上次访问的最后一个顶点开始,所以对于给定的示例,我必须从 4 开始,然后我可以做 432567。目标是从 1 开始,并以 7 结束,这是我所有动作的最后一个元素。

有什么办法可以做到这一点? 我已经被这个问题困扰了好几个星期了,到目前为止,我的想法是继续探索我可能找到的所有可能的路线,但我认为这不是一个正确的算法,有更好的想法吗? 在此处输入图像描述

步骤 1.从顶点 1 (V1) 找到长度为 6 的所有路径。 您可以为此使用 DFS:

123456
123654
125436
125634

我假设,你不能在同一个“运行”中访问同一个顶点两次。 如果可以,您将获得更大的列表。

步骤 2.从 V7 中找出所有长度为 6 的路径:

765432
765234
763452
763254

第 3 步:从 V1 和 V7 中找到一个可以在一次运行中到达的顶点

它是顶点编号 4。然后您可以构建两个运行,让您从 V1 到 V7 的 go:

123654
432567

第 4 步。您可以将此算法推广到任意图。

  1. 使用 DFS 或 BFS 构建从 V1 可到达的顶点列表。
  2. 对从 V1 可到达的每个顶点重复此步骤,直到到达 V7(或 V[Last])。

您需要的是在长 DFS(每次运行后可到达的顶点)内运行一个短 DFS(6 个顶点“运行”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM