HypercubeGraph implements a special graph type. The nodes of the graph are indexed with integers having at most dim
binary digits. Two nodes are connected in the graph if and only if their indices differ only on one position in the binary form. This class is completely static and it needs constant memory space. Thus you can neither add nor delete nodes or edges, however, the structure can be resized using resize().
This type fully conforms to the Graph concept. Most of its member functions and nested classes are documented only in the concept class.
This class provides constant time counting for nodes, edges and arcs.
- Note
- The type of the indices is chosen to
int
for efficiency reasons. Thus the maximum dimension of this implementation is 26 (assuming that the size of int
is 32 bit).
Inherits GraphExtender< Base >.
|
| HypercubeGraph (int dim) |
| Constructs a hypercube graph with dim dimensions. More...
|
|
void | resize (int dim) |
| Resizes the graph. More...
|
|
int | dimension () const |
| The number of dimensions. More...
|
|
bool | projection (Node node, int n) const |
| Returns true if the n'th bit of the node is one. More...
|
|
int | dimension (Edge edge) const |
| The dimension id of an edge. More...
|
|
int | dimension (Arc arc) const |
| The dimension id of an arc. More...
|
|
Node | operator() (int ix) const |
| Gives back a node by its index. More...
|
|
int | nodeNum () const |
| Number of nodes.
|
|
int | edgeNum () const |
| Number of edges.
|
|
int | arcNum () const |
| Number of arcs.
|
|