⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree__vat_8h-source.html

📁 这是一个用于数据挖掘的常用算法的模板库(数据挖掘的C++模板库for UNIX)
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<a name="l00436"></a>00436     <a name="l00437"></a>00437     <span class="keywordflow">if</span>(!do_child &amp;&amp; !do_cousin) {<a name="l00438"></a>00438       cerr&lt;&lt;<span class="stringliteral">"tree_vat: neither child nor cousin intersection is valid"</span>&lt;&lt;endl;<a name="l00439"></a>00439       exit(0);<a name="l00440"></a>00440     }<a name="l00441"></a>00441     <a name="l00442"></a>00442     <span class="keywordflow">if</span>(do_cousin)<a name="l00443"></a>00443       cand_vats[0]=<span class="keyword">new</span> <a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>;<a name="l00444"></a>00444     <a name="l00445"></a>00445     <span class="keywordflow">if</span>(do_child)<a name="l00446"></a>00446       cand_vats[1]=<span class="keyword">new</span> <a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>;<a name="l00447"></a>00447     <a name="l00448"></a>00448     CONST_IT it_v1=v1-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#558534f83e54e75023f8a569ccdc7579">begin</a>(), it_v2=v2-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#558534f83e54e75023f8a569ccdc7579">begin</a>();<a name="l00449"></a>00449     <a name="l00450"></a>00450     <span class="keywordflow">while</span>(it_v1!=v1-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#0f1e9dcb63294b26f1f26a10c74c8648">end</a>() &amp;&amp; it_v2!=v2-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#0f1e9dcb63294b26f1f26a10c74c8648">end</a>()) {<a name="l00451"></a>00451       <span class="keywordflow">if</span>(it_v1-&gt;first &lt; it_v2-&gt;first) {<a name="l00452"></a>00452         it_v1++;<a name="l00453"></a>00453         <span class="keywordflow">continue</span>;<a name="l00454"></a>00454       }<a name="l00455"></a>00455       <a name="l00456"></a>00456       <span class="keywordflow">if</span>(it_v1-&gt;first &gt; it_v2-&gt;first) {<a name="l00457"></a>00457         it_v2++;<a name="l00458"></a>00458         <span class="keywordflow">continue</span>;<a name="l00459"></a>00459       }<a name="l00460"></a>00460       <a name="l00461"></a>00461       <span class="comment">// execution reaches here only if both TIDs are equal</span><a name="l00462"></a>00462       CONST_INST_IT inst_it_v1;<a name="l00463"></a>00463       CONST_INST_IT inst_it_v2;<a name="l00464"></a>00464       <a name="l00465"></a>00465       <span class="keywordflow">for</span>(inst_it_v1=it_v1-&gt;second.begin(); inst_it_v1!=it_v1-&gt;second.end(); inst_it_v1++) {<a name="l00466"></a>00466         <span class="keywordflow">if</span>(!inst_it_v1-&gt;induced())<a name="l00467"></a>00467           <span class="keywordflow">continue</span>;<a name="l00468"></a>00468         <span class="keywordflow">for</span>(inst_it_v2=it_v2-&gt;second.begin(); inst_it_v2!=it_v2-&gt;second.end(); inst_it_v2++) {<a name="l00469"></a>00469           <span class="comment">// check if same tree's same inst are being compared</span><a name="l00470"></a>00470           <span class="keywordflow">if</span>(v1==v2 &amp;&amp; it_v1==it_v2 &amp;&amp; inst_it_v1==inst_it_v2)<a name="l00471"></a>00471             <span class="keywordflow">continue</span>;<a name="l00472"></a>00472           <a name="l00473"></a>00473           <span class="comment">// cousin test</span><a name="l00474"></a>00474           <span class="keywordflow">if</span>(do_cousin &amp;&amp; cousin_test(*inst_it_v1, *inst_it_v2)) {<a name="l00475"></a>00475             <span class="keywordtype">bool</span> ind=(inst_it_v1-&gt;induced() &amp;&amp; inst_it_v2-&gt;induced());<a name="l00476"></a>00476             <a class="code" href="classtree__instance.html">INSTANCE</a> new_inst(*inst_it_v2, inst_it_v1-&gt;lower(), inst_it_v2-&gt;depth(), ind);<a name="l00477"></a>00477             <a name="l00478"></a>00478             <span class="keywordflow">if</span>(ind) {<a name="l00479"></a>00479               <span class="keywordflow">if</span>(last_itid_cousin!=it_v1-&gt;first) {<a name="l00480"></a>00480                 cand_sups[0]-&gt;incr_isup();<a name="l00481"></a>00481                 last_itid_cousin=it_v1-&gt;first;<a name="l00482"></a>00482               }<a name="l00483"></a>00483             }<a name="l00484"></a>00484             <span class="keywordflow">else</span> {<a name="l00485"></a>00485               <span class="keywordflow">if</span>(last_etid_cousin!=it_v1-&gt;first) {<a name="l00486"></a>00486                 cand_sups[0]-&gt;incr_esup();<a name="l00487"></a>00487                 last_etid_cousin=it_v1-&gt;first;<a name="l00488"></a>00488               }<a name="l00489"></a>00489             }<a name="l00490"></a>00490             <a name="l00491"></a>00491             <span class="comment">// append new pair if this tid did not exist in vat</span><a name="l00492"></a>00492             <span class="keywordflow">if</span>(cand_vats[0]-&gt;empty() || cand_vats[0]-&gt;back().first != it_v1-&gt;first) {<a name="l00493"></a>00493               VAT_ST&lt;INSTANCE, ALLOC&lt;INSTANCE&gt; &gt; new_st;<a name="l00494"></a>00494               new_st.push_back(new_inst);<a name="l00495"></a>00495               cand_vats[0]-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#c7891a49cdd7dbea2ffa3a91d7d1b5e7">push_back</a>(make_pair(it_v1-&gt;first, new_st));<a name="l00496"></a>00496             }<a name="l00497"></a>00497             <span class="keywordflow">else</span><a name="l00498"></a>00498               cand_vats[0]-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#12060b834314527188e90b5069c7b532">back</a>().second.push_back(new_inst);<a name="l00499"></a>00499           } <span class="comment">//end if cousin_test</span><a name="l00500"></a>00500           <a name="l00501"></a>00501           <span class="comment">// child test</span><a name="l00502"></a>00502           <span class="keywordflow">if</span>(do_child &amp;&amp; inst_it_v1-&gt;child_test(*inst_it_v2)) {<a name="l00503"></a>00503             <a name="l00504"></a>00504             <span class="keywordflow">if</span>(is_l2) {<a name="l00505"></a>00505               d=inst_it_v1-&gt;depth_diff(*inst_it_v2);<a name="l00506"></a>00506               iflag=(d==_diff);<a name="l00507"></a>00507             }<a name="l00508"></a>00508             <span class="keywordflow">else</span> {<a name="l00509"></a>00509               d=inst_it_v2-&gt;depth();<a name="l00510"></a>00510               iflag=(inst_it_v1-&gt;induced() &amp;&amp; (inst_it_v1-&gt;depth_diff(*inst_it_v2)==_diff));<a name="l00511"></a>00511             }<a name="l00512"></a>00512             <a name="l00513"></a>00513             <span class="keywordflow">if</span>(iflag) {<a name="l00514"></a>00514               <span class="keywordflow">if</span>(last_itid_child!=it_v1-&gt;first) {<a name="l00515"></a>00515                 cand_sups[1]-&gt;incr_isup();<a name="l00516"></a>00516                 last_itid_child=it_v1-&gt;first;<a name="l00517"></a>00517               }<a name="l00518"></a>00518             }<a name="l00519"></a>00519             <span class="keywordflow">else</span> {<a name="l00520"></a>00520               <span class="keywordflow">if</span>(last_etid_child!=it_v1-&gt;first) {<a name="l00521"></a>00521                 cand_sups[1]-&gt;incr_esup();<a name="l00522"></a>00522                 last_etid_child=it_v1-&gt;first;<a name="l00523"></a>00523               }<a name="l00524"></a>00524             }<a name="l00525"></a>00525             <a name="l00526"></a>00526             <a class="code" href="classtree__instance.html">INSTANCE</a> new_inst(*inst_it_v2, inst_it_v1-&gt;lower(), d, iflag);<a name="l00527"></a>00527             <a name="l00528"></a>00528             <span class="comment">// append new pair if this tid did not exist in vat</span><a name="l00529"></a>00529             <span class="keywordflow">if</span>(cand_vats[1]-&gt;empty() || cand_vats[1]-&gt;back().first != it_v1-&gt;first) {<a name="l00530"></a>00530               VAT_ST&lt;INSTANCE, ALLOC&lt;INSTANCE&gt; &gt; new_st;<a name="l00531"></a>00531               new_st.push_back(new_inst);<a name="l00532"></a>00532               cand_vats[1]-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#c7891a49cdd7dbea2ffa3a91d7d1b5e7">push_back</a>(make_pair(it_v1-&gt;first, new_st));<a name="l00533"></a>00533             }<a name="l00534"></a>00534             <span class="keywordflow">else</span><a name="l00535"></a>00535               cand_vats[1]-&gt;<a class="code" href="classvat_3_01TREE__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#12060b834314527188e90b5069c7b532">back</a>().second.push_back(new_inst);<a name="l00536"></a>00536             <a name="l00537"></a>00537           }<span class="comment">//end if child_test</span><a name="l00538"></a>00538           <a name="l00539"></a>00539         }<span class="comment">//end for inst_it_v2</span><a name="l00540"></a>00540         <a name="l00541"></a>00541       }<span class="comment">//end for inst_it_v1  </span><a name="l00542"></a>00542       <a name="l00543"></a>00543       <span class="comment">// advance to next tid</span><a name="l00544"></a>00544       it_v1++;<a name="l00545"></a>00545       it_v2++;<a name="l00546"></a>00546       <a name="l00547"></a>00547     }<span class="comment">//end while </span><a name="l00548"></a>00548     <a name="l00549"></a>00549     <span class="keywordflow">return</span> cand_vats;<a name="l00550"></a>00550     <a name="l00551"></a>00551   } <span class="comment">//end intersect()</span><a name="l00552"></a>00552   <a name="l00553"></a>00553   <span class="keyword">friend</span> ostream&amp; operator&lt;&lt; &lt;&gt;(ostream&amp;, <span class="keyword">const</span> VAT*);<a name="l00554"></a>00554   <a name="l00555"></a>00555  <span class="keyword">private</span>:<a name="l00556"></a>00556   IDLIST_T _idlist;<a name="l00557"></a>00557   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">int</span> _diff=1; <a name="l00562"></a>00562   pair&lt;int, VAT_ST&lt;INSTANCE, ALLOC&lt;INSTANCE&gt; &gt; &gt;&amp; back() {<a name="l00563"></a>00563     <span class="keywordflow">if</span>(empty()) {<a name="l00564"></a>00564       cerr&lt;&lt;<span class="stringliteral">"tree_vat: call to back in empty vat"</span>&lt;&lt;endl;<a name="l00565"></a>00565       exit(0);<a name="l00566"></a>00566     }<a name="l00567"></a>00567     <span class="keywordflow">return</span> _idlist.back();<a name="l00568"></a>00568   }<a name="l00569"></a>00569   <a name="l00570"></a>00570 };<span class="comment">//end class vat-induced tree</span><a name="l00571"></a>00571 <a name="l00572"></a>00572 <span class="preprocessor">#endif</span></pre></div><hr size="1"><address style="align: right;"><small>Generated on Wed Jul 26 14:01:08 2006 for DMTL by&nbsp;<a href="http://www.doxygen.org/index.html"><img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.7 </small></address></body></html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -