2014-09-02 66 views
-2

我需要找出2D數組中兩個節點之間的最短路徑。爲此,我想使用boost圖庫。但boost圖庫接受圖形作爲輸入。所以我需要將二維數組轉換爲圖形。我也聽說適配器類圖矩陣可用於此目的。但是,當我經歷了這一點,我也無法清楚地瞭解這一點。我也找不到任何例子。那麼有誰能給我一個關於如何使用該適配器代碼將矩陣轉換爲圖形的示例代碼?Boost適配器類將矩陣轉換爲圖形

感謝

回答

1

看一看this一段代碼中的註釋鏈接到Extract the adjacency matrix from a BGL graph

現在似乎沒有比迭代矩陣和向圖中添加邊緣更簡單的方法。

for(i = 0; i < nrows; ++i) 
    for(j = 0; j < ncols; ++j) //of course in a graph nrows should equal ncols. 
     if(matrix[i][j] != 0){ 
      add_edge(i,j,g); 
     } 

假設你有一個vecS頂點圖(整數頂點描述符)。

matrix adapter這個類現在沒有文檔記錄。在看實現和this mailing list post看來,這意味着通過參考nnz方法(非零元素的數量)來判斷boost::numeric::ublas::mapped_matrix

儘管在矩陣適配器不說明,vector adapterleda adapter,與同一作者指出:

「該模塊需要C++編譯器支持部分 專業化的graph_traits類,所以這不是便攜式 到VC++「。

因此,即使你得到這些無證適配器的工作,他們不會使用VC++編譯。

你只需迭代你的矩陣並手工添加邊緣(據我所知)。