| 
    SNAP Library 2.0, Developer Reference
    2013-05-13 16:33:57
    
   SNAP, a general purpose, high performance system for analysis and manipulation of large networks 
   | 
  
  
  
 
#include <gsvd.h>


Public Member Functions | |
| TUNGraphMtx (const PUNGraph &GraphPt) | |
| TUNGraphMtx (const TUNGraphMtx &GraphMtx) | |
| TUNGraphMtx & | operator= (const TUNGraphMtx &GraphMtx) | 
| int | PGetRows () const | 
| int | PGetCols () const | 
| void | PMultiply (const TFltVV &B, int ColId, TFltV &Result) const | 
| void | PMultiply (const TFltV &Vec, TFltV &Result) const | 
| void | PMultiplyT (const TFltVV &B, int ColId, TFltV &Result) const | 
| void | PMultiplyT (const TFltV &Vec, TFltV &Result) const | 
Private Member Functions | |
| bool | CheckNodeIds () | 
Private Attributes | |
| PUNGraph | Graph | 
Undirected Graph Adjacency Matrix represented as sparse {0,1} row matrix. The class is used for computing spectral properties of graph adjacency matrices. The class assumes that node IDs have the range 0...Nodes-1.
| TUNGraphMtx::TUNGraphMtx | ( | const PUNGraph & | GraphPt | ) | 
Definition at line 83 of file gsvd.cpp.
References CheckNodeIds(), TUNGraph::GetNodes(), and Graph.
: Graph() { Graph = GraphPt; if (! CheckNodeIds()) { printf(" Renumbering %d nodes....", GraphPt->GetNodes()); TExeTm ExeTm; Graph = TSnap::ConvertGraph<PUNGraph>(GraphPt, true); /*TIntSet NIdSet; for (TUNGraph::TNodeI NI = Graph->BegNI(); NI < Graph->EndNI(); NI++) { NIdSet.AddKey(NI.GetId()); } Graph = TUNGraph::New(); *Graph = *GraphPt; */ printf("done [%s]\n", ExeTm.GetStr()); } }

| TUNGraphMtx::TUNGraphMtx | ( | const TUNGraphMtx & | GraphMtx | ) |  [inline] | 
        
| bool TUNGraphMtx::CheckNodeIds | ( | ) |  [private] | 
        
Definition at line 76 of file gsvd.cpp.
References TUNGraph::GetNodes(), Graph, and TUNGraph::IsNode().
Referenced by TUNGraphMtx().
                               {
  for (int NId = 0; NId < Graph->GetNodes(); NId++) {
    if (! Graph->IsNode(NId)) { return false; }
  }
  return true;
}


| TUNGraphMtx& TUNGraphMtx::operator= | ( | const TUNGraphMtx & | GraphMtx | ) |  [inline] | 
        
| int TUNGraphMtx::PGetCols | ( | ) |  const [inline, virtual] | 
        
| int TUNGraphMtx::PGetRows | ( | ) |  const [inline, virtual] | 
        
| void TUNGraphMtx::PMultiply | ( | const TFltVV & | B, | 
| int | ColId, | ||
| TFltV & | Result | ||
| ) |  const [virtual] | 
        
Implements TMatrix.
Definition at line 99 of file gsvd.cpp.
References Assert, TMatrix::GetRows(), TVVec< TVal >::GetRows(), Graph, TVec< TVal, TSizeTy >::Len(), and TUNGraph::NodeH.
                                                                           {
  const int RowN = GetRows();
  Assert(B.GetRows() >= RowN && Result.Len() >= RowN);
  const THash<TInt, TUNGraph::TNode>& NodeH = Graph->NodeH;
  for (int j = 0; j < RowN; j++) {
    const TIntV& RowV = NodeH[j].NIdV;
    Result[j] = 0.0;
    for (int i = 0; i < RowV.Len(); i++) {
      Result[j] += B(RowV[i], ColId);
    }
  }
}

| void TUNGraphMtx::PMultiply | ( | const TFltV & | Vec, | 
| TFltV & | Result | ||
| ) |  const [virtual] | 
        
Implements TMatrix.
Definition at line 113 of file gsvd.cpp.
References Assert, TMatrix::GetRows(), Graph, TVec< TVal, TSizeTy >::Len(), and TUNGraph::NodeH.
                                                                 {
  const int RowN = GetRows();
  Assert(Vec.Len() >= RowN && Result.Len() >= RowN);
  const THash<TInt, TUNGraph::TNode>& NodeH = Graph->NodeH;
  for (int j = 0; j < RowN; j++) {
    const TIntV& RowV = NodeH[j].NIdV;
    Result[j] = 0.0;
    for (int i = 0; i < RowV.Len(); i++) {
      Result[j] += Vec[RowV[i]];
    }
  }
}

| void TUNGraphMtx::PMultiplyT | ( | const TFltVV & | B, | 
| int | ColId, | ||
| TFltV & | Result | ||
| ) |  const [virtual] | 
        
Implements TMatrix.
Definition at line 127 of file gsvd.cpp.
References Assert, TMatrix::GetCols(), TVVec< TVal >::GetRows(), Graph, TVec< TVal, TSizeTy >::Len(), and TUNGraph::NodeH.
                                                                            {
  const int ColN = GetCols();
  Assert(B.GetRows() >= ColN && Result.Len() >= ColN);
  const THash<TInt, TUNGraph::TNode>& NodeH = Graph->NodeH;
  for (int i = 0; i < ColN; i++) Result[i] = 0.0;
  for (int j = 0; j < ColN; j++) {
    const TIntV& RowV = NodeH[j].NIdV;
    for (int i = 0; i < RowV.Len(); i++) {
      Result[RowV[i]] += B(j, ColId);
    }
  }
}

| void TUNGraphMtx::PMultiplyT | ( | const TFltV & | Vec, | 
| TFltV & | Result | ||
| ) |  const [virtual] | 
        
Implements TMatrix.
Definition at line 141 of file gsvd.cpp.
References Assert, TMatrix::GetRows(), Graph, TVec< TVal, TSizeTy >::Len(), and TUNGraph::NodeH.
                                                                  {
  const int RowN = GetRows();
  Assert(Vec.Len() >= RowN && Result.Len() >= RowN);
  const THash<TInt, TUNGraph::TNode>& NodeH = Graph->NodeH;
  for (int i = 0; i < RowN; i++) Result[i] = 0.0;
  for (int j = 0; j < RowN; j++) {
    const TIntV& RowV = NodeH[j].NIdV;
    for (int i = 0; i < RowV.Len(); i++) {
      Result[RowV[i]] += Vec[j];
    }
  }
}

PUNGraph TUNGraphMtx::Graph [private] | 
        
Definition at line 31 of file gsvd.h.
Referenced by CheckNodeIds(), operator=(), PGetCols(), PGetRows(), PMultiply(), PMultiplyT(), and TUNGraphMtx().