angel  mercurial changeset:
angel::line_graph_t Class Reference

Line graph type. More...

#include <angel_types.hpp>

Collaboration diagram for angel::line_graph_t:

List of all members.

Public Types

typedef pure_line_graph_t pure_graph_t
 Type of basic type from BGL.
typedef
pure_line_graph_t::vertex_descriptor 
edge_t
 Edge type.
typedef
pure_line_graph_t::edge_descriptor 
face_t
 Face type.
typedef boost::graph_traits
< pure_line_graph_t >
::vertex_iterator 
ei_t
 Edge iterator type.
typedef boost::graph_traits
< pure_line_graph_t >
::edge_iterator 
fi_t
 Face iterator type.
typedef boost::graph_traits
< pure_line_graph_t >
::in_edge_iterator 
ifi_t
 Iterator type of a edge's incoming faces.
typedef boost::graph_traits
< pure_line_graph_t >
::out_edge_iterator 
ofi_t
 Iterator type of a edge's outgoing faces.
typedef boost::property_map
< pure_line_graph_t,
boost::vertex_degree_t >
::const_type 
const_ed_t
 Type of property edge label for const line_graph_t.
typedef boost::property_map
< pure_line_graph_t,
boost::vertex_degree_t >::type 
ed_t
 Type of property edge label for non-const line_graph_t.
typedef boost::property_map
< pure_line_graph_t,
boost::vertex_name_t >
::const_type 
const_evn_t
typedef boost::property_map
< pure_line_graph_t,
boost::vertex_name_t >::type 
evn_t

Public Member Functions

int x () const
 Number of independent vertices.
int y () const
 Number of dependent vertices.
int v () const
 Number of all vertices, including empty.
int z () const
 Number of intermediate vertices.
 line_graph_t ()
 Default constructor.
 line_graph_t (int V_, int X_, const std::vector< edge_t > &deps)
 Constructor with vertex specification.
 line_graph_t (const c_graph_t &cg)
 Constructor that builds line graph from c-graph.
 line_graph_t (const line_graph_t &_g)
 Copy constructor.
 ~line_graph_t ()
 Destructor.
line_graph_toperator= (const line_graph_t &_g)
 Assign operator.
void swap (line_graph_t &_g)
 Swap.
enum vertex_type_t vertex_type (edge_t e) const
 Type of edge e.
void copy_properties (const line_graph_t &_g)
 Copies properties explicitly.
void clear_edges ()
 Removes edges explicitly.
void clear_graph ()
 Remove all vertices that are not connected to dependent and inpedendent vertices.
bool check () const
 Check consistency of graph.
bool is_tripartite () const
 Whether graph is tripartite.

Public Attributes

std::vector< edge_tdependents
 set of dependent vertices
const c_graph_tcgp
 Pointer to corresponding c-graph.

Private Attributes

int X
bool cons_ok

Friends

int face_elimination (face_t face, int kr, line_graph_t &lg, accu_graph_t &ac)
void unpack_graph (const graph_package_t &gp, line_graph_t &lg)

Detailed Description

Line graph type.

Type names are related to the c-graph. For instance, a vertex of the line graph is defined as edge_t (since it represent an edge). The types c_graph_t::edge_t and line_graph_t::edge_t are not compatible (see edge_vertex_name and find_edge).

Definition at line 268 of file angel_types.hpp.


Member Typedef Documentation

typedef boost::property_map<pure_line_graph_t, boost::vertex_degree_t>::const_type angel::line_graph_t::const_ed_t

Type of property edge label for const line_graph_t.

Definition at line 288 of file angel_types.hpp.

typedef boost::property_map<pure_line_graph_t, boost::vertex_name_t>::const_type angel::line_graph_t::const_evn_t

Type of edge-vertex-name property for const line_graph_t

This means an edge from line graph corresponds/belongs to an edge in c-graph, which is represented as two integers for the source and the target vertex

Definition at line 296 of file angel_types.hpp.

typedef boost::property_map<pure_line_graph_t, boost::vertex_degree_t>::type angel::line_graph_t::ed_t

Type of property edge label for non-const line_graph_t.

Definition at line 290 of file angel_types.hpp.

typedef pure_line_graph_t::vertex_descriptor angel::line_graph_t::edge_t

Edge type.

Definition at line 276 of file angel_types.hpp.

typedef boost::graph_traits<pure_line_graph_t>::vertex_iterator angel::line_graph_t::ei_t

Edge iterator type.

Definition at line 280 of file angel_types.hpp.

typedef boost::property_map<pure_line_graph_t, boost::vertex_name_t>::type angel::line_graph_t::evn_t

Type of edge-vertex-name property for non-const line_graph_t

This means an edge from line graph corresponds/belongs to an edge in c-graph, which is represented as two integers for the source and the target vertex

Definition at line 302 of file angel_types.hpp.

typedef pure_line_graph_t::edge_descriptor angel::line_graph_t::face_t

Face type.

Definition at line 278 of file angel_types.hpp.

typedef boost::graph_traits<pure_line_graph_t>::edge_iterator angel::line_graph_t::fi_t

Face iterator type.

Definition at line 282 of file angel_types.hpp.

