我確信有大量關於如何完成我所追求的信息,但這是一個不知道技術術語的問題。基本上我想創建的是一個有向圖的鄰接矩陣,而不是簡單地存儲每個頂點對是否具有鄰接關係,對於矩陣中的每個頂點對,如果存在任何路徑連接這兩個(以及那些路徑是什麼)。建立「連接矩陣」的成本
這會給我的查找帶來恆定的時間複雜度,但是我不明白這個矩陣的建築的預期最佳時間複雜度。
另外,是否有這樣的矩陣的正式名稱?
在我腦子裏玩這個,看起來像是一個動態的編程問題。如果我想知道A是否連接到Z,我應該能夠詢問A的每個鄰居B,C和D是否它們(以某種方式)連接到Z,如果是,那麼我知道A是。如果B沒有存儲這個答案,那麼他會問他同樣的問題他的直接的鄰居,等等。我會一路記錄結果,因此後續查找將保持不變。
我還沒有花時間去實現這個,因爲它感覺像Θ(n^n)來構建一個完整的矩陣,所以我的問題是我是否正在以正確的方式進行,如果的確,建立這樣一個矩陣的成本更低?
計算它是definetly比'O(N 1,N)'便宜。您可以從每個節點執行BFS/DFS,並獲得'O(| E | * | V |)'解決方案。 – amit
謝謝@amit。我打算說n^2,但這仍然是不正確的。 (我在考慮n是| V |)。所以我會O(E * V)一樣好。 – ricklane
準確地說,我認爲它是O(n *(n + 1)/ 2),考慮一條直線的簡單連通圖,其中每個頂點至多有一個鄰居。 – ricklane