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

OneByOneSupportCounterANDTransactionFiltering.hpp

Go to the documentation of this file.
00001 #ifndef OneByOneSupportCounterANDTransactionFiltering_HPP
00002 #define OneByOneSupportCounterANDTransactionFiltering_HPP
00003 
00004 #include "common.hpp"
00005 #include <vector>
00006 //#include <cstdio>
00007 //#include <iterator>   //for test
00008 
00009 
00010 
00016 template <class DATA_STRUCTURE, class TR, class SC = Dummy>
00017 class OneByOneSupportCounterANDTransactionFiltering
00018 {
00019    private:
00020 
00021       DATA_STRUCTURE& data_structure;
00022       TR& transaction_reader;
00023       SC support_counter;
00024 
00025    public:
00026       OneByOneSupportCounterANDTransactionFiltering( DATA_STRUCTURE& data_structure,
00027                                                      TR& transaction_reader) :
00028          data_structure(data_structure), 
00029          transaction_reader(transaction_reader){}
00030       void countSupport(const unsigned int candidate_size);      
00031 };
00032 
00033 template <class DATA_STRUCTURE, class TR, class SC> inline void 
00034 OneByOneSupportCounterANDTransactionFiltering<DATA_STRUCTURE, TR, SC>::
00035 countSupport(const unsigned int candidate_size )
00036 {
00037    assert( candidate_size > 2 );
00038    transaction_reader.rewind();
00039    transaction_reader.setCandidateSize(candidate_size);
00040    std::vector<unsigned int> filter(transaction_reader.getLargestItem() + 1, 0);
00041    std::vector<item_t> transaction;
00042    counter_t multiplicity;
00043    if( (multiplicity = transaction_reader.nextTransactionBIS(
00044               transaction)) !=0)
00045    {
00046       support_counter.updateCounters(
00047          data_structure, transaction, 
00048          candidate_size, multiplicity, filter);
00049       while( (multiplicity = transaction_reader.nextTransactionBIS_modifyPrevious(
00050                  transaction, filter)) !=0 )
00051       {
00052          support_counter.updateCounters(
00053             data_structure, transaction, 
00054             candidate_size, multiplicity, filter);
00055       }
00056    }
00057 
00058 
00059 }
00060 #endif

Generated on Sun Sep 17 17:50:39 2006 for FIM environment by  doxygen 1.4.4