DGtal
2.2.0
Toggle main menu visibility
Loading...
Searching...
No Matches
DistanceBreadthFirstVisitor.h
1
16
17
#pragma once
18
30
31
#if defined(DistanceBreadthFirstVisitor_RECURSES)
32
#error Recursive header files inclusion detected in DistanceBreadthFirstVisitor.h
33
#else
// defined(DistanceBreadthFirstVisitor_RECURSES)
35
#define DistanceBreadthFirstVisitor_RECURSES
36
37
#if !defined DistanceBreadthFirstVisitor_h
39
#define DistanceBreadthFirstVisitor_h
40
42
// Inclusions
43
#include <iostream>
44
#include <queue>
45
#include "DGtal/base/Common.h"
46
#include "DGtal/base/ConstAlias.h"
47
#include "DGtal/base/CountedPtr.h"
48
#include "DGtal/graph/CUndirectedSimpleLocalGraph.h"
50
51
namespace
DGtal
52
{
53
55
// template class DistanceBreadthFirstVisitor
202
template
<
typename
TGraph,
203
typename
TVertexFunctor,
204
typename
TMarkSet =
typename
TGraph::VertexSet >
205
class
DistanceBreadthFirstVisitor
206
{
207
// ----------------------- Associated types ------------------------------
208
public
:
209
typedef
DistanceBreadthFirstVisitor<TGraph,TVertexFunctor,TMarkSet>
Self
;
210
typedef
TGraph
Graph
;
211
typedef
TVertexFunctor
VertexFunctor
;
212
typedef
TMarkSet
MarkSet
;
213
typedef
typename
Graph::Size
Size
;
214
typedef
typename
Graph::Vertex
Vertex
;
215
typedef
typename
VertexFunctor::Value
Scalar
;
216
typedef
Scalar
Data
;
217
218
// Cannot check this since some types using it are incomplete.
219
// BOOST_CONCEPT_ASSERT(( CUndirectedSimpleLocalGraph< Graph > ));
220
// BOOST_CONCEPT_ASSERT(( CSet< MarkSet, Vertex > ));
221
222
// ----------------------- defined types ------------------------------
223
public
:
224
229
struct
Node
:
public
std::pair< Vertex, Scalar >
230
{
231
typedef
std::pair< Vertex, Scalar >
Base
;
232
using
Base::first;
233
using
Base::second;
234
235
inline
Node
() =
default
;
236
inline
Node
(
const
Vertex
& v,
Scalar
d )
237
:
std
::pair<
Vertex
,
Scalar
>( v, d )
238
{}
239
inline
bool
operator<
(
const
Node
& other )
const
240
{
241
return
other.second < second;
242
}
243
inline
bool
operator<=
(
const
Node
& other )
const
244
{
245
return
other.second <= second;
246
}
247
inline
bool
operator==
(
const
Node
& other )
const
248
{
249
return
other.second == second;
250
}
251
inline
bool
operator!=
(
const
Node
& other )
const
252
{
253
return
other.second != second;
254
}
255
};
256
258
typedef
std::priority_queue< Node >
NodeQueue
;
260
typedef
std::vector< Vertex >
VertexList
;
261
262
// ----------------------- Standard services ------------------------------
263
public
:
264
268
~DistanceBreadthFirstVisitor
();
269
274
DistanceBreadthFirstVisitor
(
const
DistanceBreadthFirstVisitor
& other );
275
276
285
DistanceBreadthFirstVisitor
(
ConstAlias<Graph>
graph
,
286
const
VertexFunctor
& distance,
287
const
Vertex
& p );
288
302
template
<
typename
VertexIterator>
303
DistanceBreadthFirstVisitor
(
const
Graph
&
graph
,
304
const
VertexFunctor
& distance,
305
VertexIterator b, VertexIterator e );
306
307
311
const
Graph
&
graph
()
const
;
312
313
// ----------------------- traversal services ------------------------------
314
public
:
315
323
const
Node &
current
()
const
;
324
340
template
<
typename
TBackInsertionSequence>
341
void
getCurrentLayer
( TBackInsertionSequence & layer );
342
350
void
ignore
();
351
360
void
ignoreLayer
();
361
367
void
expand
();
368
374
void
expandLayer
();
375
387
template
<
typename
VertexPredicate>
388
void
expand
(
const
VertexPredicate & authorized_vtx );
389
401
template
<
typename
VertexPredicate>
402
void
expandLayer
(
const
VertexPredicate & authorized_vtx );
403
407
bool
finished
()
const
;
408
416
void
terminate
();
417
423
const
MarkSet
&
markedVertices
()
const
;
424
437
MarkSet
visitedVertices
()
const
;
438
445
void
pushAgain
(
const
Node & node );
446
447
453
void
swap
(
DistanceBreadthFirstVisitor
& other );
454
455
// ----------------------- Interface --------------------------------------
456
public
:
457
462
void
selfDisplay
( std::ostream & out )
const
;
463
468
bool
isValid
()
const
;
469
470
// ------------------------- Protected Data ------------------------------
471
private
:
472
// ------------------------- Private Data --------------------------------
473
private
:
474
478
const
Graph
*
myGraph
;
479
483
VertexFunctor
myDistance
;
484
490
MarkSet
myMarkedVertices
;
491
496
NodeQueue
myQueue
;
497
498
// ------------------------- Hidden services ------------------------------
499
protected
:
500
505
DistanceBreadthFirstVisitor
();
506
507
private
:
508
515
DistanceBreadthFirstVisitor
&
operator=
(
const
DistanceBreadthFirstVisitor
& other );
516
517
// ------------------------- Internals ------------------------------------
518
private
:
519
520
};
// end of class DistanceBreadthFirstVisitor
521
522
529
template
<
typename
TGraph,
typename
TVertexFunctor,
typename
TMarkSet >
530
std::ostream&
531
operator<<
( std::ostream & out,
532
const
DistanceBreadthFirstVisitor<TGraph,TVertexFunctor,TMarkSet>
&
object
);
533
534
}
// namespace DGtal
535
536
538
// Includes inline functions.
539
#include "DGtal/graph/DistanceBreadthFirstVisitor.ih"
540
541
// //
543
544
#endif
// !defined DistanceBreadthFirstVisitor_h
545
546
#undef DistanceBreadthFirstVisitor_RECURSES
547
#endif
// else defined(DistanceBreadthFirstVisitor_RECURSES)
DGtal::ConstAlias
Aim: This class encapsulates its parameter class so that to indicate to the user that the object/poin...
Definition
ConstAlias.h:187
DGtal::DigitalSurface< ExplicitSurfaceContainer >::Size
KSpace::Size Size
Definition
DigitalSurface.h:179
DGtal::DigitalSurface< ExplicitSurfaceContainer >::Vertex
Surfel Vertex
Definition
DigitalSurface.h:177
DGtal::DistanceBreadthFirstVisitor
Aim: This class is useful to perform an exploration of a graph given a starting point or set (called ...
Definition
DistanceBreadthFirstVisitor.h:206
DGtal::DistanceBreadthFirstVisitor::finished
bool finished() const
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::myMarkedVertices
MarkSet myMarkedVertices
Definition
DistanceBreadthFirstVisitor.h:490
DGtal::DistanceBreadthFirstVisitor::ignore
void ignore()
DGtal::DistanceBreadthFirstVisitor::visitedVertices
MarkSet visitedVertices() const
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::Size
Graph::Size Size
Definition
DistanceBreadthFirstVisitor.h:213
DGtal::DistanceBreadthFirstVisitor::DistanceBreadthFirstVisitor
DistanceBreadthFirstVisitor(ConstAlias< Graph > graph, const VertexFunctor &distance, const Vertex &p)
DGtal::DistanceBreadthFirstVisitor::markedVertices
const MarkSet & markedVertices() const
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::VertexFunctor
VertexFunctor VertexFunctor
Definition
DistanceBreadthFirstVisitor.h:211
DGtal::DistanceBreadthFirstVisitor::DistanceBreadthFirstVisitor
DistanceBreadthFirstVisitor(const DistanceBreadthFirstVisitor &other)
DGtal::DistanceBreadthFirstVisitor::pushAgain
void pushAgain(const Node &node)
DGtal::DistanceBreadthFirstVisitor::DistanceBreadthFirstVisitor
DistanceBreadthFirstVisitor(const Graph &graph, const VertexFunctor &distance, VertexIterator b, VertexIterator e)
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::graph
const Graph & graph() const
DGtal::DistanceBreadthFirstVisitor::getCurrentLayer
void getCurrentLayer(TBackInsertionSequence &layer)
DGtal::DistanceBreadthFirstVisitor::~DistanceBreadthFirstVisitor
~DistanceBreadthFirstVisitor()
DGtal::DistanceBreadthFirstVisitor::operator=
DistanceBreadthFirstVisitor & operator=(const DistanceBreadthFirstVisitor &other)
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::myDistance
VertexFunctor myDistance
Definition
DistanceBreadthFirstVisitor.h:483
DGtal::DistanceBreadthFirstVisitor::expand
void expand()
DGtal::DistanceBreadthFirstVisitor::expandLayer
void expandLayer(const VertexPredicate &authorized_vtx)
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::VertexList
std::vector< Vertex > VertexList
Definition
DistanceBreadthFirstVisitor.h:260
DGtal::DistanceBreadthFirstVisitor::terminate
void terminate()
DGtal::DistanceBreadthFirstVisitor::current
const Node & current() const
DGtal::DistanceBreadthFirstVisitor::isValid
bool isValid() const
DGtal::DistanceBreadthFirstVisitor::expandLayer
void expandLayer()
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::Scalar
VertexFunctor::Value Scalar
Definition
DistanceBreadthFirstVisitor.h:215
DGtal::DistanceBreadthFirstVisitor::selfDisplay
void selfDisplay(std::ostream &out) const
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::NodeQueue
std::priority_queue< Node > NodeQueue
Definition
DistanceBreadthFirstVisitor.h:258
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::myQueue
NodeQueue myQueue
Definition
DistanceBreadthFirstVisitor.h:496
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::Graph
Surface Graph
Definition
DistanceBreadthFirstVisitor.h:210
DGtal::DistanceBreadthFirstVisitor::swap
void swap(DistanceBreadthFirstVisitor &other)
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::Self
DistanceBreadthFirstVisitor< Surface, VertexFunctor, typename Surface::VertexSet > Self
Definition
DistanceBreadthFirstVisitor.h:209
DGtal::DistanceBreadthFirstVisitor::ignoreLayer
void ignoreLayer()
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::Data
Scalar Data
Definition
DistanceBreadthFirstVisitor.h:216
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::myGraph
const Graph * myGraph
Definition
DistanceBreadthFirstVisitor.h:478
DGtal::DistanceBreadthFirstVisitor::expand
void expand(const VertexPredicate &authorized_vtx)
DGtal::DistanceBreadthFirstVisitor::DistanceBreadthFirstVisitor
DistanceBreadthFirstVisitor()
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::Vertex
Graph::Vertex Vertex
Definition
DistanceBreadthFirstVisitor.h:214
DGtal::DistanceBreadthFirstVisitor< Surface, VertexFunctor >::MarkSet
typename Surface::VertexSet MarkSet
Definition
DistanceBreadthFirstVisitor.h:212
DGtal
DGtal is the top-level namespace which contains all DGtal functions and types.
Definition
ClosedIntegerHalfPlane.h:49
DGtal::operator<<
std::ostream & operator<<(std::ostream &out, const ClosedIntegerHalfPlane< TSpace > &object)
std
STL namespace.
DGtal::DistanceBreadthFirstVisitor::Node::Base
std::pair< Vertex, Scalar > Base
Definition
DistanceBreadthFirstVisitor.h:231
DGtal::DistanceBreadthFirstVisitor::Node::operator<=
bool operator<=(const Node &other) const
Definition
DistanceBreadthFirstVisitor.h:243
DGtal::DistanceBreadthFirstVisitor::Node::operator==
bool operator==(const Node &other) const
Definition
DistanceBreadthFirstVisitor.h:247
DGtal::DistanceBreadthFirstVisitor::Node::operator!=
bool operator!=(const Node &other) const
Definition
DistanceBreadthFirstVisitor.h:251
DGtal::DistanceBreadthFirstVisitor::Node::Node
Node(const Vertex &v, Scalar d)
Definition
DistanceBreadthFirstVisitor.h:236
DGtal::DistanceBreadthFirstVisitor::Node::Node
Node()=default
DGtal::DistanceBreadthFirstVisitor::Node::operator<
bool operator<(const Node &other) const
Definition
DistanceBreadthFirstVisitor.h:239
src
DGtal
graph
DistanceBreadthFirstVisitor.h
Generated on
for DGtal by
1.18.0