📄 apriori__trie_8cpp-source.html
字号:
00124 <a class="code" href="classInput__Output__Manager.html">Input_Output_Manager</a>& input_output_manager)00125 {00126 vector<Edge>::iterator itEdge = trie-><a class="code" href="classTrie.html#r1">edgevector</a>.begin();00127 <span class="keywordflow">if</span>( (*itEdge).subtrie->edgevector.empty() )00128 {00129 vector<Edge>::iterator itEdge2;00130 <a class="code" href="classTrie.html">Trie</a>* toExtend;00131 <span class="keywordflow">while</span>( itEdge != trie-><a class="code" href="classTrie.html#r1">edgevector</a>.end() )00132 {00133 maybe_candidate.insert((*itEdge).label);00134 toExtend = (*itEdge).subtrie;00135 input_output_manager.<a class="code" href="classInput__Output__Manager.html#a5">write_out_basket_and_counter</a>( 00136 maybe_candidate, toExtend-><a class="code" href="classTrie.html#r0">counter</a> );00137 <span class="keywordflow">for</span>( itEdge2 = itEdge + 1; itEdge2 != trie-><a class="code" href="classTrie.html#r1">edgevector</a>.end(); 00138 itEdge2++ )00139 {00140 maybe_candidate.insert( (*itEdge2).label );00141 <span class="keywordflow">if</span>( <a class="code" href="classApriori__Trie.html#b0">is_all_subset_frequent</a>( maybe_candidate) )00142 toExtend-><a class="code" href="classTrie.html#d0">add_empty_state</a>( (*itEdge2).label );00143 maybe_candidate.erase( (*itEdge2).label );00144 }00145 <span class="comment">// we know that state toExtend </span>00146 <span class="comment">// will not have any more children!</span>00147 (vector<Edge>(toExtend-><a class="code" href="classTrie.html#r1">edgevector</a>)).swap(toExtend-><a class="code" href="classTrie.html#r1">edgevector</a>); 00148 00149 maybe_candidate.erase((*itEdge).label);00150 <span class="keywordflow">if</span>( toExtend-><a class="code" href="classTrie.html#r1">edgevector</a>.empty() ) 00151 {00152 <span class="keyword">delete</span> (*itEdge).subtrie;00153 itEdge = trie-><a class="code" href="classTrie.html#r1">edgevector</a>.erase(itEdge);00154 }00155 <span class="keywordflow">else</span> itEdge++;00156 }00157 }00158 <span class="keywordflow">else</span>00159 {00160 <span class="keywordflow">while</span>( itEdge != trie-><a class="code" href="classTrie.html#r1">edgevector</a>.end() )00161 {00162 00163 maybe_candidate.insert((*itEdge).label);00164 <a class="code" href="classApriori__Trie.html#b2">candidate_generation_assist</a>((*itEdge).subtrie, 00165 maybe_candidate, input_output_manager );00166 maybe_candidate.erase((*itEdge).label);00167 <span class="keywordflow">if</span>((*itEdge).subtrie->edgevector.empty())00168 {00169 <span class="keyword">delete</span> (*itEdge).subtrie;00170 itEdge = trie-><a class="code" href="classTrie.html#r1">edgevector</a>.erase(itEdge);00171 }00172 <span class="keywordflow">else</span> itEdge++;00173 }00174 }00175 }00176 <a name="l00183"></a><a class="code" href="classApriori__Trie.html#b3">00183</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#b3">Apriori_Trie::find_candidate_two</a>( <span class="keyword">const</span> vector<itemtype>& basket, 00184 <span class="keyword">const</span> countertype counter )00185 {00186 <span class="keywordflow">if</span>( basket.size() > 1)00187 {00188 vector<itemtype>::const_iterator it1_basket,00189 it2_basket;00190 00191 <span class="keywordflow">for</span>( it1_basket = basket.begin(); it1_basket != basket.end()-1; 00192 it1_basket++)00193 <span class="keywordflow">for</span>( it2_basket = it1_basket+1; it2_basket != basket.end(); 00194 it2_basket++)00195 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[*it1_basket][*it2_basket-*it1_basket-1] 00196 += counter;00197 }00198 }00199 <a name="l00203"></a><a class="code" href="classApriori__Trie.html#b4">00203</a> <span class="keywordtype">void</span> <a class="code" href="classApriori__Trie.html#b4">Apriori_Trie::delete_infrequent_two</a>( <span class="keyword">const</span> <span class="keywordtype">double</span> min_occurrence )00204 {00205 vector<Edge>::size_type stateIndex_1,00206 stateIndex_2;00207 <span class="keywordflow">for</span>( stateIndex_1 = 0; stateIndex_1 < <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size()-1; 00208 stateIndex_1++ )00209 {00210 <span class="keywordflow">for</span>( stateIndex_2 = 0; 00211 stateIndex_2 < <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.size() - 1 - stateIndex_1; 00212 stateIndex_2++ )00213 {00214 <span class="keywordflow">if</span>( <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[stateIndex_1][stateIndex_2] > min_occurrence )00215 <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>[stateIndex_1].subtrie-><a class="code" href="classTrie.html#d0">add_empty_state</a>( 00216 stateIndex_1 + stateIndex_2 + 1, 00217 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[stateIndex_1][stateIndex_2] );00218 }00219 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[stateIndex_1].clear();00220 vector<countertype>().swap(<a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>[stateIndex_1]); 00222 }00223 <a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>.clear();00224 00225 vector< vector<countertype> >().swap(<a class="code" href="classApriori__Trie.html#p1">temp_counter_array</a>); 00227 vector<Edge>::iterator it= <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.begin();00228 <span class="keywordflow">while</span>( it!=<a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.end() )00229 <span class="keywordflow">if</span>((*it).subtrie->edgevector.empty())00230 {00231 <span class="keyword">delete</span> (*it).subtrie;00232 it = <a class="code" href="classApriori__Trie.html#p0">main_trie</a>.<a class="code" href="classTrie.html#r1">edgevector</a>.erase(it);00233 }00234 <span class="keywordflow">else</span> it++;00235 }</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Mar 11 14:48:06 2005 for APRIORI algorithm by <a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.3.9.1 </small></address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -