【发布时间】:2013-03-10 20:46:21
【问题描述】:
使用 Boost Graph Library 我正在寻找一种方法来从boost::adjacency_list 或boost::adjacency_matrix 表示的基础图中提取邻接矩阵。我想将此矩阵与boost::numeric::ublas 结合使用来求解联立线性方程组。
这里有一个简单的例子来帮助你:
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/adjacency_matrix.hpp>
using namespace boost;
typedef boost::adjacency_list< listS, vecS, directedS > ListGraph;
typedef boost::adjacency_matrix< directedS > MatrixGraph;
int main(){
ListGraph lg;
add_edge (0, 1, lg);
add_edge (0, 3, lg);
add_edge (1, 2, lg);
add_edge (2, 3, lg);
//How do I get the adjacency matrix underlying lg?
MatrixGraph mg(3);
add_edge (0, 1, mg);
add_edge (0, 3, mg);
add_edge (1, 2, mg);
add_edge (2, 3, mg);
//How do I get the adjacency matrix underlying mg?
}
如果有人能想出一种有效的方法来获得邻接矩阵,我将非常感激。理想情况下,该解决方案与 uBLAS 兼容。我想知道是否有办法避免整个图的迭代。
【问题讨论】:
-
我不确定,但我认为没有不涉及遍历图形的方法来完成此任务。希望有人能证明我错了,但与此同时,您可以看到 here 通过迭代真的很容易。
标签: c++ boost boost-graph