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

📄 seq__vat_8h-source.html

📁 这是一个用于数据挖掘的常用算法的模板库(数据挖掘的C++模板库for UNIX)
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<a name="l00273"></a>00273       CONST_INST_IT it_inst;<a name="l00274"></a>00274       <span class="keywordtype">int</span> tid,inst_sz,induced,pos;<a name="l00275"></a>00275       <span class="keywordflow">for</span> (it=begin();it!=end();it++){<a name="l00276"></a>00276         tid=it-&gt;first;<a name="l00277"></a>00277         inst_sz=it-&gt;second.size();<a name="l00278"></a>00278         output.write(reinterpret_cast&lt;const char *&gt;(&amp;tid), ITSZ);<a name="l00279"></a>00279         output.write(reinterpret_cast&lt;const char *&gt;(&amp;inst_sz), ITSZ);<a name="l00280"></a>00280         <span class="keywordflow">for</span> (it_inst =it-&gt;second.begin(); it_inst!=it-&gt;second.end(); ++it_inst){<a name="l00281"></a>00281           induced=(<span class="keywordtype">int</span>)it_inst-&gt;get_induced();<a name="l00282"></a>00282           pos=it_inst-&gt;get_pos();  <a name="l00283"></a>00283           output.write(reinterpret_cast&lt;const char *&gt;(&amp;pos), ITSZ);<a name="l00284"></a>00284           output.write(reinterpret_cast&lt;const char *&gt;(&amp;induced), ITSZ);<a name="l00285"></a>00285         } <span class="comment">//for it_inst</span><a name="l00286"></a>00286       }<span class="comment">//it</span><a name="l00287"></a>00287       output_file.write(output.str().c_str(), output.str().size());<a name="l00288"></a>00288     } <span class="comment">//end write_file</span><a name="l00289"></a>00289     <a name="l00290"></a>00290     <span class="comment">//deserialize a vat from an input stream </span><a name="l00291"></a>00291     <span class="keywordtype">void</span> read_file (istream &amp; input, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <span class="keywordtype">int</span> size) {<a name="l00292"></a>00292       <span class="comment">//cout&lt;&lt;"reading from the the file"&lt;&lt;endl;</span><a name="l00293"></a>00293       <span class="keywordtype">int</span> ITSZ=<span class="keyword">sizeof</span>(int);<a name="l00294"></a>00294       <span class="keywordtype">int</span> buf_size=size/ITSZ;   <a name="l00295"></a>00295       <span class="keywordtype">int</span> *buf = <span class="keyword">new</span> <span class="keywordtype">int</span>[buf_size];<a name="l00296"></a>00296       input.read((<span class="keywordtype">char</span> *)buf, (size)); <a name="l00297"></a>00297       <span class="keywordtype">int</span> current=0;<a name="l00298"></a>00298       <span class="keywordflow">while</span>(current&lt;buf_size){<a name="l00299"></a>00299         <span class="keywordtype">int</span> tid=buf[current++];<a name="l00300"></a>00300         <span class="keywordtype">int</span> inst_sz=buf[current++];<a name="l00301"></a>00301         <span class="keywordtype">int</span> inst_end=current+inst_sz*2;<a name="l00302"></a>00302         INSTANCES new_tidlist;<a name="l00303"></a>00303         <span class="keywordflow">while</span>(current &lt;inst_end){<a name="l00304"></a>00304           new_tidlist.push_back(INSTANCE(buf[current], (buf[current+1])?<span class="keyword">true</span>:<span class="keyword">false</span>));<a name="l00305"></a>00305           current= current+2;<a name="l00306"></a>00306 <a name="l00307"></a>00307         }<a name="l00308"></a>00308         _idlist.push_back(make_pair(tid, new_tidlist));<a name="l00309"></a>00309       }      <a name="l00310"></a>00310       input.clear();<a name="l00311"></a>00311       <span class="keyword">delete</span> [] buf;      <a name="l00312"></a>00312     } <span class="comment">//read_file</span><a name="l00313"></a>00313     <a name="l00314"></a>00314     <a name="l00320"></a>00320     <span class="keyword">template</span>&lt;<span class="keyword">typename</span> PATTERN&gt;<a name="l00321"></a><a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#32faebe97f0dcbf38bbfe91e0c0a0174">00321</a>     <span class="keyword">static</span> <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>** intersection(<span class="keyword">const</span> <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>* <span class="keyword">const</span>&amp; vat_i, <span class="keyword">const</span> <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>* <span class="keyword">const</span>&amp; vat_j, <a class="code" href="classpattern__support.html">PAT_SUP</a>** cand_sups, PATTERN**, <span class="keywordtype">bool</span>&amp; is_l2) {<a name="l00322"></a>00322       <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>** cand_vats = <span class="keyword">new</span> <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>*[2]; <span class="comment">// Max of 2 candidates possible for sequence extension.</span><a name="l00323"></a>00323                        <span class="comment">// Determine how many candidate vats.</span><a name="l00324"></a>00324                        <span class="comment">// If P-&gt;A join P-&gt;A then results in only one candidate vat.</span><a name="l00325"></a>00325       <span class="keywordtype">bool</span> skip0 = (cand_sups[0] == 0);<a name="l00326"></a>00326       <span class="keywordtype">bool</span> skip1 = (cand_sups[1] == 0);   <a name="l00327"></a>00327 <a name="l00328"></a>00328       cand_vats[0] = 0;<a name="l00329"></a>00329       cand_vats[1] = 0;<a name="l00330"></a>00330 <a name="l00331"></a>00331       <span class="keywordflow">if</span> (!skip0)<a name="l00332"></a>00332         cand_vats[0]=<span class="keyword">new</span> <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>; <a name="l00333"></a>00333       <span class="keywordflow">if</span>(!skip1)<a name="l00334"></a>00334         cand_vats[1]=<span class="keyword">new</span> <a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html">VAT</a>;<a name="l00335"></a>00335       <a name="l00336"></a>00336       <span class="keywordflow">if</span> (skip0 &amp;&amp; skip1){<a name="l00337"></a>00337         <span class="keywordflow">return</span> cand_vats;<a name="l00338"></a>00338       }<a name="l00339"></a>00339       <a name="l00340"></a>00340       CONST_IT it_i=vat_i-&gt;<a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#5913bebc7436d782090c72b5c38e6155">begin</a>(), it_j=vat_j-&gt;<a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#5913bebc7436d782090c72b5c38e6155">begin</a>();<a name="l00341"></a>00341       <a name="l00342"></a>00342       <span class="keywordflow">if</span>(it_i==vat_i-&gt;<a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#5bb60b848033734ffc1c6f16c98729dd">end</a>() || it_j==vat_j-&gt;<a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#5bb60b848033734ffc1c6f16c98729dd">end</a>())<a name="l00343"></a>00343         <span class="keywordflow">return</span> cand_vats;<a name="l00344"></a>00344       <a name="l00345"></a>00345       <span class="keywordflow">while</span>(it_i!=vat_i-&gt;<a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#5bb60b848033734ffc1c6f16c98729dd">end</a>() &amp;&amp; it_j!=vat_j-&gt;<a class="code" href="classvat_3_01SEQ__PROP_00_01V__Fkk__IND__MINE__PROP_00_01ALLOC_00_01VAT__ST_01_4.html#5bb60b848033734ffc1c6f16c98729dd">end</a>()) {<a name="l00346"></a>00346         <span class="keywordflow">if</span>(it_i-&gt;first&lt;it_j-&gt;first) {<a name="l00347"></a>00347           it_i++;<a name="l00348"></a>00348           <span class="keywordflow">continue</span>;<a name="l00349"></a>00349         }<a name="l00350"></a>00350         <span class="keywordflow">if</span>(it_i-&gt;first&gt;it_j-&gt;first) {<a name="l00351"></a>00351           it_j++;<a name="l00352"></a>00352           <span class="keywordflow">continue</span>;<a name="l00353"></a>00353         }<a name="l00354"></a>00354         <span class="comment">//execution reaches this point only if both TIDs are equal</span><a name="l00355"></a>00355         INSTANCES seqi_inst, seqj_inst;<a name="l00356"></a>00356         <span class="keywordtype">bool</span> seqi_ind = <span class="keyword">false</span>, seqj_ind = <span class="keyword">false</span>, seqi_emb = <span class="keyword">false</span>, seqj_emb = <span class="keyword">false</span>;<a name="l00357"></a>00357         <a name="l00358"></a>00358         <span class="comment">//intersect the instances this tid</span><a name="l00359"></a>00359         INSTANCE::seq_join_seq(it_i-&gt;second, it_j-&gt;second, seqi_inst, seqj_inst, seqi_ind, <a name="l00360"></a>00360                                seqj_ind, seqi_emb, seqj_emb, skip1, skip0);<a name="l00361"></a>00361         <a name="l00362"></a>00362         <span class="keywordflow">if</span> (!skip0){<a name="l00363"></a>00363           <span class="keywordflow">if</span>(seqi_ind)<a name="l00364"></a>00364             cand_sups[0]-&gt;incr_isup();<a name="l00365"></a>00365           <span class="comment">// else </span><a name="l00366"></a>00366           <span class="keywordflow">if</span>(seqi_emb)<a name="l00367"></a>00367             cand_sups[0]-&gt;incr_esup();<a name="l00368"></a>00368         }<a name="l00369"></a>00369         <a name="l00370"></a>00370         <span class="keywordflow">if</span>(!skip1) {<a name="l00371"></a>00371           <span class="keywordflow">if</span>(seqj_ind)<a name="l00372"></a>00372             cand_sups[1]-&gt;incr_isup();<a name="l00373"></a>00373           <span class="comment">// else</span><a name="l00374"></a>00374           <span class="keywordflow">if</span>(seqj_emb)<a name="l00375"></a>00375             cand_sups[1]-&gt;incr_esup();<a name="l00376"></a>00376         }<a name="l00377"></a>00377         <a name="l00378"></a>00378         <span class="keywordflow">if</span>(!seqi_inst.empty() &amp;&amp; !skip0)<a name="l00379"></a>00379           cand_vats[0]-&gt;push_back(make_pair(it_i-&gt;first, seqi_inst));<a name="l00380"></a>00380         <a name="l00381"></a>00381         <span class="keywordflow">if</span>(!seqj_inst.empty() &amp;&amp; !skip1)<a name="l00382"></a>00382           cand_vats[1]-&gt;push_back(make_pair(it_i-&gt;first, seqj_inst));<a name="l00383"></a>00383         <a name="l00384"></a>00384         it_i++;<a name="l00385"></a>00385         it_j++;<a name="l00386"></a>00386         <a name="l00387"></a>00387       } <span class="comment">//end while (it_i &amp;* it_j)</span><a name="l00388"></a>00388       <a name="l00389"></a>00389       <span class="comment">//cout &lt;&lt; "ISECT I : " &lt;&lt; *vat_i &lt;&lt; endl;</span><a name="l00390"></a>00390       <span class="comment">//cout &lt;&lt; "ISECT J : " &lt;&lt; *vat_j &lt;&lt; endl;</span><a name="l00391"></a>00391       <span class="comment">//if (!skip0)</span><a name="l00392"></a>00392       <span class="comment">//cout &lt;&lt; "CAND A : " &lt;&lt; *cand_vats[0] &lt;&lt; endl;  </span><a name="l00393"></a>00393       <span class="comment">//if (!skip1)</span><a name="l00394"></a>00394       <span class="comment">//  cout &lt;&lt; "CAND B: " &lt;&lt; *cand_vats[1] &lt;&lt; endl;        </span><a name="l00395"></a>00395       <span class="keywordflow">return</span> cand_vats;<a name="l00396"></a>00396     }<a name="l00397"></a>00397     <span class="keyword">friend</span> ostream&amp; operator&lt;&lt; &lt;&gt;(ostream&amp;, <span class="keyword">const</span> VAT&amp;);<a name="l00398"></a>00398 <a name="l00399"></a>00399 <span class="keyword">private</span>:<a name="l00400"></a>00400       IDLIST_T _idlist;<a name="l00401"></a>00401 };<a name="l00402"></a>00402 <span class="preprocessor">#endif</span><a name="l00403"></a>00403 <span class="preprocessor"></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 + -