DGtal
0.6.devel
|
#include <BreadthFirstVisitor.h>
Data Structures | |
struct | ConstIterator |
struct | NodeAccessor |
struct | VertexAccessor |
Public Types | |
typedef BreadthFirstVisitor < TGraph, TMarkSet > | Self |
typedef TGraph | Graph |
typedef TMarkSet | MarkSet |
typedef Graph::Size | Size |
typedef Graph::Vertex | Vertex |
typedef std::pair< Vertex, Size > | Node |
typedef std::queue< Node > | NodeQueue |
typedef std::vector< Vertex > | VertexList |
typedef ConstIterator < VertexAccessor > | VertexConstIterator |
typedef ConstIterator < NodeAccessor > | NodeConstIterator |
Public Member Functions | |
~BreadthFirstVisitor () | |
BreadthFirstVisitor (const Graph &graph) | |
BreadthFirstVisitor (const Graph &graph, const Vertex &p) | |
template<typename VertexIterator > | |
BreadthFirstVisitor (const Graph &graph, VertexIterator b, VertexIterator e) | |
const Graph & | graph () const |
const Node & | current () const |
void | ignore () |
void | expand () |
template<typename VertexPredicate > | |
void | expand (const VertexPredicate &authorized_vtx) |
bool | finished () const |
void | terminate () |
const MarkSet & | markedVertices () const |
MarkSet | visitedVertices () const |
void | selfDisplay (std::ostream &out) const |
bool | isValid () const |
Protected Member Functions | |
BreadthFirstVisitor () |
Private Member Functions | |
BreadthFirstVisitor (const BreadthFirstVisitor &other) | |
BreadthFirstVisitor & | operator= (const BreadthFirstVisitor &other) |
Private Attributes | |
const Graph & | myGraph |
MarkSet | myMarkedVertices |
NodeQueue | myQueue |
Aim: This class is useful to perform a breadth-first exploration of a graph given a starting point or set (called initial core).
Description of template class 'BreadthFirstVisitor'
The expander implements a breadth-first algorithm on the graph of adjacencies. It can be used not only to detect connected component but also to identify the layers of the object located at a given distance of a starting set.
The core of the expander is at the beginning the set of points at distance 0. Each layer is at a different distance from the initial core. The expander move layer by layer but the user is free to navigate on each layer.
TGraph | the type of the graph (models of CUndirectedSimpleLocalGraph). |
Definition at line 94 of file BreadthFirstVisitor.h.
typedef TGraph DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Graph |
Definition at line 99 of file BreadthFirstVisitor.h.
typedef TMarkSet DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::MarkSet |
Definition at line 100 of file BreadthFirstVisitor.h.
typedef std::pair< Vertex, Size > DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Node |
Type stocking the vertex and its topological distance wrt the initial point or set.
Definition at line 113 of file BreadthFirstVisitor.h.
typedef ConstIterator<NodeAccessor> DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::NodeConstIterator |
const iterator on pair (Vertex,distance) for visiting a graph by following a breadth first traversal.
Definition at line 240 of file BreadthFirstVisitor.h.
typedef std::queue< Node > DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::NodeQueue |
Internal data structure for computing the breadth-first expansion.
Definition at line 115 of file BreadthFirstVisitor.h.
typedef BreadthFirstVisitor<TGraph,TMarkSet> DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Self |
Definition at line 98 of file BreadthFirstVisitor.h.
typedef Graph::Size DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Size |
Definition at line 101 of file BreadthFirstVisitor.h.
typedef Graph::Vertex DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::Vertex |
Definition at line 102 of file BreadthFirstVisitor.h.
typedef ConstIterator<VertexAccessor> DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::VertexConstIterator |
const iterator on Vertex for visiting a graph by following a breadth first traversal.
Definition at line 237 of file BreadthFirstVisitor.h.
typedef std::vector< Vertex > DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::VertexList |
Internal data structure for storing vertices.
Definition at line 117 of file BreadthFirstVisitor.h.
|
inline |
|
inline |
Constructor from the graph only. The visitor is in the state 'finished()'. Useful to create an equivalent of 'end()' iterator.
graph | the graph in which the breadth first traversal takes place. |
Definition at line 51 of file BreadthFirstVisitor.ih.
|
inline |
Constructor from a point. This point provides the initial core of the visitor.
graph | the graph in which the breadth first traversal takes place. |
p | any vertex of the graph. |
Definition at line 59 of file BreadthFirstVisitor.ih.
References DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myMarkedVertices, and DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myQueue.
|
inline |
Constructor from iterators. All vertices visited between the iterators should be distinct two by two. The so specified set of vertices provides the initial core of the breadth first traversal. These vertices will all have a topological distance 0.
VertexIterator | any type of single pass iterator on vertices. |
graph | the graph in which the breadth first traversal takes place. |
b | the begin iterator in a container of vertices. |
e | the end iterator in a container of vertices. |
Definition at line 70 of file BreadthFirstVisitor.ih.
References DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myMarkedVertices, and DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::myQueue.
|
protected |
Constructor. Forbidden by default (protected to avoid g++ warnings).
|
private |
Copy constructor.
other | the object to clone. Forbidden by default. |
|
inline |
NB: valid only if not 'finished()'.
Definition at line 100 of file BreadthFirstVisitor.ih.
Referenced by DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator*(), DGtal::DepthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator*(), DGtal::DepthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator==(), and DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator==().
|
inline |
Goes to the next vertex and taked into account the current vertex for determining the future vsited vertices. NB: valid only if not 'finished()'.
Definition at line 118 of file BreadthFirstVisitor.ih.
Referenced by DGtal::Object< TDigitalTopology, TDigitalSet >::computeConnectedness(), DGtal::Object< TDigitalTopology, TDigitalSet >::geodesicNeighborhood(), DGtal::Object< TDigitalTopology, TDigitalSet >::geodesicNeighborhoodInComplement(), DGtal::DepthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator++(), DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator++(), and DGtal::Object< TDigitalTopology, TDigitalSet >::writeComponents().
|
inline |
Goes to the next vertex and taked into account the current vertex for determining the future visited vertices.
VertexPredicate | a type that satisfies CPredicate on Vertex. |
authorized_vtx | the predicate that should satisfy the visited vertices. |
NB: valid only if not 'finished()'.
Definition at line 145 of file BreadthFirstVisitor.ih.
|
inline |
Definition at line 92 of file BreadthFirstVisitor.ih.
Referenced by DGtal::Object< TDigitalTopology, TDigitalSet >::computeConnectedness(), DGtal::DepthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator==(), DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::ConstIterator< TAccessor >::operator==(), and DGtal::Object< TDigitalTopology, TDigitalSet >::writeComponents().
|
inline |
Definition at line 84 of file BreadthFirstVisitor.ih.
|
inline |
Goes to the next vertex but ignores the current vertex for determining the future visited vertices. Otherwise said, no future visited vertex will have this vertex as a father.
NB: valid only if not 'finished()'.
Definition at line 109 of file BreadthFirstVisitor.ih.
|
inline |
Checks the validity/consistency of the object.
Definition at line 249 of file BreadthFirstVisitor.ih.
|
inline |
Definition at line 187 of file BreadthFirstVisitor.ih.
Referenced by DGtal::Object< TDigitalTopology, TDigitalSet >::writeComponents().
|
private |
Assignment.
other | the object to copy. |
|
inline |
Writes/Displays the object on an output stream.
out | the output stream where the object is written. |
Definition at line 235 of file BreadthFirstVisitor.ih.
|
inline |
Force termination of the breadth first traversal. 'finished()' returns 'true' afterwards and 'current()', 'expand()', 'ignore()' have no more meaning. Furthermore, 'markedVertices()' and 'visitedVertices()' both represents the set of visited vertices.
Definition at line 172 of file BreadthFirstVisitor.ih.
|
inline |
NB: computational cost is a copy of the set of marked vertices then as many deletion as the number of marked vertices yet to be visited.
Definition at line 195 of file BreadthFirstVisitor.ih.
Referenced by DGtal::Object< TDigitalTopology, TDigitalSet >::computeConnectedness().
|
private |
The graph where the traversal takes place.
Definition at line 390 of file BreadthFirstVisitor.h.
|
private |
Set representing the marked vertices: the ones that have been visited and the one that are going to be visited soon (at distance + 1).
Definition at line 397 of file BreadthFirstVisitor.h.
Referenced by DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::BreadthFirstVisitor().
|
private |
Queue storing the vertices that are the next visited ones in the breadth-first traversal of the graph.
Definition at line 403 of file BreadthFirstVisitor.h.
Referenced by DGtal::BreadthFirstVisitor< TGraph, TMarkSet >::BreadthFirstVisitor().