2012-08-12 27 views
-4

路徑我有一個無向圖表示由鄰接矩陣。要確定是否有兩個點之間使用C++或C

我需要一個高效率的代碼,該函數只需要返回true或false。

而且我知道Dijkstra's algorithm可以工作,我想我並不需要的最短路徑,而我的鄰接矩陣是:

a[i][j] = 1 or -1 

有沒有其他的值。

+1

[www.solvemyhomeworkforme.com](http://www.solvemyhomeworkforme.com)更適合。 – dasblinkenlight 2012-08-12 02:35:44

+0

您需要爲此問題添加算法標籤 – 2012-08-12 02:35:48

+1

有可用於您的目的的BFS(寬度優先搜索)和DFS(深度優先搜索)算法。請查看這些。 – PALEN 2012-08-12 02:47:38

回答

0

對不起,我沒有注意到你的矩陣僅包含0和1

如果只查詢一次,也許DFS或BFS是更好的,只有O(|V|+|E|)

如果是雙向路徑,Disjoint-set data structureSee wikipedia ) 是有效的!

  • 單源或多源?
  • 單查詢或多查詢?

如果只有一個查詢,則所有單源最短路徑算法都可以。像:

  • 貝爾曼 - 福特O(|V||E|)
  • 的Dijkstra O(|V|^2)
  • Dijkstra算法+堆Θ((|E|+|V|)log|V|)
  • SPFA(貝爾曼 - 福特使用隊列)
  • ...

如果有很多查詢,請考慮

  • 弗洛伊德 - Warshall算法O(|V|^3)
+0

一個查詢和雙向路徑。 – user1592900 2012-08-12 07:04:45

+0

'DFS'和'BFS'的最壞情況是'O(| E | + | V |)' – 2012-08-13 00:08:31

+0

@DougRamsey謝謝你指出我的錯誤。 – abcdabcd987 2012-08-13 00:48:14

相關問題