簡體   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