📄 apriori__trie_8cpp-source.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>APRIORI algorithm: Apriori_Trie.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>Apriori_Trie.cpp</h1><a href="Apriori__Trie_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 <span class="comment">/***************************************************************************</span>00002 <span class="comment"> Apriori_Trie.cpp - description</span>00003 <span class="comment"> -------------------</span>00004 <span class="comment"> begin : cs dec 26 2002</span>00005 <span class="comment"> copyright : (C) 2002 by Ferenc Bodon</span>00006 <span class="comment"> email : bodon@cs.bme.hu</span>00007 <span class="comment"> ***************************************************************************/</span>00008 00009 00010 <span class="preprocessor">#include "<a class="code" href="Apriori__Trie_8hpp.html">Apriori_Trie.hpp</a>"</span>00011 <span class="preprocessor">#include <cstdlib></span>00012 <span class="preprocessor">#include <algorithm></span>00013 <span class="preprocessor">#include <iostream></span>00014 00015 <a name="l00020"></a><a class="code" href="classApriori__Trie.html#a1">00020</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#a1">Apriori_Trie::insert_frequent_items</a>(00021 <span class="keyword">const</span> vector<countertype>& counters )00022 {00023 <span class="keywordflow">for</span>(vector<countertype>::size_type item_index = 0; 00024 item_index < counters.size(); item_index++)00025 <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#d0">add_empty_state</a>( item_index, counters[item_index] );00026 }00027 <a name="l00032"></a><a class="code" href="classApriori__Trie.html#a2">00032</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#a2">Apriori_Trie::candidate_generation</a>( 00033 <span class="keyword">const</span> itemtype& frequent_size,00034 <a class="code" href="classInput__Output__Manager.html">Input_Output_Manager</a>& input_output_manager )00035 {00036 <span class="keywordflow">if</span>( frequent_size == 1 ) <a class="code" href="classApriori__Trie.html#b1">candidate_generation_two</a>();00037 <span class="keywordflow">else</span>00038 {00039 set<itemtype> maybe_candidate;00040 <a class="code" href="classApriori__Trie.html#b2">candidate_generation_assist</a>( &<a class="code" href="classApriori__Trie.html#p0">main_trie</a>,00041 maybe_candidate, 00042 input_output_manager );00043 }00044 }00045 <a name="l00053"></a><a class="code" href="classApriori__Trie.html#a3">00053</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#a3">Apriori_Trie::find_candidate</a>( <span class="keyword">const</span> vector<itemtype>& basket, 00054 <span class="keyword">const</span> itemtype candidate_size, 00055 <span class="keyword">const</span> countertype counter_incr)00056 {00057 <span class="keywordflow">if</span>( candidate_size != 2 ) 00058 <span class="keywordflow">if</span> ( candidate_size<basket.size()+1 )00059 <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#a2">find_candidate</a>( basket.end()-candidate_size+1, 00060 basket.begin(), counter_incr );00061 <span class="keywordflow">else</span>;00062 <span class="keywordflow">else</span> <a class="code" href="classApriori__Trie.html#b3">find_candidate_two</a>( basket, counter_incr ); 00063 }00064 <a name="l00069"></a><a class="code" href="classApriori__Trie.html#a4">00069</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#a4">Apriori_Trie::delete_infrequent</a>( <span class="keyword">const</span> <span class="keywordtype">double</span> min_occurrence, 00070 <span class="keyword">const</span> itemtype candidate_size )00071 {00072 <span class="keywordflow">if</span>( candidate_size != 2 ) 00073 <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#a3">delete_infrequent</a>( min_occurrence );00074 <span class="keywordflow">else</span> <a class="code" href="classApriori__Trie.html#b4">delete_infrequent_two</a>( min_occurrence );00075 }00076 00077 <a name="l00082"></a><a class="code" href="classApriori__Trie.html#b0">00082</a> <span class="keywordtype">bool</span> <a class="code" href="classApriori__Trie.html#b0">Apriori_Trie::is_all_subset_frequent</a>( 00083 <span class="keyword">const</span> set<itemtype>& maybe_candidate )<span class="keyword"> const</span>00084 <span class="keyword"></span>{00085 <span class="keywordflow">if</span>( maybe_candidate.size() < 3) <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// because of the </span>00086 <span class="comment">// candidate generation method!</span>00087 <span class="keywordflow">else</span>00088 {00089 set<itemtype> temp_itemset(maybe_candidate);00090 set<itemtype>::const_iterator item_it = --(--maybe_candidate.end());00091 <span class="keywordflow">do</span>00092 {00093 item_it--;00094 temp_itemset.erase( *item_it );00095 <span class="keywordflow">if</span>( !<a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#a1">is_included</a>( temp_itemset, temp_itemset.begin() ) ) 00096 <span class="keywordflow">return</span> <span class="keyword">false</span>;00097 temp_itemset.insert( *item_it );00098 }00099 <span class="keywordflow">while</span> ( item_it != maybe_candidate.begin() );00100 <span class="keywordflow">return</span> <span class="keyword">true</span>;00101 }00102 }00103 <a name="l00104"></a><a class="code" href="classApriori__Trie.html#b1">00104</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#b1">Apriori_Trie::candidate_generation_two</a>()00105 {00106 <span class="keywordflow">if</span>( !<a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.empty() )00107 {00108 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>.reserve(<a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size()-1);00109 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>.resize(<a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size()-1);00110 <span class="keywordflow">for</span>( vector<Edge>::size_type stateIndex = 0; 00111 stateIndex < <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size()-1; stateIndex++ )00112 {00113 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[stateIndex].reserve(00114 <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size()-1-stateIndex );00115 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[stateIndex].resize(00116 <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size()-1-stateIndex, 0);00117 }00118 }00119 }00120 <a name="l00121"></a><a class="code" href="classApriori__Trie.html#b2">00121</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#b2">Apriori_Trie::candidate_generation_assist</a>( 00122 <a class="code" href="classTrie.html">Trie</a>* trie, 00123 set<itemtype>& maybe_candidate,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -