SNAP Library 2.4, Developer Reference  2015-05-11 19:40:56
SNAP, a general purpose, high performance system for analysis and manipulation of large networks
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
TUNGraph Class Reference

Undirected graph. More...

#include <graph.h>

Collaboration diagram for TUNGraph:

Classes

class  TEdgeI
 Edge iterator. Only forward iteration (operator++) is supported. More...
 
class  TNode
 
class  TNodeI
 Node iterator. Only forward iteration (operator++) is supported. More...
 

Public Types

typedef TUNGraph TNet
 
typedef TPt< TUNGraphPNet
 

Public Member Functions

 TUNGraph ()
 
 TUNGraph (const int &Nodes, const int &Edges)
 Constructor that reserves enough memory for a graph of Nodes nodes and Edges edges. More...
 
 TUNGraph (const TUNGraph &Graph)
 
 TUNGraph (TSIn &SIn)
 Constructor that loads the graph from a (binary) stream SIn. More...
 
void Save (TSOut &SOut) const
 Saves the graph to a (binary) stream SOut. More...
 
bool HasFlag (const TGraphFlag &Flag) const
 Allows for run-time checking the type of the graph (see the TGraphFlag for flags). More...
 
TUNGraphoperator= (const TUNGraph &Graph)
 
int GetNodes () const
 Returns the number of nodes in the graph. More...
 
int AddNode (int NId=-1)
 Adds a node of ID NId to the graph. More...
 
int AddNode (const TNodeI &NodeI)
 Adds a node of ID NodeI.GetId() to the graph. More...
 
int AddNode (const int &NId, const TIntV &NbrNIdV)
 Adds a node of ID NId to the graph and create edges to all nodes in vector NbrNIdV. More...
 
int AddNode (const int &NId, const TVecPool< TInt > &Pool, const int &NIdVId)
 Adds a node of ID NId to the graph and create edges to all nodes in vector NIdVId in the vector pool Pool. More...
 
void DelNode (const int &NId)
 Deletes node of ID NId from the graph. More...
 
void DelNode (const TNode &NodeI)
 Deletes node of ID NodeI.GetId() from the graph. More...
 
bool IsNode (const int &NId) const
 Tests whether ID NId is a node. More...
 
TNodeI BegNI () const
 Returns an iterator referring to the first node in the graph. More...
 
TNodeI EndNI () const
 Returns an iterator referring to the past-the-end node in the graph. More...
 
TNodeI GetNI (const int &NId) const
 Returns an iterator referring to the node of ID NId in the graph. More...
 
int GetMxNId () const
 Returns an ID that is larger than any node ID in the graph. More...
 
int GetEdges () const
 Returns the number of edges in the graph. More...
 
int AddEdge (const int &SrcNId, const int &DstNId)
 Adds an edge between node IDs SrcNId and DstNId to the graph. More...
 
int AddEdge (const TEdgeI &EdgeI)
 Adds an edge between EdgeI.GetSrcNId() and EdgeI.GetDstNId() to the graph. More...
 
void DelEdge (const int &SrcNId, const int &DstNId)
 Deletes an edge between node IDs SrcNId and DstNId from the graph. More...
 
bool IsEdge (const int &SrcNId, const int &DstNId) const
 Tests whether an edge between node IDs SrcNId and DstNId exists in the graph. More...
 
TEdgeI BegEI () const
 Returns an iterator referring to the first edge in the graph. More...
 
TEdgeI EndEI () const
 Returns an iterator referring to the past-the-end edge in the graph. More...
 
TEdgeI GetEI (const int &EId) const
 Not supported/implemented! More...
 
TEdgeI GetEI (const int &SrcNId, const int &DstNId) const
 Returns an iterator referring to edge (SrcNId, DstNId) in the graph. More...
 
int GetRndNId (TRnd &Rnd=TInt::Rnd)
 Returns an ID of a random node in the graph. More...
 
TNodeI GetRndNI (TRnd &Rnd=TInt::Rnd)
 Returns an interator referring to a random node in the graph. More...
 
void GetNIdV (TIntV &NIdV) const
 Gets a vector IDs of all nodes in the graph. More...
 
bool Empty () const
 Tests whether the graph is empty (has zero nodes). More...
 
void Clr ()
 Deletes all nodes and edges from the graph. More...
 
void Reserve (const int &Nodes, const int &Edges)
 Reserves memory for a graph of Nodes nodes and Edges edges. More...
 
void ReserveNIdDeg (const int &NId, const int &Deg)
 Reserves memory for node ID NId having Deg edges. More...
 
void Defrag (const bool &OnlyNodeLinks=false)
 Defragments the graph. More...
 
bool IsOk (const bool &ThrowExcept=true) const
 Checks the graph data structure for internal consistency. More...
 
void Dump (FILE *OutF=stdout) const
 Print the graph in a human readable form to an output stream OutF. More...
 

Static Public Member Functions

static PUNGraph New ()
 Static constructor that returns a pointer to the graph. Call: PUNGraph Graph = TUNGraph::New(). More...
 
static PUNGraph New (const int &Nodes, const int &Edges)
 Static constructor that returns a pointer to the graph and reserves enough memory for Nodes nodes and Edges edges. More...
 
static PUNGraph Load (TSIn &SIn)
 Static constructor that loads the graph from a stream SIn and returns a pointer to it. More...
 
static PUNGraph GetSmallGraph ()
 Returns a small graph on 5 nodes and 5 edges. More...
 

Private Member Functions

TNodeGetNode (const int &NId)
 
const TNodeGetNode (const int &NId) const
 

Private Attributes

TCRef CRef
 
TInt MxNId
 
TInt NEdges
 
THash< TInt, TNodeNodeH
 

Friends

class TUNGraphMtx
 
class TPt< TUNGraph >
 

Detailed Description

Undirected graph.

Node IDs can be arbitrary non-negative integers. Nodes and edges have no attributes/data associated with them. There is at most one undirected edge between a pair of nodes. Self loops (one per node) are allowed but multiple (parallel) edges are not. The undirected graph data structure is implemented using sorted adjacency lists. This means adding a node takes constant time, while adding an edge takes linear time (since adjacency list is kept sorted) in the node degree. Accessing arbitrary node takes constant time and accessing any edge takes logarithmic time in the node degree.

Definition at line 32 of file graph.h.

Member Typedef Documentation

Definition at line 35 of file graph.h.

Definition at line 34 of file graph.h.

Constructor & Destructor Documentation

TUNGraph::TUNGraph ( )
inline

Definition at line 143 of file graph.h.

Referenced by Load(), and New().

143 : CRef(), MxNId(0), NEdges(0), NodeH() { }
TInt NEdges
Definition: graph.h:137
TCRef CRef
Definition: graph.h:136
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the caller graph for this function:

TUNGraph::TUNGraph ( const int &  Nodes,
const int &  Edges 
)
inlineexplicit

Constructor that reserves enough memory for a graph of Nodes nodes and Edges edges.

Definition at line 145 of file graph.h.

References Reserve().

145 : MxNId(0), NEdges(0) { Reserve(Nodes, Edges); }
TInt NEdges
Definition: graph.h:137
TInt MxNId
Definition: graph.h:137
void Reserve(const int &Nodes, const int &Edges)
Reserves memory for a graph of Nodes nodes and Edges edges.
Definition: graph.h:252

Here is the call graph for this function:

TUNGraph::TUNGraph ( const TUNGraph Graph)
inline

Definition at line 146 of file graph.h.

146 : MxNId(Graph.MxNId), NEdges(Graph.NEdges), NodeH(Graph.NodeH) { }
TInt NEdges
Definition: graph.h:137
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138
TUNGraph::TUNGraph ( TSIn SIn)
inline

Constructor that loads the graph from a (binary) stream SIn.

Definition at line 148 of file graph.h.

148 : MxNId(SIn), NEdges(SIn), NodeH(SIn) { }
TInt NEdges
Definition: graph.h:137
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138

Member Function Documentation

int TUNGraph::AddEdge ( const int &  SrcNId,
const int &  DstNId 
)

Adds an edge between node IDs SrcNId and DstNId to the graph.

If the edge already exists return -2. If the edge was successfully added return -1. Normally the function should return an ID of the edge added but since edges in TUNGraph have no IDs we return -1. The function aborts if SrcNId or DstNId are not nodes in the graph.

Definition at line 84 of file graph.cpp.

References TVec< TVal, TSizeTy >::AddSorted(), TStr::Fmt(), GetNode(), IAssertR, IsEdge(), IsNode(), NEdges, and TUNGraph::TNode::NIdV.

Referenced by TUndirFFire::AddNodes(), TCliqueOverlap::CalculateOverlapMtx(), TSnap::GenConfModel(), TSnap::GenDegSeq(), TSnap::GenPrefAttach(), TSnap::GenRewire(), TSnap::GenSmallWorld(), TSnap::GetEgonet(), GetSmallGraph(), TSnap::GetSubGraph(), TTimeNENet::GetTriadEdges(), TAGM::RndConnectInsideCommunity(), and TNetConstraint< PGraph >::Test().

84  {
85  IAssertR(IsNode(SrcNId) && IsNode(DstNId), TStr::Fmt("%d or %d not a node.", SrcNId, DstNId).CStr());
86  if (IsEdge(SrcNId, DstNId)) { return -2; } // edge already exists
87  GetNode(SrcNId).NIdV.AddSorted(DstNId);
88  if (SrcNId!=DstNId) { // not a self edge
89  GetNode(DstNId).NIdV.AddSorted(SrcNId); }
90  NEdges++;
91  return -1; // edge id
92 }
#define IAssertR(Cond, Reason)
Definition: bd.h:265
TNode & GetNode(const int &NId)
Definition: graph.h:140
TInt NEdges
Definition: graph.h:137
TSizeTy AddSorted(const TVal &Val, const bool &Asc=true, const TSizeTy &_MxVals=-1)
Adds element Val to a sorted vector.
Definition: ds.h:1027
TIntV NIdV
Definition: graph.h:40
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202
bool IsEdge(const int &SrcNId, const int &DstNId) const
Tests whether an edge between node IDs SrcNId and DstNId exists in the graph.
Definition: graph.cpp:108

Here is the call graph for this function:

Here is the caller graph for this function:

int TUNGraph::AddEdge ( const TEdgeI EdgeI)
inline

Adds an edge between EdgeI.GetSrcNId() and EdgeI.GetDstNId() to the graph.

Definition at line 221 of file graph.h.

References AddEdge(), TUNGraph::TEdgeI::GetDstNId(), and TUNGraph::TEdgeI::GetSrcNId().

Referenced by AddEdge().

221 { return AddEdge(EdgeI.GetSrcNId(), EdgeI.GetDstNId()); }
int AddEdge(const int &SrcNId, const int &DstNId)
Adds an edge between node IDs SrcNId and DstNId to the graph.
Definition: graph.cpp:84

Here is the call graph for this function:

Here is the caller graph for this function:

int TUNGraph::AddNode ( int  NId = -1)

Adds a node of ID NId to the graph.

Returns the ID of the node being added. If NId is -1, node ID is automatically assigned. Aborts, if a node with ID NId already exists.

Definition at line 8 of file graph.cpp.

References THash< TKey, TDat, THashFunc >::AddDat(), TStr::Fmt(), IAssertR, IsNode(), TMath::Mx(), MxNId, and NodeH.

Referenced by TUndirFFire::AddNodes(), TCliqueOverlap::CalculateOverlapMtx(), TAGM::GenAGM(), TSnap::GenConfModel(), TSnap::GenDegSeq(), TSnap::GenPrefAttach(), TSnap::GenRewire(), TSnap::GenSmallWorld(), TSnap::GetEgonet(), GetSmallGraph(), TSnap::GetSubGraph(), TTimeNENet::GetTriadEdges(), and TNetConstraint< PGraph >::Test().

8  {
9  if (NId == -1) {
10  NId = MxNId; MxNId++;
11  } else {
12  IAssertR(!IsNode(NId), TStr::Fmt("NodeId %d already exists", NId));
13  MxNId = TMath::Mx(NId+1, MxNId());
14  }
15  NodeH.AddDat(NId, TNode(NId));
16  return NId;
17 }
#define IAssertR(Cond, Reason)
Definition: bd.h:265
static const T & Mx(const T &LVal, const T &RVal)
Definition: xmath.h:32
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202
TDat & AddDat(const TKey &Key)
Definition: hash.h:196

Here is the call graph for this function:

Here is the caller graph for this function:

int TUNGraph::AddNode ( const TNodeI NodeI)
inline

Adds a node of ID NodeI.GetId() to the graph.

Definition at line 173 of file graph.h.

References AddNode(), and TUNGraph::TNodeI::GetId().

Referenced by AddNode().

173 { return AddNode(NodeI.GetId()); }
int AddNode(int NId=-1)
Adds a node of ID NId to the graph.
Definition: graph.cpp:8

Here is the call graph for this function:

Here is the caller graph for this function:

int TUNGraph::AddNode ( const int &  NId,
const TIntV NbrNIdV 
)

Adds a node of ID NId to the graph and create edges to all nodes in vector NbrNIdV.

Returns the ID of the node being added. If NId is -1, node ID is automatically assigned. Aborts, if a node with ID NId already exists.

The operation can create inconsistent graphs when the neighboring nodes in NbrNIdV vector do not exist. Use TUNGraph::IsOk to check that the resulting graph is consistent after the operation.

Definition at line 20 of file graph.cpp.

References THash< TKey, TDat, THashFunc >::AddDat(), TVec< TVal, TSizeTy >::AddSorted(), TStr::Fmt(), TUNGraph::TNode::GetDeg(), GetNode(), IAssertR, TUNGraph::TNode::Id, IsNode(), TVec< TVal, TSizeTy >::Len(), TMath::Mx(), MxNId, NEdges, TUNGraph::TNode::NIdV, NodeH, and TVec< TVal, TSizeTy >::Sort().

20  {
21  int NewNId;
22  if (NId == -1) {
23  NewNId = MxNId; MxNId++;
24  } else {
25  IAssertR(! IsNode(NId), TStr::Fmt("NodeId %d already exists", NId));
26  NewNId = NId;
27  MxNId = TMath::Mx(NewNId+1, MxNId());
28  }
29  TNode& Node = NodeH.AddDat(NewNId);
30  Node.Id = NewNId;
31  Node.NIdV = NbrNIdV;
32  Node.NIdV.Sort();
33  NEdges += Node.GetDeg();
34  for (int i = 0; i < NbrNIdV.Len(); i++) {
35  GetNode(NbrNIdV[i]).NIdV.AddSorted(NewNId);
36  }
37  return NewNId;
38 }
#define IAssertR(Cond, Reason)
Definition: bd.h:265
TNode & GetNode(const int &NId)
Definition: graph.h:140
static const T & Mx(const T &LVal, const T &RVal)
Definition: xmath.h:32
TSizeTy Len() const
Returns the number of elements in the vector.
Definition: ds.h:535
TInt NEdges
Definition: graph.h:137
TSizeTy AddSorted(const TVal &Val, const bool &Asc=true, const TSizeTy &_MxVals=-1)
Adds element Val to a sorted vector.
Definition: ds.h:1027
void Sort(const bool &Asc=true)
Sorts the elements of the vector.
Definition: ds.h:1218
TInt MxNId
Definition: graph.h:137
TIntV NIdV
Definition: graph.h:40
THash< TInt, TNode > NodeH
Definition: graph.h:138
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202
TDat & AddDat(const TKey &Key)
Definition: hash.h:196

Here is the call graph for this function:

int TUNGraph::AddNode ( const int &  NId,
const TVecPool< TInt > &  Pool,
const int &  NIdVId 
)

Adds a node of ID NId to the graph and create edges to all nodes in vector NIdVId in the vector pool Pool.

Returns the ID of the node being added. If NId is -1, node ID is automatically assigned. Aborts, if a node with ID NId already exists.

The operation can create inconsistent graphs when the neighboring nodes stored in the Pool vector are not explicitly added to the graph. Use TUNGraph::IsOk to check that the resulting graph is consistent.

Definition at line 41 of file graph.cpp.

References THash< TKey, TDat, THashFunc >::AddDat(), TStr::Fmt(), TVec< TVal, TSizeTy >::GenExt(), TUNGraph::TNode::GetDeg(), TVecPool< TVal, TSizeTy >::GetValVPt(), TVecPool< TVal, TSizeTy >::GetVLen(), IAssertR, TUNGraph::TNode::Id, IsNode(), TMath::Mx(), MxNId, NEdges, TUNGraph::TNode::NIdV, NodeH, and TVec< TVal, TSizeTy >::Sort().

41  {
42  int NewNId;
43  if (NId == -1) {
44  NewNId = MxNId; MxNId++;
45  } else {
46  IAssertR(!IsNode(NId), TStr::Fmt("NodeId %d already exists", NId));
47  NewNId = NId;
48  MxNId = TMath::Mx(NewNId+1, MxNId());
49  }
50  TNode& Node = NodeH.AddDat(NewNId);
51  Node.Id = NewNId;
52  Node.NIdV.GenExt(Pool.GetValVPt(NIdVId), Pool.GetVLen(NIdVId));
53  Node.NIdV.Sort();
54  NEdges += Node.GetDeg();
55  return NewNId;
56 }
#define IAssertR(Cond, Reason)
Definition: bd.h:265
static const T & Mx(const T &LVal, const T &RVal)
Definition: xmath.h:32
TInt NEdges
Definition: graph.h:137
TVal * GetValVPt(const int &VId) const
Returns pointer to the first element of the vector with id VId.
Definition: ds.h:1617
TInt MxNId
Definition: graph.h:137
int GetVLen(const int &VId) const
Returns the number of elements in the vector with id VId.
Definition: ds.h:1615
THash< TInt, TNode > NodeH
Definition: graph.h:138
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202
TDat & AddDat(const TKey &Key)
Definition: hash.h:196

Here is the call graph for this function:

TEdgeI TUNGraph::BegEI ( ) const
inline

Returns an iterator referring to the first edge in the graph.

Definition at line 230 of file graph.h.

References BegNI(), EndNI(), TUNGraph::TNodeI::GetId(), GetNodes(), TUNGraph::TNodeI::GetOutDeg(), and TUNGraph::TNodeI::GetOutNId().

Referenced by TAGMFast::FindComsByCV(), IsOk(), and TAGMUtil::SaveGephi().

230 { TNodeI NI = BegNI(); TEdgeI EI(NI, EndNI(), 0); if (GetNodes() != 0 && (NI.GetOutDeg()==0 || NI.GetId()>NI.GetOutNId(0))) { EI++; } return EI; }
int GetNodes() const
Returns the number of nodes in the graph.
Definition: graph.h:165
TNodeI EndNI() const
Returns an iterator referring to the past-the-end node in the graph.
Definition: graph.h:206
TNodeI BegNI() const
Returns an iterator referring to the first node in the graph.
Definition: graph.h:204

Here is the call graph for this function:

Here is the caller graph for this function:

TNodeI TUNGraph::BegNI ( ) const
inline

Returns an iterator referring to the first node in the graph.

Definition at line 204 of file graph.h.

References THash< TKey, TDat, THashFunc >::BegI(), and NodeH.

Referenced by BegEI(), TSnap::TSnapDetail::TCNMQMatrix::CmtyCMN(), TLocClust::DrawWhiskers(), TAGMFit::GetEdgeJointCom(), TCliqueOverlap::GetMaximalCliques(), TSnap::TSnapDetail::TCNMQMatrix::Init(), TAGMFit::InitNodeData(), TTimeNet::PlotEffDiam(), TTimeNet::PlotMedianDegOverTm(), TTimeNet::PlotMissingPast(), TAGMUtil::SaveGephi(), TLocClust::SavePajek(), and TKronMomentsFit::TKronMomentsFit().

