int gSpan::support_counts(Projected& projected) { std::map<UINT,UINT> counts; for(Projected::iterator cur = projected.begin(); cur!=projected.end(); ++cur) counts[cur->id]+=1; int total=0; for(std::map<UINT,UINT> :: iterator it = counts.begin(); it!=counts.end(); it++) { total += (*it).second; } return total; }
std::set<int> gSpan::total_occurance(Projected& projected) { std::set<int> total; for(Projected::iterator cur = projected.begin(); cur!= projected.end(); ++cur) { total.insert(cur->id); //std::cout <<" From: " << edge->from << " To: " << edge->to << " ELabel: " << edge->elabel << endl; // edge = edge-> // } } return total; }
UINT gSpan::support (Projected& projected) { UINT oid = 0xffffffff; UINT size = 0; //Graph g(directed); //DFS_CODE.toGraph(g); //g.write(); for(Projected::iterator cur=projected.begin(); cur!=projected.end(); ++cur) { //std::cout << "Support Cur id: "<< cur->id << "Edge: From: " << cur->edge->from << " To: " << cur->edge->to << " Elabel: " << cur->edge->elabel << std::endl; if(oid!=cur->id) ++size; oid = cur->id; } return size; }
void gSpan::report(Projected& projected,UINT sup) { if(maxpat_max > maxpat_min && DFS_CODE.nodeCount() > maxpat_max) return; //*os << maxpat_min << ":" << DFS_CODE.nodeCount() << ":" << maxpat_min << std::endl; if(maxpat_min > 0 && DFS_CODE.nodeCount() < maxpat_min) return; if(where) { #ifdef DEBUG /* *os<<"<pattern>\n"; *os<<"<id>"<<ID<<"</id>\n"; *os<<"<support>"<<sup<<"</support>\n"; *os<<"<what>"; fos<<"<pattern>\n"; fos<<"<id>"<<ID<<"</id>\n"; fos<<"<support>"<<sup<<"</support>\n"; fos<<"<what>"; */ // *os << "where = " << where << " enc = " << enc << endl; #endif *os << "t # " << ID << " " << sup << endl; } if(!enc) { Graph g(directed); #ifdef DEBUG // std::cout << "in report g.size = " << g.size() << endl; // std::cout << "in report g.edge_size = " << g.edge_size() << endl; // std::cout << "in report g.vertex_size = " << g.vertex_size() << endl; #endif DFS_CODE.toGraph(g); if(!where) *os << "t # " << ID << " * " << sup;//fos << "t # " << ID << " * " << sup; //*os << "\n"; //fos << "\n"; g.write(*os); //g.write(fos); } else { if(!where) *os << "<" << ID << "> " << sup << " ["; DFS_CODE.write (*os); if(!where) *os << "]"; } if(where) { /* *os << "</what>\n<where>"; fos << "</what>\n<where>"; */ *os << "x "; UINT oid = 0xffffffff; for(Projected::iterator cur = projected.begin(); cur != projected.end(); ++cur) { if(oid != cur->id) { if(cur!=projected.begin()) *os<< " "; fos<< " "; *os<<cur->id; fos<<cur->id; } oid = cur->id; } /* *os << "</where>\n</pattern>"; fos << "</where>\n</pattern>"; */ } *os<<"\n"; //fos<<"\n"; ++ID; }