簡體   English   中英

在訪問某些頂點時在加權圖中找到最短路徑

[英]Finding the shortest path in weighted graph while visiting certain vertices

我試圖在無向加權圖中找到從A到Z的最短路徑。 但是,生成的路徑也應該經過一組無序的頂點(讓我們說B,C和D)。
我沒有找到這個確切問題的任何答案,但是我遇到了類似的問題,將問題定義為NP-Hard(據我所知,並不是每個圖形都能真正解決)。

因此,是否存在一種算法,它至少會嘗試找到一條訪問所有這些頂點並折斷的路徑,以防在用盡合理數量的選項后找不到路徑?

如果沒有,我的替代方法是將這些必須訪問的頂點排序。 是否有比找到路徑更好的方法,而不僅僅是將路徑拆分並為每個段計算最佳路徑(A-> B,B-> C等)?

給定一組頂點S和一個原始頂點v ,您可以使用“深度優先搜索”對S中的頂點進行排序,使其與v的距離最接近,最遠,即形成一個距離表。

實際上,創建該表會給您一個僅由O(nm)中的頂點S組成的新圖,其中n是圖的大小, m是集合S的大小。

現在,您正在尋找穿過此新圖的所有頂點的最短路徑。 因此,您的問題等同於該較小圖上的Traveling Salesman問題。

請注意,通過在開始節點和結束節點之間添加虛擬節點來強制執行Traveling Salesman算法的終點非常簡單。

現在,您可以選擇一種已知的啟發式方法來應用於較小的圖形。

暫無
暫無

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

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