Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members

trie.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           trie.h  -  description
00003                              -------------------
00004     begin                : cs dec 26 2002
00005     copyright            : (C) 2002 by Ferenc Bodon
00006     email                : bodon@mit.bme.hu
00007  ***************************************************************************/
00008 
00009 #ifndef TRIE_H
00010 #define TRIE_H
00011 
00012 #define LIN_SEARCH_THRESHOLD 9
00013 
00014 
00018 typedef unsigned long itemtype;
00019 //typedef unsigned short itemtype;
00020 
00021 #include <fstream>
00022 #include <iostream>
00023 #include <set>
00024 #include <vector>
00025 #include <cstdio>
00026 using namespace std;
00027 
00036 class Trie {
00037 protected:
00044   vector< vector<itemtype> > itemarray;
00050   vector< vector<unsigned long> > statearray;
00055     vector<unsigned long> countervector;
00056     vector<unsigned long> parent;
00057 
00062   vector< vector<unsigned long> > temp_counter_array;
00067   vector<itemtype> maxpath;
00071   vector<itemtype> orderarray;
00073   vector<itemtype> inv_orderarray;
00074 
00076   virtual void max_path_set(const unsigned long state_index);
00077 
00079   virtual void delete_edge(const unsigned long from_state, const unsigned long to_state);
00080 
00081 
00083   virtual void add_empty_state(const unsigned long from_state, const itemtype item, const unsigned long counter=0);
00084 
00086   virtual unsigned long is_included(const set<itemtype>& an_itemset) const;
00087 
00088 
00090   bool is_all_subset_frequent(const set<itemtype>& maybe_candidate) const;
00091 
00093   void candidate_generation_two();
00094 
00096   virtual void candidate_generation_assist(unsigned long actual_state,const itemtype frequent_size, const itemtype actual_sizet,set<itemtype>& maybe_candidate);
00097 
00099 
00102   void find_candidate_one(const vector<itemtype>& basket);
00103 
00105 
00109   void find_candidate_two(const vector<itemtype>& basket, const unsigned long counter=1);
00110 
00112   virtual void find_candidate_more(const vector<itemtype>& basket,const itemtype candidate_size,vector<itemtype>::const_iterator it_basket,const unsigned long actual_state,const itemtype actual_size, const unsigned long counter=1);
00113 
00115   virtual void delete_infrequent_one(const unsigned long min_occurrence);
00116 
00118   virtual void delete_infrequent_two(const unsigned long min_occurrence);
00119 
00121   virtual void delete_infrequent_more(const unsigned long min_occurrence);
00122   void assoc_rule_find(ofstream& outcomefile, const double min_conf,set<itemtype>& condition_part, set<itemtype>& consequence_part, const unsigned long union_support) const;
00123   virtual void assoc_rule_assist(ofstream& outcomefile, const double min_conf,unsigned long actual_state, set<itemtype>& consequence_part) const;
00124 
00126   virtual void write_content_to_file_assist(ofstream& outcomefile, const unsigned long actual_state,const itemtype item_size,const itemtype actual_size,set<itemtype>& frequent_itemset) const;
00127 
00128 public:
00129   Trie();
00131   void candidate_generation(const itemtype& frequent_size);
00132 
00134   void find_candidate(const vector<itemtype>& basket,const itemtype candidate_size, const unsigned long counter=1);
00135 
00137   void delete_infrequent(const unsigned long min_occurrence);
00138 
00140   void association(ofstream& outcomefile, const double min_conf) const;
00141 
00143   void basket_recode(vector<itemtype>& basket) const;
00144 
00146   unsigned long node_number() const;
00147 
00149   virtual void statistics() const;
00150 
00152   void write_content_to_file(ofstream& outcomefile) const;
00153 
00155   virtual void show_content() const;
00156 
00157   virtual ~Trie();
00158 };
00159 
00160 #endif

Generated on Sun Dec 21 12:05:37 2003 for APRIORI algorithm by doxygen 1.3.4