204 { return TNodeI(NodeH.BegI()); }
TIter BegI() const
Definition: hash.h:171
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

Here is the caller graph for this function:

void TUNGraph::Clr ( )
inline

Deletes all nodes and edges from the graph.

Definition at line 250 of file graph.h.

References THash< TKey, TDat, THashFunc >::Clr(), MxNId, NEdges, and NodeH.

250 { MxNId=0; NEdges=0; NodeH.Clr(); }
TInt NEdges
Definition: graph.h:137
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138
void Clr(const bool &DoDel=true, const int &NoDelLim=-1, const bool &ResetDat=true)
Definition: hash.h:315

Here is the call graph for this function:

void TUNGraph::Defrag ( const bool &  OnlyNodeLinks = false)

Defragments the graph.

After performing many node and edge insertions and deletions to a graph, the graph data structure will be fragmented in memory. This function compacts down the graph data structure and frees unneeded memory.

Definition at line 132 of file graph.cpp.

References THash< TKey, TDat, THashFunc >::Defrag(), THash< TKey, TDat, THashFunc >::FFirstKeyId(), THash< TKey, TDat, THashFunc >::FNextKeyId(), THash< TKey, TDat, THashFunc >::IsKeyIdEqKeyN(), NodeH, and THash< TKey, TDat, THashFunc >::Pack().

Referenced by TAGM::GenAGM(), TSnap::GenSmallWorld(), and TTimeNet::PlotMissingPast().

132  {
133  for (int n = NodeH.FFirstKeyId(); NodeH.FNextKeyId(n); ) {
134  NodeH[n].NIdV.Pack();
135  }
136  if (! OnlyNodeLinks && ! NodeH.IsKeyIdEqKeyN()) {
137  NodeH.Defrag();
138  }
139 }
bool IsKeyIdEqKeyN() const
Definition: hash.h:191
void Defrag()
Definition: hash.h:509
bool FNextKeyId(int &KeyId) const
Definition: hash.h:432
int FFirstKeyId() const
Definition: hash.h:232
THash< TInt, TNode > NodeH
Definition: graph.h:138
void Pack()
Definition: hash.h:243

Here is the call graph for this function:

Here is the caller graph for this function:

void TUNGraph::DelEdge ( const int &  SrcNId,
const int &  DstNId 
)

Deletes an edge between node IDs SrcNId and DstNId from the graph.

If the edge (SrcNId, DstNId) does not exist in the graph function still completes. But the function aborts if SrcNId or DstNId are not nodes in the graph.

Definition at line 95 of file graph.cpp.

References TVec< TVal, TSizeTy >::Del(), TStr::Fmt(), GetNode(), IAssertR, IsNode(), NEdges, TUNGraph::TNode::NIdV, and TVec< TVal, TSizeTy >::SearchBin().

Referenced by TSnap::GenDegSeq(), and TTimeNet::PlotMissingPast().

95  {
96  IAssertR(IsNode(SrcNId) && IsNode(DstNId), TStr::Fmt("%d or %d not a node.", SrcNId, DstNId).CStr());
97  { TNode& N = GetNode(SrcNId);
98  const int n = N.NIdV.SearchBin(DstNId);
99  if (n!= -1) { N.NIdV.Del(n); NEdges--; } }
100  if (SrcNId != DstNId) { // not a self edge
101  TNode& N = GetNode(DstNId);
102  const int n = N.NIdV.SearchBin(SrcNId);
103  if (n!= -1) { N.NIdV.Del(n); }
104  }
105 }
#define IAssertR(Cond, Reason)
Definition: bd.h:265
TNode & GetNode(const int &NId)
Definition: graph.h:140
TInt NEdges
Definition: graph.h:137
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202

Here is the call graph for this function:

Here is the caller graph for this function:

void TUNGraph::DelNode ( const int &  NId)

Deletes node of ID NId from the graph.

If the node of ID NId does not exist the function aborts.

Definition at line 59 of file graph.cpp.

References AssertR, TVec< TVal, TSizeTy >::Del(), THash< TKey, TDat, THashFunc >::DelKey(), TStr::Fmt(), TUNGraph::TNode::GetDeg(), TUNGraph::TNode::GetNbrNId(), GetNode(), IAssert, IsNode(), NEdges, TUNGraph::TNode::NIdV, NodeH, and TVec< TVal, TSizeTy >::SearchBin().

59  {
60  { AssertR(IsNode(NId), TStr::Fmt("NodeId %d does not exist", NId));
61  TNode& Node = GetNode(NId);
62  NEdges -= Node.GetDeg();
63  for (int e = 0; e < Node.GetDeg(); e++) {
64  const int nbr = Node.GetNbrNId(e);
65  if (nbr == NId) { continue; }
66  TNode& N = GetNode(nbr);
67  const int n = N.NIdV.SearchBin(NId);
68  IAssert(n != -1); // if NId points to N, then N also should point back
69  if (n!= -1) { N.NIdV.Del(n); }
70  } }
71  NodeH.DelKey(NId);
72 }
#define IAssert(Cond)
Definition: bd.h:262
TNode & GetNode(const int &NId)
Definition: graph.h:140
TInt NEdges
Definition: graph.h:137
void DelKey(const TKey &Key)
Definition: hash.h:358
THash< TInt, TNode > NodeH
Definition: graph.h:138
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202
#define AssertR(Cond, Reason)
Definition: bd.h:258

Here is the call graph for this function:

void TUNGraph::DelNode ( const TNode NodeI)
inline

Deletes node of ID NodeI.GetId() from the graph.

Definition at line 200 of file graph.h.

References DelNode(), and TUNGraph::TNode::GetId().

Referenced by DelNode().

200 { DelNode(NodeI.GetId()); }
void DelNode(const int &NId)
Deletes node of ID NId from the graph.
Definition: graph.cpp:59

Here is the call graph for this function:

Here is the caller graph for this function:

void TUNGraph::Dump ( FILE *  OutF = stdout) const

Print the graph in a human readable form to an output stream OutF.

Definition at line 179 of file graph.cpp.

References THash< TKey, TDat, THashFunc >::FFirstKeyId(), THash< TKey, TDat, THashFunc >::FNextKeyId(), TUNGraph::TNode::GetDeg(), GetEdges(), TUNGraph::TNode::GetId(), TUNGraph::TNode::GetNbrNId(), GetNodes(), and NodeH.

179  {
180  const int NodePlaces = (int) ceil(log10((double) GetNodes()));
181  fprintf(OutF, "-------------------------------------------------\nUndirected Node Graph: nodes: %d, edges: %d\n", GetNodes(), GetEdges());
182  for (int N = NodeH.FFirstKeyId(); NodeH.FNextKeyId(N); ) {
183  const TNode& Node = NodeH[N];
184  fprintf(OutF, " %*d [%d] ", NodePlaces, Node.GetId(), Node.GetDeg());
185  for (int edge = 0; edge < Node.GetDeg(); edge++) {
186  fprintf(OutF, " %*d", NodePlaces, Node.GetNbrNId(edge)); }
187  fprintf(OutF, "\n");
188  }
189  fprintf(OutF, "\n");
190 }
int GetEdges() const
Returns the number of edges in the graph.
Definition: graph.cpp:74
int GetNodes() const
Returns the number of nodes in the graph.
Definition: graph.h:165
bool FNextKeyId(int &KeyId) const
Definition: hash.h:432
int FFirstKeyId() const
Definition: hash.h:232
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

bool TUNGraph::Empty ( ) const
inline

Tests whether the graph is empty (has zero nodes).

Definition at line 248 of file graph.h.

References GetNodes().

248 { return GetNodes()==0; }
int GetNodes() const
Returns the number of nodes in the graph.
Definition: graph.h:165

Here is the call graph for this function:

TEdgeI TUNGraph::EndEI ( ) const
inline

Returns an iterator referring to the past-the-end edge in the graph.

Definition at line 232 of file graph.h.

References EndNI().

Referenced by TAGMFast::FindComsByCV(), IsOk(), and TAGMUtil::SaveGephi().

232 { return TEdgeI(EndNI(), EndNI()); }
TNodeI EndNI() const
Returns an iterator referring to the past-the-end node in the graph.
Definition: graph.h:206

Here is the call graph for this function:

Here is the caller graph for this function:

TNodeI TUNGraph::EndNI ( ) const
inline

Returns an iterator referring to the past-the-end node in the graph.

Definition at line 206 of file graph.h.

References THash< TKey, TDat, THashFunc >::EndI(), and NodeH.

Referenced by BegEI(), TSnap::TSnapDetail::TCNMQMatrix::CmtyCMN(), TLocClust::DrawWhiskers(), EndEI(), TAGMFit::GetEdgeJointCom(), GetEI(), TCliqueOverlap::GetMaximalCliques(), TSnap::TSnapDetail::TCNMQMatrix::Init(), TAGMFit::InitNodeData(), TTimeNet::PlotEffDiam(), TTimeNet::PlotMedianDegOverTm(), TTimeNet::PlotMissingPast(), TAGMUtil::SaveGephi(), TLocClust::SavePajek(), and TKronMomentsFit::TKronMomentsFit().

206 { return TNodeI(NodeH.EndI()); }
TIter EndI() const
Definition: hash.h:176
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

Here is the caller graph for this function:

TEdgeI TUNGraph::GetEI ( const int &  EId) const

Not supported/implemented!

TUNGraph::TEdgeI TUNGraph::GetEI ( const int &  SrcNId,
const int &  DstNId 
) const

Returns an iterator referring to edge (SrcNId, DstNId) in the graph.

Note that since this is an undirected graph GetEI(SrcNId, DstNId) has the same effect as GetEI(DstNId, SrcNId).

Definition at line 114 of file graph.cpp.

References EndNI(), GetNI(), IAssert, TMath::Mn(), TMath::Mx(), MxNId, and TUNGraph::TNodeI::NodeHI.

114  {
115  const int MnNId = TMath::Mn(SrcNId, DstNId);
116  const int MxNId = TMath::Mx(SrcNId, DstNId);
117  const TNodeI SrcNI = GetNI(MnNId);
118  const int NodeN = SrcNI.NodeHI.GetDat().NIdV.SearchBin(MxNId);
119  IAssert(NodeN != -1);
120  return TEdgeI(SrcNI, EndNI(), NodeN);
121 }
#define IAssert(Cond)
Definition: bd.h:262
static const T & Mn(const T &LVal, const T &RVal)
Definition: xmath.h:36
static const T & Mx(const T &LVal, const T &RVal)
Definition: xmath.h:32
TInt MxNId
Definition: graph.h:137
TNodeI GetNI(const int &NId) const
Returns an iterator referring to the node of ID NId in the graph.
Definition: graph.h:208
TNodeI EndNI() const
Returns an iterator referring to the past-the-end node in the graph.
Definition: graph.h:206

Here is the call graph for this function:

int TUNGraph::GetMxNId ( ) const
inline

Returns an ID that is larger than any node ID in the graph.

Definition at line 210 of file graph.h.

References MxNId.

210 { return MxNId; }
TInt MxNId
Definition: graph.h:137
TNodeI TUNGraph::GetNI ( const int &  NId) const
inline

Returns an iterator referring to the node of ID NId in the graph.

Definition at line 208 of file graph.h.

References THash< TKey, TDat, THashFunc >::GetI(), and NodeH.

Referenced by TLocClust::ApproxPageRank(), TLocClustStat::BagOfWhiskers(), TLocClustStat::BagOfWhiskers2(), TUndirFFire::BurnGeoFire(), TLocClust::DrawWhiskers(), TLocClust::FindBestCut(), TAGMUtil::GetConductance(), TLocClust::GetCutStat(), GetEI(), TLocClustStat::TCutInfo::GetFracDegOut(), TAGMUtil::GetNbhCom(), TCliqueOverlap::GetNbrs(), TCliqueOverlap::GetNodeIdWithMaxDeg(), GetRndNI(), TAGMFast::GradientForOneVar(), TAGMFast::GradientForRow(), TCesna::GradientForRow(), TAGMFast::HessianForOneVar(), TSnap::TSnapDetail::TCNMQMatrix::Init(), TAGMFit::JoinCom(), TAGMFit::LeaveCom(), TAGMFast::LikelihoodForOneVar(), TAGMFast::LikelihoodForRow(), TCesna::LikelihoodForRow(), TCliqueOverlap::MaxNbrsInCANDNodeId(), TAGMFast::MLEGradAscent(), TAGMFast::MLEGradAscentParallel(), TCesna::MLEGradAscentParallel(), TAGMFast::MLENewton(), TAGMFast::NeighborComInit(), TAGMFit::NeighborComInit(), TCesna::NeighborComInit(), TAGMFast::RandomInit(), TAGMFit::RandomInit(), TCesna::RandomInit(), TAGMFit::SeekJoin(), TAGMFit::SeekLeave(), TAGMFit::SeekSwitch(), and TLocClust::SupportSweep().

