void TCliqueOverlap::GetIntersection(const THashSet<TInt>& A, const THashSet<TInt>& B, THashSet<TInt>& C) { if (A.Len() < B.Len()) { for (THashSetKeyI<TInt> it=A.BegI(); it<A.EndI(); it++) if (B.IsKey(it.GetKey())) C.AddKey(it.GetKey()); } else { for (THashSetKeyI<TInt> it=B.BegI(); it<B.EndI(); it++) if (A.IsKey(it.GetKey())) C.AddKey(it.GetKey()); } }
int TCliqueOverlap::Intersection(const THashSet<TInt>& A, const THashSet<TInt>& B) { int n = 0; if (A.Len() < B.Len()) { for (THashSetKeyI<TInt> it=A.BegI(); it<A.EndI(); it++) if (B.IsKey(it.GetKey())) n++; } else { for (THashSetKeyI<TInt> it=B.BegI(); it<B.EndI(); it++) if (A.IsKey(it.GetKey())) n++; } return n; }
/// Shingles by words void LSH::HashShinglesOfClusters(TQuoteBase *QuoteBase, TClusterBase *ClusterBase, TIntV& ClusterIds, TInt ShingleLen, THash<TMd5Sig, TIntV>& ShingleToClusterIds) { Err("Hashing shingles of clusters...\n"); for (int i = 0; i < ClusterIds.Len(); i++) { if (i % 1000 == 0) { fprintf(stderr, "%d out of %d completed\n", i, ClusterIds.Len()); } TCluster C; ClusterBase->GetCluster(ClusterIds[i], C); //fprintf(stderr, "%d vs. %d\n", ClusterIds[i].Val, C.GetId().Val); // Put x-word shingles into hash table; x is specified by ShingleLen parameter THashSet < TMd5Sig > CHashedShingles; GetHashedShinglesOfCluster(QuoteBase, C, ShingleLen, CHashedShingles); for (THashSet<TMd5Sig>::TIter Hash = CHashedShingles.BegI(); Hash < CHashedShingles.EndI(); Hash++) { TIntV ShingleClusterIds; if (ShingleToClusterIds.IsKey(*Hash)) { ShingleClusterIds = ShingleToClusterIds.GetDat(*Hash); } ShingleClusterIds.Add(ClusterIds[i]); ShingleToClusterIds.AddDat(*Hash, ShingleClusterIds); } } Err("Done hashing!\n"); }
int TCliqueOverlap::GetNodeIdWithMaxDeg(const THashSet<TInt>& Set) const{ int id = -1; int maxDeg = -1; // for (THashSetKeyI<TInt> it=Set.BegI(); it<Set.EndI(); it++) { int nId = it.GetKey(); int deg = m_G->GetNI(nId).GetDeg(); if (maxDeg < deg) { maxDeg=deg; id=nId; } } return id; }
int main(int argc, char *argv[]) { TStr BaseString = "/lfs/1/tmp/curis/week/QBDB.bin"; TFIn BaseFile(BaseString); TQuoteBase *QB = new TQuoteBase; TDocBase *DB = new TDocBase; QB->Load(BaseFile); DB->Load(BaseFile); TIntV QuoteIds; QB->GetAllQuoteIds(QuoteIds); int NumQuotes = QuoteIds.Len(); THash<TInt, TStrSet> PeakCounts; for (int i = 0; i < NumQuotes; i++) { TQuote CurQuote; if (QB->GetQuote(QuoteIds[i], CurQuote)) { TVec<TSecTm> Peaks; CurQuote.GetPeaks(DB, Peaks); TStr QuoteString; CurQuote.GetParsedContentString(QuoteString); TStrSet StringSet; if (PeakCounts.IsKey(Peaks.Len())) { StringSet = PeakCounts.GetDat(Peaks.Len()); } StringSet.AddKey(QuoteString); PeakCounts.AddDat(Peaks.Len(), StringSet); } } TIntV PeakCountKeys; PeakCounts.GetKeyV(PeakCountKeys); PeakCountKeys.Sort(true); for (int i = 0; i < PeakCountKeys.Len(); i++) { TStrSet CurSet = PeakCounts.GetDat(PeakCountKeys[i]); if (CurSet.Len() > 0) { printf("QUOTES WITH %d PEAKS\n", PeakCountKeys[i].Val); printf("#########################################\n"); THashSet<TStr> StringSet = PeakCounts.GetDat(PeakCountKeys[i]); for (THashSet<TStr>::TIter l = StringSet.BegI(); l < StringSet.EndI(); l++) { printf("%s\n", l.GetKey().CStr()); } printf("\n"); } } delete QB; delete DB; return 0; }
int TCliqueOverlap::MaxNbrsInCANDNodeId(const THashSet<TInt>& SUBG, const THashSet<TInt>& CAND) const{ int id = -1; int maxIntersection = -1; // for (THashSetKeyI<TInt> it=SUBG.BegI(); it<SUBG.EndI(); it++) { int nId = it.GetKey(); TUNGraph::TNodeI nIt = m_G->GetNI(nId); int deg = nIt.GetDeg(); // int curIntersection = 0; for (int i=0; i<deg; i++) { int nbrId = nIt.GetNbrNId(i); if (CAND.IsKey(nbrId)) curIntersection++; } // if (maxIntersection < curIntersection) { maxIntersection=curIntersection; id=nId; } } return id; }
///////////////////////////////////////////////// // TCommunity implementation void TCliqueOverlap::GetRelativeComplement(const THashSet<TInt>& A, const THashSet<TInt>& B, THashSet<TInt>& Complement) { for (THashSet<TInt>::TIter it=A.BegI(); it<A.EndI(); it++) { const int nId = it.GetKey(); if (!B.IsKey(nId)) Complement.AddKey(nId); } }