|
bpp-core3
3.0.0
|
#include <Bpp/Graph/Graph.h>
Inheritance diagram for bpp::Graph:Classes | |
| struct | ALLGRAPHITER |
| define categories of iterators More... | |
| class | EdgeIterator |
| struct | INCOMINGNEIGHBORITER |
| class | NodeIterator |
| struct | OUTGOINGNEIGHBORITER |
Public Types | |
| typedef unsigned int | NodeId |
| typedef unsigned int | EdgeId |
Public Member Functions | |
| virtual | ~Graph () |
| virtual NodeId | getRoot () const =0 |
| virtual void | makeDirected ()=0 |
| virtual void | makeUndirected ()=0 |
Observers Management | |
Managing communication with the observers: subscribe, unsubscribe. | |
| virtual void | registerObserver (GraphObserver *observer)=0 |
| virtual void | unregisterObserver (GraphObserver *observer)=0 |
Iterator interface on Nodes | |
| virtual std::unique_ptr< NodeIterator > | allNodesIterator ()=0 |
| virtual std::unique_ptr< NodeIterator > | allNodesIterator () const =0 |
| virtual std::unique_ptr< NodeIterator > | outgoingNeighborNodesIterator (NodeId node)=0 |
| virtual std::unique_ptr< NodeIterator > | incomingNeighborNodesIterator (NodeId node)=0 |
| virtual size_t | getNumberOfNodes () const =0 |
| virtual size_t | getNumberOfEdges () const =0 |
| virtual size_t | getDegree (NodeId node) const =0 |
| virtual bool | isLeaf (NodeId node) const =0 |
| virtual size_t | getNumberOfNeighbors (NodeId node) const =0 |
| virtual size_t | getNumberOfOutgoingNeighbors (NodeId node) const =0 |
| virtual size_t | getNumberOfIncomingNeighbors (const NodeId node) const =0 |
| virtual std::vector< NodeId > | getNeighbors (const NodeId node) const =0 |
| virtual std::vector< NodeId > | getOutgoingNeighbors (const NodeId node) const =0 |
| virtual std::vector< NodeId > | getIncomingNeighbors (NodeId node) const =0 |
| virtual std::vector< NodeId > | getLeavesFromNode (NodeId node, unsigned int maxDepth) const =0 |
| virtual std::vector< NodeId > | getAllLeaves () const =0 |
| virtual std::set< NodeId > | getSetOfAllLeaves () const =0 |
| virtual std::vector< NodeId > | getAllInnerNodes () const =0 |
| virtual std::vector< NodeId > | getAllNodes () const =0 |
| virtual std::pair< NodeId, NodeId > | getNodes (EdgeId edge) const =0 |
| virtual NodeId | getTop (EdgeId edge) const =0 |
| virtual NodeId | getBottom (EdgeId edge) const =0 |
| virtual std::unique_ptr< EdgeIterator > | allEdgesIterator ()=0 |
| virtual std::unique_ptr< EdgeIterator > | outgoingEdgesIterator (NodeId node)=0 |
| virtual std::unique_ptr< EdgeIterator > | incomingEdgesIterator (NodeId node)=0 |
| virtual std::vector< EdgeId > | getEdges (const NodeId node) const =0 |
| virtual std::vector< EdgeId > | getOutgoingEdges (const NodeId node) const =0 |
| virtual std::vector< EdgeId > | getIncomingEdges (NodeId node) const =0 |
| virtual std::vector< EdgeId > | getAllEdges () const =0 |
| virtual EdgeId | getEdge (NodeId nodeA, NodeId nodeB) const =0 |
| virtual EdgeId | getAnyEdge (NodeId nodeA, NodeId nodeB) const =0 |
Topological Properties | |
These methodes check some topological properties. | |
| virtual bool | isTree () const =0 |
| virtual bool | isDA () const =0 |
| virtual void | orientate ()=0 |
| virtual bool | isDirected () const =0 |
| virtual bool | containsReciprocalRelations () const =0 |
Protected Member Functions | |
| virtual void | setRoot (NodeId newRoot)=0 |
Relations management | |
| virtual NodeId | createNode ()=0 |
| virtual NodeId | createNodeFromNode (NodeId origin)=0 |
| virtual NodeId | createNodeOnEdge (NodeId edge)=0 |
| virtual NodeId | createNodeFromEdge (NodeId origin)=0 |
| virtual void | deleteNode (NodeId node)=0 |
| virtual EdgeId | link (NodeId nodeA, NodeId nodeB)=0 |
| virtual void | link (Graph::NodeId nodeA, Graph::NodeId nodeB, Graph::EdgeId edgeID)=0 |
| virtual std::vector< EdgeId > | unlink (NodeId nodeA, NodeId nodeB)=0 |
Updating the changes on the observers | |
| template<class N , class E , class GraphImpl > | |
| class | AssociationGraphImplObserver |
| virtual void | outputToDot (std::ostream &out, const std::string &name) const =0 |
| virtual void | notifyDeletedEdges (const std::vector< EdgeId > &edgesToDelete) const =0 |
| virtual void | notifyDeletedNodes (const std::vector< NodeId > &nodesToDelete) const =0 |
| typedef unsigned int bpp::Graph::EdgeId |
| typedef unsigned int bpp::Graph::NodeId |
|
inlinevirtual |
Definition at line 34 of file Graph.h.
References createNode(), createNodeFromEdge(), createNodeFromNode(), createNodeOnEdge(), deleteNode(), getRoot(), link(), makeDirected(), makeUndirected(), registerObserver(), setRoot(), unlink(), and unregisterObserver().
|
pure virtual |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
Implemented in bpp::GlobalGraph.
Referenced by bpp::DAGraphImpl< GraphImpl >::isRooted().
|
pure virtual |
Implemented in bpp::GlobalGraph.
|
pure virtual |
Does the graph contain reciprocal relations such as A->B and B->A?
Implemented in bpp::GlobalGraph.
|
pure virtual |
Creates an orphaned node.
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
Creates a node linked to new node.
| origin | existing edge. In a directed graph: origin -> newNode. |
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
Creates a node linked to an existing node.
| origin | existing node. In a directed graph: origin -> newNode. |
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
Creates new node on an existing Edge, splitting an edge0. A -> B will be A -> N -> B
| edge | existing edge. |
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
pure virtual |
Delete one node
| node | node to be deleted |
Implemented in bpp::GlobalGraph.
Referenced by bpp::TreeGraphImpl< GraphImpl >::setOutGroup(), and ~Graph().
|
pure virtual |
Get all edges of a graph.
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
Get all the inner nodes, ie, nodes with degree > 1.
Implemented in bpp::GlobalGraph.
|
pure virtual |
Get all leaves of a graph, ie, nodes with no son (or only one neighbor is not directet).
Implemented in bpp::GlobalGraph.
|
pure virtual |
Returns the Edge between two nodes, trying both directions
| nodeA | any node implied in the relation |
| nodeB | any other node implied in the relation |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
Get node located at the bottom of an edge
Implemented in bpp::GlobalGraph.
|
pure virtual |
Get the degree of a node (ie the number of neighbors) in the graph.
| node | the node one wants to count its neighbors |
Implemented in bpp::GlobalGraph.
Returns the Edge between two nodes
| nodeA | if directed, origin node |
| nodeB | if directed, destination node |
Implemented in bpp::GlobalGraph.
Referenced by bpp::TreeGraphImpl< GraphImpl >::setOutGroup(), and bpp::Graph::EdgeIterator::~EdgeIterator().
Get all the edges to/from a node in the graph.
| node | the node one wants to get its edges |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
In an directed graph, get all the edges which are coming to a node in the graph.
| node | the node one wants to get its edges |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
In an directed graph, get all the neighbors which are coming to a node in the graph.
| node | the node one wants to get its neighbors |
Implemented in bpp::GlobalGraph.
Referenced by bpp::TreeGraphImpl< GraphImpl >::getFatherOfNode(), and bpp::DAGraphImpl< GraphImpl >::getFathers().
|
pure virtual |
Get the leaves of a graph, ie, nodes with only one neighbor, starting from a peculiar node.
| node | the starting node |
| maxDepth | the maximum number of allowed depth. |
Implemented in bpp::GlobalGraph.
Get all the neighbors of a node in the graph.
| node | the node one wants to get its neighbors |
Implemented in bpp::GlobalGraph.
Get nodes located at the extremities of an edge
Implemented in bpp::GlobalGraph.
|
pure virtual |
Get the number of edges in the graph.
Implemented in bpp::GlobalGraph.
|
pure virtual |
Get the number of incoming neighbors of a node (ie the number of fathers) in the graph.
| node | the node one wants to count its fathers |
Implemented in bpp::GlobalGraph.
Referenced by bpp::DAGraphImpl< GraphImpl >::removeFather().
|
pure virtual |
Get the number of neighbors of a node in the graph.
| node | the node one wants to count its sons |
Implemented in bpp::GlobalGraph.
|
pure virtual |
Get the number of nodes in the graph.
Implemented in bpp::GlobalGraph.
|
pure virtual |
Get the number of outgoing neighbors of a node (ie the number of sons) in the graph.
| node | the node one wants to count its sons |
Implemented in bpp::GlobalGraph.
In an directed graph, get all the edges which are leaving a node in the graph.
| node | the node one wants to get its edges |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
In an directed graph, get all the neighbors which are leaving a node in the graph.
| node | the node one wants to get its neighbors |
Implemented in bpp::GlobalGraph.
|
pure virtual |
get the root node
Implemented in bpp::GlobalGraph.
Referenced by bpp::TreeGraphImpl< GraphImpl >::MRCA(), and ~Graph().
|
pure virtual |
Implemented in bpp::GlobalGraph.
Get node located at the top of an edge
Implemented in bpp::GlobalGraph.
|
pure virtual |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
Implemented in bpp::GlobalGraph.
|
pure virtual |
Is the graph directed acyclic?
Implemented in bpp::GlobalGraph.
|
pure virtual |
Is the graph directed?
Implemented in bpp::GlobalGraph.
|
pure virtual |
Says if a node is a leaf (ie has at most one neighbor).
Implemented in bpp::GlobalGraph, bpp::TreeGraphImpl< GraphImpl >, bpp::DAGraphImpl< GraphImpl >, and bpp::TreeGraph.
|
pure virtual |
Is the graph a tree?
Implemented in bpp::GlobalGraph.
Creates a link between two existing nodes. If directed graph: nodeA -> nodeB.
| nodeA | source node (or first node if undirected) |
| nodeB | target node (or second node if undirected) |
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
protectedpure virtual |
Sets a link between two existing nodes, using existing edge. If directed graph: nodeA -> nodeB.
| nodeA | source node (or first node if undirected) |
| nodeB | target node (or second node if undirected) |
| edgeID | the used edge |
Implemented in bpp::GlobalGraph.
|
pure virtual |
Make the graph directed
Please note that the resulting directions are totaly arbritrary. One might consider to use the makeLocalRoot method.
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
pure virtual |
Make the graph directed
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
protectedpure virtual |
Trigger E objects deleting on the observers
| edgesToDelete | list of edges to delete |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
protectedpure virtual |
Trigger N objects deleting on the observers
| nodesToDelete | list of edges to delete |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
Orientates the graph hanging from the root
Implemented in bpp::GlobalGraph.
|
pure virtual |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
Implemented in bpp::GlobalGraph.
|
pure virtual |
Output the graph in DOT format
| out | a ostream where the DOT format will be output |
| name | a string naming the graph |
Implemented in bpp::GlobalGraph.
Referenced by bpp::Graph::EdgeIterator::~EdgeIterator().
|
pure virtual |
Attach a new observer to this Graph. As a subscriber, the observer will be warned of all the changes.
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
protectedpure virtual |
set the root node to an existing node. Will not affect the topology.
| newRoot | the new root |
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
Remove all links between two existing nodes. If directed graph: nodeA -> nodeB.
| nodeA | source node (or first node if undirected) |
| nodeB | target node (or second node if undirected) |
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
pure virtual |
Detach an observer from this Graph. The observer will not be warned of changes anymore.
Implemented in bpp::GlobalGraph.
Referenced by ~Graph().
|
friend |