208 { return TNodeI(NodeH.GetI(NId)); }
THash< TInt, TNode > NodeH
Definition: graph.h:138
TIter GetI(const TKey &Key) const
Definition: hash.h:178

Here is the call graph for this function:

Here is the caller graph for this function:

void TUNGraph::GetNIdV ( TIntV NIdV) const

Gets a vector IDs of all nodes in the graph.

Definition at line 125 of file graph.cpp.

References TVec< TVal, TSizeTy >::Add(), THash< TKey, TDat, THashFunc >::FFirstKeyId(), THash< TKey, TDat, THashFunc >::FNextKeyId(), TVec< TVal, TSizeTy >::Gen(), THash< TKey, TDat, THashFunc >::GetKey(), GetNodes(), and NodeH.

Referenced by TAGMFit::AddBaseCmty(), TAGMFit::CalcPNoComByCmtyVV(), TAGMFast::FindComsByCV(), TAGMUtil::GenCmtyVVFromPL(), TAGMFast::MLENewton(), TAGMFit::NeighborComInit(), TAGMFast::SetGraph(), and TCesna::SetGraph().

125  {
126  NIdV.Gen(GetNodes(), 0);
127  for (int N=NodeH.FFirstKeyId(); NodeH.FNextKeyId(N); ) {
128  NIdV.Add(NodeH.GetKey(N)); }
129 }
int GetNodes() const
Returns the number of nodes in the graph.
Definition: graph.h:165
bool FNextKeyId(int &KeyId) const
Definition: hash.h:432
int FFirstKeyId() const
Definition: hash.h:232
THash< TInt, TNode > NodeH
Definition: graph.h:138
void Gen(const TSizeTy &_Vals)
Constructs a vector (an array) of _Vals elements.
Definition: ds.h:486
TSizeTy Add()
Adds a new element at the end of the vector, after its current last element.
Definition: ds.h:559
const TKey & GetKey(const int &KeyId) const
Definition: hash.h:210

Here is the call graph for this function:

Here is the caller graph for this function:

TNode& TUNGraph::GetNode ( const int &  NId)
inlineprivate

Definition at line 140 of file graph.h.

References THash< TKey, TDat, THashFunc >::GetDat(), and NodeH.

Referenced by AddEdge(), AddNode(), DelEdge(), DelNode(), IsEdge(), and ReserveNIdDeg().

140 { return NodeH.GetDat(NId); }
const TDat & GetDat(const TKey &Key) const
Definition: hash.h:220
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

Here is the caller graph for this function:

const TNode& TUNGraph::GetNode ( const int &  NId) const
inlineprivate

Definition at line 141 of file graph.h.

References THash< TKey, TDat, THashFunc >::GetDat(), and NodeH.

141 { return NodeH.GetDat(NId); }
const TDat & GetDat(const TKey &Key) const
Definition: hash.h:220
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

int TUNGraph::GetNodes ( ) const
inline

Returns the number of nodes in the graph.

Definition at line 165 of file graph.h.

References THash< TKey, TDat, THashFunc >::Len(), and NodeH.

Referenced by TGStatVec::Add(), TUndirFFire::AddNodes(), TLocClust::ApproxPageRank(), BegEI(), TAGMFit::CalcPNoComByCmtyVV(), TUNGraphMtx::CheckNodeIds(), TLocClust::DrawWhiskers(), Dump(), Empty(), TCesna::FindComs(), TAGMUtil::FindComsByAGM(), TAGMFast::FindComsByCV(), TAGM::GenAGM(), TCesna::GenHoldOutAttr(), TAGMFast::GetCmtyVV(), TAGMFit::GetCmtyVV(), TCesna::GetCmtyVV(), TCesna::GetCmtyVVUnSorted(), TCliqueOverlap::GetCPMCommunities(), TCliqueOverlap::GetMaximalCliques(), GetNIdV(), TLocClustStat::ImposeNCP(), TAGMFit::InitNodeData(), TAGMFast::MLEGradAscent(), TCesna::MLEGradAscent(), TAGMFast::MLEGradAscentParallel(), TCesna::MLEGradAscentParallel(), TAGMFast::MLENewton(), TAGMFast::NeighborComInit(), TAGMFit::NeighborComInit(), TCesna::NeighborComInit(), TLocClustStat::ParamStr(), TUNGraphMtx::PGetCols(), TUNGraphMtx::PGetRows(), TLocClustStat::PlotBoltzmanCurve(), TTimeNet::PlotCCfOverTm(), TTimeNet::PlotEffDiam(), TTimeNet::PlotMedianDegOverTm(), TLocClustStat::PlotNCP(), TLocClustStat::PlotNCPModul(), TLocClustStat::PlotNCPScatter(), TLocClustStat::PlotNcpTop10(), TLocClustStat::PlotPhiInOut(), TAGMFast::RandomInit(), TCesna::RandomInit(), TAGMFit::RandomInitCmtyVV(), TLocClustStat::Run(), TAGMFit::RunMCMC(), TAGMFit::SampleTransition(), TLocClust::SavePajek(), TLocClustStat::SaveTxtInfo(), TAGMFast::SetCmtyVV(), TCesna::SetCmtyVV(), TAGMFit::SetDefaultPNoCom(), TAGMFast::SetGraph(), TCesna::SetGraph(), TGStat::TakeStat(), TKronMomentsFit::Test(), and TUNGraphMtx::TUNGraphMtx().

165 { return NodeH.Len(); }
THash< TInt, TNode > NodeH
Definition: graph.h:138
int Len() const
Definition: hash.h:186

Here is the call graph for this function:

Here is the caller graph for this function:

TNodeI TUNGraph::GetRndNI ( TRnd Rnd = TInt::Rnd)
inline

Returns an interator referring to a random node in the graph.

Definition at line 243 of file graph.h.

References GetNI(), and GetRndNId().

Referenced by TAGMFit::NeighborComInit().

243 { return GetNI(GetRndNId(Rnd)); }
int GetRndNId(TRnd &Rnd=TInt::Rnd)
Returns an ID of a random node in the graph.
Definition: graph.h:241
TNodeI GetNI(const int &NId) const
Returns an iterator referring to the node of ID NId in the graph.
Definition: graph.h:208

Here is the call graph for this function:

Here is the caller graph for this function:

int TUNGraph::GetRndNId ( TRnd Rnd = TInt::Rnd)
inline

Returns an ID of a random node in the graph.

Definition at line 241 of file graph.h.

References THash< TKey, TDat, THashFunc >::GetKey(), THash< TKey, TDat, THashFunc >::GetRndKeyId(), and NodeH.