typedef boost::graph_traits<pure_line_graph_t>::in_edge_iterator angel::line_graph_t::ifi_t

Iterator type of a edge's incoming faces.

Definition at line 284 of file angel_types.hpp.

typedef boost::graph_traits<pure_line_graph_t>::out_edge_iterator angel::line_graph_t::ofi_t

Iterator type of a edge's outgoing faces.

Definition at line 286 of file angel_types.hpp.

Type of basic type from BGL.

Definition at line 274 of file angel_types.hpp.


Constructor & Destructor Documentation

Default constructor.

Definition at line 314 of file angel_types.hpp.

angel::line_graph_t::line_graph_t ( int  V_,
int  X_,
const std::vector< edge_t > &  deps 
) [inline]

Constructor with vertex specification.

Parameters:
V_number of all vertices
X_number of independent vertices
depsset of dependent vertices

Definition at line 321 of file angel_types.hpp.

References dependents, and THROW_EXCEPT_MACRO.

Constructor that builds line graph from c-graph.

Definition at line 178 of file angel_types.cpp.

References angel::c_graph_t::dependents, angel::overall_markowitz_degree(), angel::renumber_edges(), THROW_DEBUG_EXCEPT_MACRO, angel::c_graph_t::x(), and angel::c_graph_t::y().

Here is the call graph for this function:

Copy constructor.

Definition at line 337 of file angel_types.hpp.

Destructor.

Definition at line 342 of file angel_types.hpp.

References clear_edges().

Here is the call graph for this function:


Member Function Documentation

Check consistency of graph.

Definition at line 240 of file angel_types.cpp.

Removes edges explicitly.

Note:
It seems that BGL does not remove all edges in assignment.

Definition at line 372 of file angel_types.hpp.

Referenced by operator=(), and ~line_graph_t().

Remove all vertices that are not connected to dependent and inpedendent vertices.

Definition at line 299 of file angel_types.cpp.

References angel::reachable_vertices(), and angel::relevant_vertices().

Here is the call graph for this function:

Copies properties explicitly.

Definition at line 403 of file angel_types.cpp.

Whether graph is tripartite.

Definition at line 287 of file angel_types.cpp.

References angel::dependent, angel::independent, angel::intermediate, and angel::vertex_type().

Here is the call graph for this function:

line_graph_t& angel::line_graph_t::operator= ( const line_graph_t _g) [inline]

Assign operator.

Definition at line 345 of file angel_types.hpp.

References cgp, clear_edges(), cons_ok, dependents, and X.

Here is the call graph for this function:

void angel::line_graph_t::swap ( line_graph_t _g) [inline]

Swap.

Note:
Properties not swapped properly!

Definition at line 354 of file angel_types.hpp.

References cgp, cons_ok, dependents, and X.

int angel::line_graph_t::v ( ) const [inline]

Number of all vertices, including empty.

Definition at line 308 of file angel_types.hpp.

Referenced by angel::face_elimination(), angel::operator==(), vertex_type(), angel::was_non_trivial_elimination(), and z().

Type of edge e.

Definition at line 361 of file angel_types.hpp.

References angel::dead_vertex, angel::dependent, angel::independent, angel::intermediate, angel::undefined_vertex, and v().

Here is the call graph for this function:

int angel::line_graph_t::x ( ) const [inline]

Number of independent vertices.

Definition at line 306 of file angel_types.hpp.

References X.

Referenced by angel::fmf_obj(), angel::operator==(), angel::xaif_edge_pr(), and z().

int angel::line_graph_t::y ( ) const [inline]

Number of dependent vertices.

Definition at line 307 of file angel_types.hpp.

References dependents.

Referenced by angel::operator==(), and z().

int angel::line_graph_t::z ( ) const [inline]

Number of intermediate vertices.

Definition at line 309 of file angel_types.hpp.

References v(), x(), and y().

Referenced by angel::operator==().

Here is the call graph for this function:


Friends And Related Function Documentation

int face_elimination ( line_graph_t::face_t  f,
int  kr,
line_graph_t lg,
accu_graph_t ac 
) [friend]

Eliminate face f from line graph lg

Parameters:
fthe face
kris a request for the number of a new node or the number of the absorbing the face, i.e. if face elimination inserts a new node into lg it should be number with kr and if a new node is immediately absorbed by some node k then it should be k = kr. If the request cannot be satisfied the face is not eliminated. kr = -1 means no request.
lgthe line graph
acis a container for graphs representing the accumulation code
Returns:
The number of node inserted or where the absorption took place.
void unpack_graph ( const graph_package_t &  gp,
line_graph_t lg 
) [friend]

Member Data Documentation

Pointer to corresponding c-graph.

Definition at line 311 of file angel_types.hpp.

Referenced by angel::face_elimination(), operator=(), and swap().

Definition at line 271 of file angel_types.hpp.

Referenced by angel::face_elimination(), operator=(), and swap().

set of dependent vertices

Definition at line 304 of file angel_types.hpp.

Referenced by line_graph_t(), operator=(), angel::operator==(), swap(), and y().

int angel::line_graph_t::X [private]

Definition at line 270 of file angel_types.hpp.

Referenced by operator=(), swap(), and x().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines