1 #ifndef PMPL_NEIGHBORHOOD_FINDER_METHOD_H_
2 #define PMPL_NEIGHBORHOOD_FINDER_METHOD_H_
4 #include <boost/mpl/list.hpp>
5 #include <boost/mpl/for_each.hpp>
58 typedef typename std::back_insert_iterator<std::vector<Neighbor>>
68 const bool _requireDM =
true);
76 virtual void Print(std::ostream& _os)
const override;
86 virtual
size_t&
GetK() noexcept;
93 virtual
void SetDMLabel(const std::
string& _label) noexcept;
97 virtual const std::
string&
GetDMLabel() const noexcept;
119 template <typename AbstractRoadmapType>
121 const typename AbstractRoadmapType::CfgType& _cfg,
OutputIterator _out);
136 template <typename AbstractRoadmapType>
137 bool DirectEdge(const AbstractRoadmapType* _g,
138 const typename AbstractRoadmapType::CfgType& _c,
139 const typename AbstractRoadmapType::
VID _v) const noexcept;
161 template <
typename AbstractRoadmapType>
165 const typename AbstractRoadmapType::CfgType& _cfg,
172 template <
typename AbstractRoadmapType>
177 const typename AbstractRoadmapType::CfgType& _c,
178 const typename AbstractRoadmapType::VID _v)
const noexcept {
180 const typename AbstractRoadmapType::VID vid = _g->GetVID(_c);
#define INVALID_VID
Definition: GenericStateGraph.h:23
Definition: GenericStateGraph.h:67
STAPLGraph::vertex_descriptor VID
Definition: GenericStateGraph.h:83
std::unordered_set< VID > VertexSet
Definition: GenericStateGraph.h:86
Definition: GroupCfg.h:39
Definition: GroupRoadmap.h:25
Definition: MPBaseObject.h:46
Definition: NeighborhoodFinderMethod.h:32
bool DirectEdge(const AbstractRoadmapType *_g, const typename AbstractRoadmapType::CfgType &_c, const typename AbstractRoadmapType::VID _v) const noexcept
Definition: NeighborhoodFinderMethod.h:176
virtual void Print(std::ostream &_os) const override
Definition: NeighborhoodFinderMethod.cpp:49
RoadmapType::VertexSet VertexSet
Definition: NeighborhoodFinderMethod.h:41
virtual ~NeighborhoodFinderMethod()=default
MPBaseObject::RoadmapType RoadmapType
Definition: NeighborhoodFinderMethod.h:39
MPBaseObject::GroupRoadmapType GroupRoadmapType
Definition: NeighborhoodFinderMethod.h:42
std::string m_dmLabel
The distance metric to use.
Definition: NeighborhoodFinderMethod.h:152
Type
The type of neighbors found.
Definition: NeighborhoodFinderMethod.h:50
@ RADIUS
All neighbors within a radius.
@ APPROX
Approximate nearest neighbors.
virtual void FindNeighbors(RoadmapType *const _r, const Cfg &_cfg, const VertexSet &_candidates, OutputIterator _out)=0
double m_radius
Maximum distance of closest neighbors.
Definition: NeighborhoodFinderMethod.h:150
Type m_nfType
Type of neighborhood finder.
Definition: NeighborhoodFinderMethod.h:148
RoadmapType::VID VID
Definition: NeighborhoodFinderMethod.h:40
Type GetType() const noexcept
Definition: NeighborhoodFinderMethod.cpp:61
virtual const std::string & GetDMLabel() const noexcept
Definition: NeighborhoodFinderMethod.cpp:93
size_t m_k
How many closest neighbors to find?
Definition: NeighborhoodFinderMethod.h:149
virtual size_t & GetK() noexcept
Definition: NeighborhoodFinderMethod.cpp:69
std::back_insert_iterator< std::vector< Neighbor > > OutputIterator
Output iterator for writing discovered neighbors to a container.
Definition: NeighborhoodFinderMethod.h:59
virtual void SetDMLabel(const std::string &_label) noexcept
Definition: NeighborhoodFinderMethod.cpp:85
NeighborhoodFinderMethod(const Type _type=Type::OTHER)
Definition: NeighborhoodFinderMethod.cpp:10
bool m_unconnected
Require neighbors with no direct edge.
Definition: NeighborhoodFinderMethod.h:153
virtual double & GetRadius() noexcept
Definition: NeighborhoodFinderMethod.cpp:77
MPBaseObject::GroupCfgType GroupCfgType
Definition: NeighborhoodFinderMethod.h:43