#include <graphAbstraction.h>
Inheritance diagram for graphAbstraction:
Public Member Functions | |
graphAbstraction () | |
virtual | ~graphAbstraction () |
virtual bool | pathable (node *from, node *to)=0 |
is there a legal path between these 2 nodes? | |
void | getParentHierarchy (node *from, node *to, std::vector< node * > &fromChain, std::vector< node * > &toChain) |
given 2 nodes, find as much of their hierarchy that exists in the graph | |
graph * | getAbstractGraph (int level) |
return the abstract graph at the given level | |
unsigned int | getNumAbstractGraphs () |
return the total number of graphs in the hierarchy | |
virtual double | h (node *a, node *b)=0 |
heuristic cost between any two nodes | |
double | distance (path *p) |
length in distance of a path | |
node * | getNthParent (node *which, int n) |
return nth level parent of which or null if it doesn't exist | |
node * | getParent (node *which) |
long | getNumChildren (node *which) |
node * | getNthChild (node *which, int n) |
long | getAbstractionLevel (node *which) |
graph * | getAbstractGraph (node *which) |
virtual void | verifyHierarchy ()=0 |
verify that the hierarchy is consistent | |
void | clearMarkedNodes () |
get current revision of hierarchy -- indicates if changes have been made */ | |
virtual void | removeNode (node *n)=0 |
remove node from abstraction | |
virtual void | removeEdge (edge *e, unsigned int absLevel)=0 |
remove edge from abstraction | |
virtual void | addNode (node *n)=0 |
add node to abstraction | |
virtual void | addEdge (edge *e, unsigned int absLevel)=0 |
add edge to abstraction | |
virtual void | repairAbstraction ()=0 |
This must be called after any of the above add/remove operations. | |
virtual int | measureRepairHits () |
void | measureAbstractionValues (int level, double &n, double &n_dev, double &c, double &c_dev) |
double | measureAverageNodeWidth (int level) |
Protected Attributes | |
std::vector< graph * > | abstractions |
Private Member Functions | |
int | computeWidth (node *n) |
int | widthBFS (node *child, node *parent) |
double | measureExpectedNodeWidth (node *n) |
int | getNumExternalEdges (node *n, node *p) |
int | countEdgesAtDistance (node *child, node *parent, std::vector< int > &dists) |
|
|
|
|
|
add edge to abstraction
Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
add node to abstraction
Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
get current revision of hierarchy -- indicates if changes have been made */
Reimplemented in mapAbstraction, and mapCliqueAbstraction. |
|
|
|
|
|
length in distance of a path
|
|
|
|
return the abstract graph at the given level
|
|
|
|
|
|
return nth level parent of which or null if it doesn't exist
|
|
return the total number of graphs in the hierarchy
|
|
|
|
|
|
|
|
given 2 nodes, find as much of their hierarchy that exists in the graph
Reimplemented in loadedCliqueAbstraction, and mapCliqueAbstraction. |
|
heuristic cost between any two nodes
Implemented in loadedCliqueAbstraction, and mapAbstraction. |
|
|
|
|
|
|
|
Reimplemented in mapCliqueAbstraction. |
|
is there a legal path between these 2 nodes?
Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
remove edge from abstraction
Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
remove node from abstraction
Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
This must be called after any of the above add/remove operations. But the operations can be stacked followed by a single repairAbstraction call. Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
verify that the hierarchy is consistent
Implemented in clusterAbstraction, loadedCliqueAbstraction, mapCliqueAbstraction, mapFlatAbstraction, MapLineAbstraction, mapQuadTreeAbstraction, NodeLimitAbstraction, and radiusAbstraction. |
|
|
|
|