Utilizzando la Boost Graph Library Sto cercando un modo per estrarre il matrice di adiacenza da un grafico sottostante rappresentato da uno o boost::adjacency_list
boost::adjacency_matrix
. Mi piacerebbe usare questa matrice insieme a boost::numeric::ublas
per risolvere un sistema di equazioni lineari simultanee.Estrarre la matrice di adiacenza da un grafico BGL
Ecco un esempio minimo per farti andare:
#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?
}
Se qualcuno potesse trovare un modo efficace per ottenere la matrice di adiacenza sarei molto grato. Idealmente la soluzione è compatibile con uBLAS. Mi chiedo se c'è un modo per evitare l'iterazione attraverso l'intero grafico.
Non sono sicuro, ma non credo che ci sia un modo per ottenere questo risultato che non coinvolge scorrendo il grafico. Spero che qualcuno mi dimostri che non sbaglio, ma nel frattempo puoi vedere [qui] (http://liveworkspace.org/code/1M7a0s$1) che è davvero facile tramite iterazione. –