SNAP Library, User Reference  2012-10-15 15:06:59
SNAP, a general purpose network analysis and graph mining library
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
TBiConVisitor Class Reference

#include <cncom.h>

List of all members.

Public Member Functions

 TBiConVisitor ()
 TBiConVisitor (const int &Nodes)
void DiscoverNode (int NId)
void FinishNode (const int &NId)
void ExamineEdge (const int &NId1, const int &NId2)
void TreeEdge (const int &NId1, const int &NId2)
void BackEdge (const int &NId1, const int &NId2)
void FwdEdge (const int &NId1, const int &NId2)

Public Attributes

THash< TInt, TIntPrVnLowH
THash< TInt, TIntParentH
TSStack< TIntPrStack
TCnComV CnComV
TIntSet NSet
TInt Time

Detailed Description

Biconnected componetns Depth-First-Search visitor class.

Definition at line 178 of file cncom.h.


Constructor & Destructor Documentation

Definition at line 187 of file cncom.h.

{ }
TBiConVisitor::TBiConVisitor ( const int &  Nodes) [inline]

Definition at line 188 of file cncom.h.

: VnLowH(Nodes), ParentH(Nodes), Stack(Nodes) { }

Member Function Documentation

void TBiConVisitor::BackEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 207 of file cncom.h.

                                                  {
    if (ParentH.IsKey(NId1) && ParentH.GetDat(NId1)!=NId2) {
      Stack.Push(TIntPr(NId1, NId2));
      VnLowH.GetDat(NId1).Val2 = TMath::Mn(VnLowH.GetDat(NId1).Val2, VnLowH.GetDat(NId2).Val1); } }
void TBiConVisitor::DiscoverNode ( int  NId) [inline]

Definition at line 189 of file cncom.h.

{ Time++; VnLowH.AddDat(NId, TIntPr(Time, Time)); }
void TBiConVisitor::ExamineEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 203 of file cncom.h.

{ }
void TBiConVisitor::FinishNode ( const int &  NId) [inline]

Definition at line 190 of file cncom.h.

                                  {
    if (! ParentH.IsKey(NId)) { return; }  const int Prn = ParentH.GetDat(NId);
    VnLowH.GetDat(Prn).Val2 = TMath::Mn(VnLowH.GetDat(Prn).Val2, VnLowH.GetDat(NId).Val2);
    if (VnLowH.GetDat(NId).Val2 >= VnLowH.GetDat(Prn).Val1) {
      NSet.Clr(false);
      while (! Stack.Empty() && Stack.Top() != TIntPr(Prn, NId)) {
        const TIntPr& Top = Stack.Top();
        NSet.AddKey(Top.Val1);  NSet.AddKey(Top.Val2); Stack.Pop();  }
      if (! Stack.Empty()) {
        const TIntPr& Top = Stack.Top();
        NSet.AddKey(Top.Val1);  NSet.AddKey(Top.Val2); Stack.Pop(); }
      TIntV NIdV; NSet.GetKeyV(NIdV);  NIdV.Sort();
      CnComV.Add(NIdV); } }
void TBiConVisitor::FwdEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 211 of file cncom.h.

{ }
void TBiConVisitor::TreeEdge ( const int &  NId1,
const int &  NId2 
) [inline]

Definition at line 204 of file cncom.h.

                                                  {
    ParentH.AddDat(NId2, NId1);
    Stack.Push(TIntPr(NId1, NId2)); }

Member Data Documentation

Definition at line 183 of file cncom.h.

Definition at line 184 of file cncom.h.

Definition at line 181 of file cncom.h.

Definition at line 182 of file cncom.h.

Definition at line 185 of file cncom.h.

Definition at line 180 of file cncom.h.


The documentation for this class was generated from the following file: