ransaction &tr) { length = tr.length; t = new int[tr.length]; for(int i=0; i< length; i++) t[i] = tr.t[i]; } Data::Data(char *filename, int t) { fn = filename; type = t; current=0; if(type>1) in = fopen(fn,"rt"); else in = fopen(fn,"rb"); } Data::~Data() { if(in) fclose(in); } Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 74 Transaction *Data::getNext() { Transaction *t=0; switch(type) { case 1: t= getNextBin(); break; case 2: t= getNextAs(); break; case 3: t= getNextAsFlat(); break; case 4: t= getNextAsQuest(); break; } if(t) current++; else { rewind(in); current=0; } return t; } Transaction *Data::getNextAs() { Transaction *t; int tid, item, i; vector list; static int cur=0,prev=-1; static bool begin=true; if(feof(in)) { begin=true; prev=-1; return 0; } if(!begin) { list.push_back(cur); } else begin=false; while(true) { int dummy; fscanf(in, "%d %d %d",&dummy, &tid, &item); //fscanf(in, "%d %d", &tid, &item); if(feof(in)) { int size=list.size(); t = new Transaction(size); for(i=0; it[i] = list[i]; list.clear(); return t; } else if(prev= '0') && (c begin(); it != children>end(); it++) { deleted += it->deleteChildren(); } delete children; children = 0; deleted++; } return deleted; } /* File: AprioriRules.cpp */ #include #include #include #include #include #include using namespace std; #include "Item.h" #include "AprioriRules.h" AprioriRules::AprioriRules() { data=0; minconf=0; maxhead=0; trie = new Item(0); verbose = false; } AprioriRules::~AprioriRules() { if(data) fclose(data); if(trie) { trie->deleteChildren(); delete trie; } } void AprioriRules::setData(char *fn) { Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 77 data = fopen(fn,"rt"); } int AprioriRules::setOutputRules(char *fn) { rulesout.open(fn); if(!rulesout.is_open()) { cerr find(Item(t->t[depth])); if(it == items->end()) it = items->insert(Item(t>t[depth])).first; items = it->makeChildren(); } if(t->length) it->Increment(t->support); else trie->Increment(t->support); size = (t->length>size? t->length: size); delete t; } Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn 78 if(verbose) cout getSupport()))/(float(runner->getSupport())*float(it>getSupport())); float conf = float(sup)/float(it->getSupport()); if(conf>=minconf) { for(i=0; i