#include <graph_evat.h>
Public Types | |
typedef pair< int, int > | VID_PAIR |
typedef vector< VID_PAIR, ALLOC_< VID_PAIR > > | EVAT |
typedef EVAT::const_iterator | CONST_IT |
typedef EVAT::iterator | IT |
Public Member Functions | |
IT | begin () |
CONST_IT | begin () const |
IT | end () |
CONST_IT | end () const |
unsigned long int | byte_size () const |
void | write_file (ostream &output) const |
void | print () |
void | read_file (istream &input, unsigned long int size) |
VID_PAIR & | operator[] (const int &i) |
const VID_PAIR & | operator[] (const int &i) const |
void | push_back (const pair< int, int > &ids) |
bool | empty () const |
int | size () const |
Static Public Member Functions | |
template<template< typename, typename > class VAT_ST, typename VAT, template< typename > class ALLOC> | |
static void | fwd_intersect (const VAT &vat_v1, const evat &evat_v1, const evat &evat_v2, VAT &cand_vat, bool is_fwd_chain, const int &rmp_index, const int &new_edge_state, const int &tid, bool l2_eq) |
template<template< typename, typename > class VAT_ST, typename VAT, template< typename > class ALLOC> | |
static void | back_intersect (const VAT &vat_v1, const evat &evat_v1, const evat &evat_v2, VAT &cand_vat, const int &back_idx, const int &new_edge_state, const int &tid) |
Friends | |
ostream & | operator<< (ostream &, const evat< ALLOC_ > &) |
typedef vector<VID_PAIR, ALLOC_<VID_PAIR> > evat< ALLOC_ >::EVAT |
Each edge could occur multiple times in a graph
typedef pair<int, int> evat< ALLOC_ >::VID_PAIR |
Vertex ids for the two endsod edge
static void evat< ALLOC_ >::back_intersect | ( | const VAT & | vat_v1, | |
const evat< ALLOC_ > & | evat_v1, | |||
const evat< ALLOC_ > & | evat_v2, | |||
VAT & | cand_vat, | |||
const int & | back_idx, | |||
const int & | new_edge_state, | |||
const int & | tid | |||
) | [inline, static] |
Performs back-intersection of v1_evat and v2_evat; populates cand_vat with result
Similar to fwd_intersect, first determine swap_vids
static void evat< ALLOC_ >::fwd_intersect | ( | const VAT & | vat_v1, | |
const evat< ALLOC_ > & | evat_v1, | |||
const evat< ALLOC_ > & | evat_v2, | |||
VAT & | cand_vat, | |||
bool | is_fwd_chain, | |||
const int & | rmp_index, | |||
const int & | new_edge_state, | |||
const int & | tid, | |||
bool | l2_eq | |||
) | [inline, static] |
Performs forward-intersection of v1_evat and v2_evat; populates cand_vat with result; v1 is of first pattern
The next few lines determine if the vids of evat_v2 should be swapped. If the two v-lbls are distinct, then you can determine this based on new_edge_state. However, if the labels are same, then you need to check both for a match and accordingly set this flag
this is a valid fwd extension ///