嗨,我對Boost庫非常陌生。我想從一個用於星型算法的正方形二維地圖建立一個圖(地圖是牆和普通地形都是1和0的數組)。使用Boost圖的大小變化圖
該圖應該是無向的並隨地圖大小而變化。每個節點有8條邊(地圖邊除外)。
我已經通過了一些例子,但我不明白構建這種尺寸圖的過程,因爲大多數例子在boost圖庫文檔中看起來像這樣(請看下圖)。
任何幫助或想法將非常感激
#include <iostream> // for std::cout
#include <utility> // for std::pair
#include <algorithm> // for std::for_each
#include <boost/graph/graph_traits.hpp>
#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/dijkstra_shortest_paths.hpp>
using namespace boost;
int main(int,char*[])
{
// create a typedef for the Graph type
typedef adjacency_list<vecS, vecS, bidirectionalS> Graph;
// Make convenient labels for the vertices
enum { A, B, C, D, E, N };
const int num_vertices = N;
const char* name = "ABCDE";
// writing out the edges in the graph
typedef std::pair<int, int> Edge;
Edge edge_array[] =
{ Edge(A,B), Edge(A,D), Edge(C,A), Edge(D,C),
Edge(C,E), Edge(B,D), Edge(D,E) };
const int num_edges = sizeof(edge_array)/sizeof(edge_array[0]);
// declare a graph object
Graph g(num_vertices);
// add the edges to the graph object
for (int i = 0; i < num_edges; ++i){
add_edge(edge_array[i].first, edge_array[i].second, g);
}
return 0;
}
https://en.wikipedia.org/wiki/Lattice_graph似乎與 – sehe