Rosetta
|
#include <RingDetection.hh>
Public Member Functions | |
RingDetection (const Graph &graph) | |
constructor from a graph (either GraphWithData or ConstGraph) More... | |
RingDetection * | Clone () const |
clone the object More... | |
const std::list< std::vector< size_t > > & | GetPaths () const |
Get the paths between vertices in the graph. More... | |
const utility::vector1< utility::vector1< VD > > | GetRings () const |
Get all rings in the graph. More... | |
![]() | |
template<class Vertex , class Graph > | |
bool | initialize_vertex (Vertex, Graph &) |
template<class Vertex , class Graph > | |
bool | discover_vertex (Vertex, Graph &) |
template<class Vertex , class Graph > | |
bool | examine_vertex (Vertex, Graph &) |
template<class Edge , class Graph > | |
bool | examine_edge (Edge, Graph &) |
template<class Edge , class Graph > | |
bool | tree_edge (Edge, Graph &) |
template<class Edge , class Graph > | |
bool | non_tree_edge (Edge, Graph &) |
template<class Edge , class Graph > | |
bool | gray_target (Edge, Graph &) |
template<class Edge , class Graph > | |
bool | black_target (Edge, Graph &) |
template<class Vertex , class Graph > | |
bool | finish_vertex (Vertex, Graph &) |
Private Types | |
typedef boost::graph_traits< Graph >::edge_descriptor | Edge |
typedef boost::graph_traits< Graph >::vertex_descriptor | VD |
typedef boost::graph_traits< Graph >::vertex_iterator | VIter |
typedef boost::graph_traits< Graph >::edge_iterator | EIter |
typedef boost::graph_traits< Graph >::out_edge_iterator | OutEdgeIter |
Private Member Functions | |
RingDetection () | |
default constructor - needs an initialization graph More... | |
void | Initialize (const Graph &graph) |
initialize paths_ with all edges from graph (which is either a GraphWithData or a ConstGraph) More... | |
void | Remove (const std::size_t vertex) |
Remove vertices, store new paths and rings. More... | |
std::vector< size_t > | CombinePaths (const std::size_t COMMON_vertex, const std::vector< size_t > &path_a, const std::vector< size_t > &path_b) const |
Combine two paths at their common vertex. More... | |
bool | Overlap (const std::vector< bool > &vertex_is_in_path_a, const std::vector< std::size_t > &path_b) const |
Check if two paths overlap. More... | |
void | SetupAdjacencyVector (std::vector< bool > &vertex_is_in_path, const std::vector< size_t > &path) const |
set the adjacency vector with a given path More... | |
size_t | LengthOfSmallestCycleWithVertex (const Graph &graph, const std::size_t &vertex, const std::vector< size_t > &CAN_VISIT=std::vector< size_t >()) |
LengthOfSmallestCycleWithVertex finds the length of the shortest cycle beginning at vertex. More... | |
Private Attributes | |
std::list< std::vector< size_t > > | paths_ |
paths between vertices in the graph More... | |
std::list< std::vector< size_t > > | rings_ |
rings in the graph More... | |
size_t | graph_size_ |
size of the graph More... | |
boost::unordered_map< size_t, VD > | index_to_vd_ |
boost::unordered_map< VD, size_t > | vd_to_index_ |
basic chemical Bond
name, element, certain properties and parameters from .params file
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
default constructor - needs an initialization graph
Referenced by utility::graph::RingDetection< Graph >::Clone().
|
inline |
constructor from a graph (either GraphWithData or ConstGraph)
graph | graph for exhaustive ring detection |
References utility::graph::RingDetection< Graph >::Initialize(), utility::graph::RingDetection< Graph >::paths_, and utility::graph::RingDetection< Graph >::Remove().
|
inline |
clone the object
References utility::graph::RingDetection< Graph >::RingDetection().
|
inlineprivate |
Combine two paths at their common vertex.
COMMON_vertex | vertex to join paths at |
PATH_A | first path to be combined |
PATH_B | second path to be combined |
References erraser_util::copy().
Referenced by utility::graph::RingDetection< Graph >::Remove().
|
inline |
Get the paths between vertices in the graph.
References utility::graph::RingDetection< Graph >::paths_.
|
inline |
Get all rings in the graph.
References utility::graph::RingDetection< Graph >::index_to_vd_, basic::options::OptionKeys::rings::rings, and utility::graph::RingDetection< Graph >::rings_.
|
inlineprivate |
initialize paths_ with all edges from graph (which is either a GraphWithData or a ConstGraph)
References utility::graph::RingDetection< Graph >::graph_size_, utility::graph::RingDetection< Graph >::index_to_vd_, utility::graph::RingDetection< Graph >::LengthOfSmallestCycleWithVertex(), utility::graph::RingDetection< Graph >::paths_, basic::options::OptionKeys::hotspot::target, and utility::graph::RingDetection< Graph >::vd_to_index_.
Referenced by utility::graph::RingDetection< Graph >::RingDetection().
|
inlineprivate |
LengthOfSmallestCycleWithVertex finds the length of the shortest cycle beginning at vertex.
graph | the graph in which the vertex resides |
vertex | index of the vertex to find the girth from |
CAN_VISIT | 0 if the associated vertex cannot be visited (normally vertices that are already known to be non-cyclical), non-zero if it can |
References build_jacobian::distance, utility::graph::RingDetection< Graph >::graph_size_, create_a3b_hbs::i, utility::graph::RingDetection< Graph >::index_to_vd_, max(), min(), dummy-distribution::row, subloop_histogram::size, basic::options::OptionKeys::hotspot::target, and utility::graph::RingDetection< Graph >::vd_to_index_.
Referenced by utility::graph::RingDetection< Graph >::Initialize().
|
inlineprivate |
Check if two paths overlap.
vertex_IS_IN_PATH_A | adjacency vector for path a |
PATH_B | second path to be combined |
Referenced by utility::graph::RingDetection< Graph >::Remove().
|
inlineprivate |
Remove vertices, store new paths and rings.
vertex | vertex to be removed |
References utility::graph::RingDetection< Graph >::CombinePaths(), utility::graph::RingDetection< Graph >::graph_size_, utility::graph::RingDetection< Graph >::Overlap(), SewAssembler::path_size, utility::graph::RingDetection< Graph >::paths_, utility::graph::RingDetection< Graph >::rings_, and utility::graph::RingDetection< Graph >::SetupAdjacencyVector().
Referenced by utility::graph::RingDetection< Graph >::RingDetection().
|
inlineprivate |
set the adjacency vector with a given path
vertex_IS_IN_PATH | the vector to setup such that vertex_IS_IN_PATH[ x] == true iff x is in PATH |
PATH | the path to use in setting up the adjacency vector |
References utility::graph::RingDetection< Graph >::graph_size_, and closure_error::path.
Referenced by utility::graph::RingDetection< Graph >::Remove().
|
private |
|
private |
|
private |
paths between vertices in the graph
Referenced by utility::graph::RingDetection< Graph >::GetPaths(), utility::graph::RingDetection< Graph >::Initialize(), utility::graph::RingDetection< Graph >::Remove(), and utility::graph::RingDetection< Graph >::RingDetection().
|
private |
rings in the graph
Referenced by utility::graph::RingDetection< Graph >::GetRings(), and utility::graph::RingDetection< Graph >::Remove().
|
private |