Referenced by GetRndNI(), TLocClustStat::Run(), and TAGMFit::SampleTransition().

241 { return NodeH.GetKey(NodeH.GetRndKeyId(Rnd, 0.8)); }
THash< TInt, TNode > NodeH
Definition: graph.h:138
int GetRndKeyId(TRnd &Rnd) const
Get an index of a random element. If the hash table has many deleted keys, this may take a long time...
Definition: hash.h:398
const TKey & GetKey(const int &KeyId) const
Definition: hash.h:210

Here is the call graph for this function:

Here is the caller graph for this function:

PUNGraph TUNGraph::GetSmallGraph ( )
static

Returns a small graph on 5 nodes and 5 edges.

/// Graph:   3--0--4
///            /|
///           1-2
/// 

Definition at line 193 of file graph.cpp.

References AddEdge(), AddNode(), and New().

193  {
194  PUNGraph Graph = TUNGraph::New();
195  for (int i = 0; i < 5; i++) { Graph->AddNode(i); }
196  Graph->AddEdge(0,1); Graph->AddEdge(0,2);
197  Graph->AddEdge(0,3); Graph->AddEdge(0,4);
198  Graph->AddEdge(1,2);
199  return Graph;
200 }
static PUNGraph New()
Static constructor that returns a pointer to the graph. Call: PUNGraph Graph = TUNGraph::New().
Definition: graph.h:152
Definition: bd.h:196

Here is the call graph for this function:

bool TUNGraph::HasFlag ( const TGraphFlag Flag) const

Allows for run-time checking the type of the graph (see the TGraphFlag for flags).

Definition at line 3 of file graph.cpp.

References HasGraphFlag.

3  {
4  return HasGraphFlag(TUNGraph::TNet, Flag);
5 }
Undirected graph.
Definition: graph.h:32
#define HasGraphFlag(TGraph, Flag)
For quick testing of the properties of the graph/network object (see TGraphFlag). ...
Definition: gbase.h:38
bool TUNGraph::IsEdge ( const int &  SrcNId,
const int &  DstNId 
) const

Tests whether an edge between node IDs SrcNId and DstNId exists in the graph.

Definition at line 108 of file graph.cpp.

References GetNode(), TUNGraph::TNode::IsNbrNId(), and IsNode().

Referenced by AddEdge(), TAGMFit::CalcPNoComByCmtyVV(), TSnap::GenDegSeq(), TSnap::GetEgonet(), TTimeNENet::GetTriadEdges(), TCluster::Gradient(), TAGMFast::LikelihoodHoldOut(), TCesna::LikelihoodHoldOut(), TCluster::LogLikelihood(), and TCluster::MCMC().

108  {
109  if (! IsNode(SrcNId) || ! IsNode(DstNId)) return false;
110  return GetNode(SrcNId).IsNbrNId(DstNId);
111 }
TNode & GetNode(const int &NId)
Definition: graph.h:140
bool IsNbrNId(const int &NId) const
Definition: graph.h:54
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202

Here is the call graph for this function:

Here is the caller graph for this function:

bool TUNGraph::IsNode ( const int &  NId) const
inline

Tests whether ID NId is a node.

Definition at line 202 of file graph.h.

References THash< TKey, TDat, THashFunc >::IsKey(), and NodeH.

Referenced by AddEdge(), AddNode(), TUNGraphMtx::CheckNodeIds(), DelEdge(), DelNode(), TAGM::GenAGM(), TAGMUtil::GetConductance(), TLocClust::GetCutStat(), TSnap::GetEgonet(), TTimeNENet::GetTriadEdges(), IsEdge(), IsOk(), TTimeNet::PlotMissingPast(), TAGMFit::SeekLeave(), TAGMFast::SetCmtyVV(), TAGMFit::SetCmtyVV(), TAGMFast::SetGraph(), TCesna::SetGraph(), and TGraphAttributes::TGraphAttributes().

202 { return NodeH.IsKey(NId); }
THash< TInt, TNode > NodeH
Definition: graph.h:138
bool IsKey(const TKey &Key) const
Definition: hash.h:216

Here is the call graph for this function:

Here is the caller graph for this function:

bool TUNGraph::IsOk ( const bool &  ThrowExcept = true) const

Checks the graph data structure for internal consistency.

For each node in the graph check that its neighbors are also nodes in the graph.

Definition at line 142 of file graph.cpp.

References BegEI(), TStr::CStr(), EAssertR, EndEI(), ErrNotify(), THash< TKey, TDat, THashFunc >::FFirstKeyId(), TStr::Fmt(), THash< TKey, TDat, THashFunc >::FNextKeyId(), TUNGraph::TNode::GetDeg(), GetEdges(), TUNGraph::TNode::GetId(), TUNGraph::TNode::GetNbrNId(), IsNode(), TVec< TVal, TSizeTy >::IsSorted(), TUNGraph::TNode::NIdV, and NodeH.

142  {
143  bool RetVal = true;
144  for (int N = NodeH.FFirstKeyId(); NodeH.FNextKeyId(N); ) {
145  const TNode& Node = NodeH[N];
146  if (! Node.NIdV.IsSorted()) {
147  const TStr Msg = TStr::Fmt("Neighbor list of node %d is not sorted.", Node.GetId());
148  if (ThrowExcept) { EAssertR(false, Msg); } else { ErrNotify(Msg.CStr()); }
149  RetVal=false;
150  }
151  int prevNId = -1;
152  for (int e = 0; e < Node.GetDeg(); e++) {
153  if (! IsNode(Node.GetNbrNId(e))) {
154  const TStr Msg = TStr::Fmt("Edge %d --> %d: node %d does not exist.",
155  Node.GetId(), Node.GetNbrNId(e), Node.GetNbrNId(e));
156  if (ThrowExcept) { EAssertR(false, Msg); } else { ErrNotify(Msg.CStr()); }
157  RetVal=false;
158  }
159  if (e > 0 && prevNId == Node.GetNbrNId(e)) {
160  const TStr Msg = TStr::Fmt("Node %d has duplicate edge %d --> %d.",
161  Node.GetId(), Node.GetId(), Node.GetNbrNId(e));
162  if (ThrowExcept) { EAssertR(false, Msg); } else { ErrNotify(Msg.CStr()); }
163  RetVal=false;
164  }
165  prevNId = Node.GetNbrNId(e);
166  }
167  }
168  int EdgeCnt = 0;
169  for (TEdgeI EI = BegEI(); EI < EndEI(); EI++) { EdgeCnt++; }
170  if (EdgeCnt != GetEdges()) {
171  const TStr Msg = TStr::Fmt("Number of edges counter is corrupted: GetEdges():%d, EdgeCount:%d.", GetEdges(), EdgeCnt);
172  if (ThrowExcept) { EAssertR(false, Msg); } else { ErrNotify(Msg.CStr()); }
173  RetVal=false;
174  }
175  return RetVal;
176 }
TEdgeI EndEI() const
Returns an iterator referring to the past-the-end edge in the graph.
Definition: graph.h:232
int GetEdges() const
Returns the number of edges in the graph.
Definition: graph.cpp:74
void ErrNotify(const char *NotifyCStr)
Definition: bd.h:74
bool FNextKeyId(int &KeyId) const
Definition: hash.h:432
TEdgeI BegEI() const
Returns an iterator referring to the first edge in the graph.
Definition: graph.h:230
int FFirstKeyId() const
Definition: hash.h:232
Definition: dt.h:412
THash< TInt, TNode > NodeH
Definition: graph.h:138
static TStr Fmt(const char *FmtStr,...)
Definition: dt.cpp:1599
#define EAssertR(Cond, MsgStr)
Definition: bd.h:283
bool IsNode(const int &NId) const
Tests whether ID NId is a node.
Definition: graph.h:202
char * CStr()
Definition: dt.h:476

Here is the call graph for this function:

static PUNGraph TUNGraph::Load ( TSIn SIn)
inlinestatic

Static constructor that loads the graph from a stream SIn and returns a pointer to it.

Definition at line 158 of file graph.h.

References TUNGraph().

Referenced by TAGMFit::Load(), TAGMFast::Load(), and TCesna::Load().

158 { return PUNGraph(new TUNGraph(SIn)); }
TUNGraph()
Definition: graph.h:143
TPt< TUNGraph > PUNGraph
Pointer to an undirected graph (TUNGraph)
Definition: graph.h:5

Here is the call graph for this function:

Here is the caller graph for this function:

static PUNGraph TUNGraph::New ( )
inlinestatic

Static constructor that returns a pointer to the graph. Call: PUNGraph Graph = TUNGraph::New().

Definition at line 152 of file graph.h.

References TUNGraph().

Referenced by TCliqueOverlap::CalculateOverlapMtx(), TSnap::CmtyEvolutionFileBatch(), TAGM::GenAGM(), TSnap::GenConfModel(), TSnap::GenDegSeq(), TSnap::GenGeoPrefAttach(), TSnap::GenRewire(), TSnap::GenSmallWorld(), TSnap::Get1CnCom(), TSnap::Get1CnComSzCnt(), TSnap::GetEgonet(), GetSmallGraph(), TSnap::GetSubGraph(), TTimeNENet::GetTriadEdges(), TCesna::TCesna(), and TNetConstraint< PGraph >::Test().

152 { return new TUNGraph(); }
TUNGraph()
Definition: graph.h:143

Here is the call graph for this function:

Here is the caller graph for this function:

static PUNGraph TUNGraph::New ( const int &  Nodes,
const int &  Edges 
)
inlinestatic

Static constructor that returns a pointer to the graph and reserves enough memory for Nodes nodes and Edges edges.

Call: PUNGraph Graph = TUNGraph::New(Nodes, Edges).

Definition at line 156 of file graph.h.

References TUNGraph().

156 { return new TUNGraph(Nodes, Edges); }
TUNGraph()
Definition: graph.h:143

Here is the call graph for this function:

TUNGraph& TUNGraph::operator= ( const TUNGraph Graph)
inline

Definition at line 161 of file graph.h.

References MxNId, NEdges, and NodeH.

161  {
162  if (this!=&Graph) { MxNId=Graph.MxNId; NEdges=Graph.NEdges; NodeH=Graph.NodeH; } return *this; }
TInt NEdges
Definition: graph.h:137
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138
void TUNGraph::Reserve ( const int &  Nodes,
const int &  Edges 
)
inline

Reserves memory for a graph of Nodes nodes and Edges edges.

Definition at line 252 of file graph.h.

References THash< TKey, TDat, THashFunc >::Gen(), and NodeH.

Referenced by TSnap::GenConfModel(), TSnap::GenDegSeq(), TSnap::GenPrefAttach(), TSnap::GenRewire(), TSnap::GenSmallWorld(), TSnap::GetSubGraph(), and TUNGraph().

252 { if (Nodes>0) NodeH.Gen(Nodes/2); }
void Gen(const int &ExpectVals)
Definition: hash.h:180
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

Here is the caller graph for this function:

void TUNGraph::ReserveNIdDeg ( const int &  NId,
const int &  Deg 
)
inline

Reserves memory for node ID NId having Deg edges.

Definition at line 254 of file graph.h.

References GetNode(), TUNGraph::TNode::NIdV, and TVec< TVal, TSizeTy >::Reserve().

254 { GetNode(NId).NIdV.Reserve(Deg); }
TNode & GetNode(const int &NId)
Definition: graph.h:140
TIntV NIdV
Definition: graph.h:40
void Reserve(const TSizeTy &_MxVals)
Reserves enough memory for the vector to store _MxVals elements.
Definition: ds.h:506

Here is the call graph for this function:

void TUNGraph::Save ( TSOut SOut) const
inline

Saves the graph to a (binary) stream SOut.

Definition at line 150 of file graph.h.

References MxNId, NEdges, NodeH, THash< TKey, TDat, THashFunc >::Save(), and TInt::Save().

Referenced by TAGMFit::Save(), TAGMFast::Save(), and TCesna::Save().

150 { MxNId.Save(SOut); NEdges.Save(SOut); NodeH.Save(SOut); }
void Save(TSOut &SOut) const
Definition: dt.h:1058
void Save(TSOut &SOut) const
Definition: hash.h:141
TInt NEdges
Definition: graph.h:137
TInt MxNId
Definition: graph.h:137
THash< TInt, TNode > NodeH
Definition: graph.h:138

Here is the call graph for this function:

Here is the caller graph for this function:

Friends And Related Function Documentation

friend class TPt< TUNGraph >
friend

Definition at line 277 of file graph.h.

friend class TUNGraphMtx
friend

Definition at line 276 of file graph.h.

Member Data Documentation

TCRef TUNGraph::CRef
private

Definition at line 136 of file graph.h.

TInt TUNGraph::MxNId
private

Definition at line 137 of file graph.h.

Referenced by AddNode(), Clr(), GetEI(), GetMxNId(), operator=(), and Save().

TInt TUNGraph::NEdges
private

Definition at line 137 of file graph.h.

Referenced by AddEdge(), AddNode(), Clr(), DelEdge(), DelNode(), GetEdges(), operator=(), and Save().


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