2014-09-02 32 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++编译。

你只需迭代你的矩阵并手工添加边缘(据我所知)。