我有多重映射實現,代表了一個圖的子集的鄰接表。
我需要找到通過圖形,這實際上是從一個起始節點F
結束節點G
,通過運行廣度取得所有可能路徑的這個子集的路徑首先在全圖搜索。
體系的構想:G
被發現,所以你最終G
只在多重映射值
的BFS退出一次。我的想法是,如果你從價值G
開始,得到G
的「鑰匙」(我們稱之爲H
),如果H == F
那麼我們有我們的路徑。否則,你繼續尋找H
作爲關聯到其它的鍵的值(稱之爲D
),如果D == F
那麼我們有我們的道路......在這一點上我們的道路從F
開始看起來像F -> H -> G
問題:
這個比例是?由於地圖僅包含從F
到G
的可能路徑的子集,因此停在G處,它不應該無意地製作圓形路徑或製作重複鍵。如果子集的基數爲n,那麼對於任何給定的鍵,n將是最大數量的值,因此,連接的邊數永遠不會超過n。
你會如何編碼?
我可以通過所涉及的邏輯和數學來思考,但我不明白地圖庫還不夠完善,但自己寫出來。
閱讀C++參考後,我得到了一個想法,我可以使用地圖方法
upper/lowerbound
,但我找不到支持該示例的示例。