Boost code is all templates, and its not easy to understand when you read that code
So, the base grph is an attempt to simplify the functions from boost graph that are needed for developing
For the postgres user the id of an edge might be 15954 <- original_id but for the developer, maybe the edge was the 3rd stored, so it gets 3 <-- the V. Some times, as developer, you want to use the original id, and (most) some times the V that will depend on the algorithm
For the user, the edge with id 1 goes from 100 to 200 with out the "renumbering" an array of size 1700 would be needed to store the vertices but they are only 17 vertices to be memory efficient: and array of 17 vertices is needed
Graph[i].id; has the users number (where i is of type V). you really only need to retreive the user's number when you want to return the results and for everithing else you want to use a variable of type V
but it will depend for example @daas-ankur-shukla is using dijkstra many to many, and he makes the call using the original id's the dijkstra many to many internally will use V ... and return eveirthing in terms of original ids
Current Available vertex classes:
Basic_vertex
XY_vertex
Can store x,y values, the other can not 8 bytes per double x & y are double 16 bytes. 16 * number of vertices is the total memory that is not used because you choose the correct vertex class for your implementation so, to be memory efficient, the correct class is to be used normally is the basic for dijkstra kind of functions and normally is XY for astar kind of functions
Pointers on Graphs, Vertices and Edges in pgRouting
edge
is an edge identifier, comes from the column id from the datanode
is a vertex identifier, can come from source or target columns