簡體   English   中英

兩個圖節點之間的固定長度路徑

[英]Fixed length path between two graph nodes

是否存在一種算法,如果在圖形上給出兩個節點,它們將在它們之間找到一個獲取指定跳數的路由? 任何節點都可以連接到任何其他節點。

此時的點位於2D空間中,因此我不確定圖形是否是最佳方法。

您是否嘗試過迭代加深DFS

如果您有節點正在尋找根據跳數查找路由,那么圖表可能是正確的方法。 我不確定我理解你要做什么以及約束是什么,特別是關於“任何節點可以連接到任何其他節點”......這似乎有點開放。

然而,無視這一點; 用一些圖表表示:

它似乎從第一個節點開始,從那里進行深度優先搜索,並在(a)所采用的跳數大於指定數量或(b)我們到達第二個節點時終止搜索; 這將決定連接兩個節點(最多)那么多跳的第一條(不僅是)路徑。

如果它必須完全是指定的躍點,如果跳過了,則終止搜索的任何分支,如果你也到達了第二個節點,則終止成功。

啞方法:(數據結構是堆棧數組)。 這基本上是做廣度優先搜索(BFS)到深度N,除了允許循環(你沒有澄清,但我認為它們是),你不排除訪問節點進一步搜索。

  1. 推送存儲在索引0(索引=深度)的數組中的堆棧上的起始節點

  2. 對於每個級別/索引“l”0-N:

    對於存儲在級別“l”的堆棧上的每個節點,找到它的所有鄰居,並將它們推送到存儲在級別“l + 1”中的堆棧上。

    重要提示:如果您的任務允許查找包含循環的路徑,請不要檢查您是否已訪問過添加的任何節點。 如果它不允許循環,則使用訪問節點的散列不添加任何節點兩次**

  3. 結束等級“N-1”時停止。

  4. 循環遍歷您在索引“N”處堆疊的所有節點,並找到目標節點。 如果發現:成功,如果沒有,沒有這樣的路徑。

請注意,如果“每個節點都可以連接”,則表示完全連接圖,那么存在一個不涉及實際訪問節點的數學答案

(但是,公式太長,無法在StackOverflow的文本輸入字段中寫入)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM