void GLCM::GLCMloop(ItemSet P, BinaryMatrix& res, vector< vector< pair<int,int> > > G1Item, const vector<BinaryMatrix *> & vBM, string freType, string so , std::ostream &output, int & resFre, bool printTSsFlag) { if ((P.size() != 0) && (resFre < _threshold)) { return; } if (P.size() != 0) { if (resFre != G1Item[0].size()){ dumpItemset(output,P,resFre); nbIS++; if (printTSsFlag){ list<TransactionSequence> TSl; TSl.clear(); TSl = buildTSList(res); dumpTSs(output,TSl); } } } int k = 0; int core_i = -1; if (P.size() != 0) core_i = P.getCore_i(); if ((core_i % 2 != 0) || core_i == -1) k = core_i; else k = core_i + 1; BinaryMatrix calGBM(vBM[0]->getSize()); int G1ItemSize = G1Item.size(); for (int i = k + 1; i < G1ItemSize; i++) { ItemSet P1 = P.addItemwCore_i(i); if (P != P1) { calGBM = (*vBM[i]); if (res.getSize() != 0) calGBM &= res; int resourceFre = 0; ItemSet Q = calF(&calGBM,G1Item,vBM,freType,resourceFre); if (Q.size() != 0) { Q.setCore_i(P1.getCore_i()); if (Q.prefixEqual(P1)) { GLCMloop(Q, calGBM, G1Item, vBM, freType, so, output, resourceFre, printTSsFlag); } } } } }