亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dci.cc

?? this will produce the dci program in the src/ directory, or in /path/to/your/installation/bin if y
?? CC
?? 第 1 頁 / 共 3 頁
字號:
// Copyright (C) 2003 salvatore orlando <salvatore.orlando@unive.it>//  // This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.// // You should have received a copy of the GNU General Public License// along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.#include <iostream>#include <vector>#include <cmath>using namespace std;#include <stdio.h>#include "items.hh"#include "transaction.hh"#include "database.hh"#include "candidates.hh"#include "frequents.hh"#include "utils.hh"#include "direct_count.hh"#include "vertical.hh"#define TEMPORARY_DATASET "dataset.tmp"#define PRUNE_FACTOR_PROJ       0.04#define PRUNE_FACTOR_NEWLIST    0.8#define PRUNE_FACTOR_COMPLEXITY 2char OUTF[128] = ""; // output filebool write_output;   // dump frequent itemsets to file ? int first_scan(Data *d, dci_items& counters, unsigned int& max_trans_len);template <class T, class T1>void following_scans(int max_trans_len, dci_items& counters);template <class T, class T1>set_of_frequents<T,T1> *second_scan(int max_trans_len, dci_items& counters, 				    cand_2_iter<T1>& c, 				    DCI_vertical_dataset<T>& DCI_dataset);template <class T, class T1>void DCP_iter(int iter, int max_trans_len, 	      dci_items& counters, 	      DCP_candidates<T,T1>& c, set_of_frequents<T,T1>& next_freq,	      DCI_vertical_dataset<T>& DCI_dataset);template <class T, class T1>void DCI_iter_diffuse(int iter, dci_items& counters, 		     set_of_frequents<T,T1>& freq, 		     set_of_frequents<T,T1>& next_freq, 		     DCI_vertical_dataset<T>& DCI_dataset);template <class T, class T1>void DCI_iter_diffuse_key(int iter, dci_items& counters, 		     set_of_frequents<T,T1>& freq, 		     set_of_frequents<T,T1>& next_freq, 		     DCI_vertical_dataset<T>& DCI_dataset);template <class T, class T1>void DCI_iter_compact(int iter, dci_items& counters, 		    set_of_frequents<T,T1>& freq, 		    set_of_frequents<T,T1>& next_freq, 		    DCI_vertical_dataset<T>& DCI_dataset);template <class T, class T1>void DCI_iter_compact_key(int iter, dci_items& counters, 		    set_of_frequents<T,T1>& freq, 		    set_of_frequents<T,T1>& next_freq, 		    DCI_vertical_dataset<T>& DCI_dataset);int main(int argc, char ** argv){  Chronos all_time;  all_time.StartChronos();  if(argc < 3 || argc > 4) {    cerr << "Usage: " << argv[0] <<       " input_file min_count [output_file]" << endl;    return 1;  }    unsigned int min_count;  min_count = atoi(argv[2]);  if (min_count <= 0) {    cerr << "Usage: " << argv[0] << " input_file min_count" << endl;    cerr << "        Value of min_count not allowed (min_count > 0)\n";    return 2;  }  dci_items counters(min_count);  // counters for singleton  Data *d;                        // database object used only for the   d = new Data(argv[1]);          // first scan  if (!d->isOpen()) {    cerr << "input file " << argv[1] 	 << " cannot be opened!" << endl;    exit(1);  }      if (argc == 4) {    sprintf(OUTF, "%s", argv[3]);    write_output = true;  }    else    write_output = false;    // **************************************************  // First iteration   // **************************************************  unsigned int max_support;  // the same as nr_of_trans  unsigned int max_trans_len;  max_support = first_scan(d, counters, max_trans_len);  // m1 is the number of items (singleton)   // that are found to be frequent  int m1 = counters.get_m1();  delete d;  if (max_support == 0 || m1 < 2) {    // there is nothing to mine...    cout << "Total time: " << all_time.ReadChronos() << endl;    return 0;  }    // **************************************************  // Second and Following iterations   // since we now know how many distinct items are frequent  // and their maximum support, we can optimize the amount  // of memory used to store itemsets and their counters  // **************************************************    m1++; // we need one extra element to store the key-pattern flag (-1)  if (m1 < 256   &&    max_support < 256)    following_scans<unsigned char, unsigned char>(max_trans_len, counters);  else if (m1 < 256  && max_support < 256*256)    following_scans<unsigned char, unsigned short int>(max_trans_len, counters);    else if (m1 < 256  && max_support >= 256*256)    following_scans<unsigned char, unsigned int>(max_trans_len, counters);    else if (m1 < 256*256  && max_support < 256)    following_scans<unsigned short int, unsigned char>(max_trans_len, counters);    else if (m1 >= 256*256  && max_support < 256)    following_scans<unsigned int, unsigned char>(max_trans_len, counters);    else if (m1 < 256*256  && max_support < 256*256)    following_scans<unsigned short int, unsigned short int>(max_trans_len, counters);  else if (m1 < 256*256  && max_support >= 256*256)    following_scans<unsigned short int, unsigned int>(max_trans_len, counters);  else if (m1 >= 256*256 && max_support < 256*256)    following_scans<unsigned int, unsigned short int>(max_trans_len, counters);  else    following_scans<unsigned int, unsigned int>(max_trans_len, counters);#ifdef VERBOSE	  cout << "Total time: " << all_time.ReadChronos() << endl;#endif  unlink(TEMPORARY_DATASET);  return 0;}// First iteration: counting frequent items	int first_scan(Data *d, dci_items& counters, unsigned int& max_trans_len){  Chronos time;  time.StartChronos();  float min_supp;  bool create=true;  // create a temporary binary representation of the dataset  // on disk. we will keep writing on the same file during   // all subsequent scans  binFSout<unsigned int> oo(TEMPORARY_DATASET, create);  if(!oo.isOpen()) {    cerr << TEMPORARY_DATASET << " could not be opened!" << endl;    exit(1);  }  int totalsize=0;  max_trans_len = 0;  vector<unsigned int> t;  // counting loop  while(d->getNextTransaction(t) != 0) {    // read next transaction t from db    for(unsigned int i=0; i<t.size(); i++)  // for each item in t ...      counters.insert_item(t[i]);           // ... increase corresp. counter    if (t.size() > max_trans_len)           // keep track of max trans length      max_trans_len = t.size();     oo.writeTransaction(t);                 // write t to temp file        totalsize += t.size();                  // temp file size  }    min_supp = 100.0 * (double) counters.min_count /    (double) oo.get_num_of_trans();  counters.set_num_of_trans(oo.get_num_of_trans());  //  remap item identifiers to 1:m1  int first_freq = counters.remap_items(write_output);  if (write_output) { // dump frequents to file     FSout o(OUTF, 1); // Iter=1    if(!o.isOpen()) {      cerr << OUTF << " could not be opened for writing!" << endl;      exit(1);    }    char count_print[32];    // write empty itemset    int num_written = sprintf(count_print, "(%d)\n", oo.get_num_of_trans());    o.printSet(count_print, num_written);    //  output frequent items     for (unsigned int i=first_freq; i < counters.get_m(); i++) {           o.printSet(counters.unmap_ascii[i-first_freq], 		 counters.unmap_ascii_len[i-first_freq]);      num_written = sprintf(count_print, "(%d)\n", 			    (int) counters.get_count(i));      o.printSet(count_print, num_written);  // print for each suffix[i]    }  }    counters.delete_counts();#ifdef VERBOSE    cout << "# Database statistics:\n#\t"        << oo.get_num_of_trans() <<" transactions\n#\t"        << counters.get_m() << " different items\n#\t"       << "Max transaction length = " << max_trans_len <<"\n#\n# ";  cout << "Min support = " << min_supp << "%    "       << "Min count   = " << counters.min_count << endl << endl;  print_statistics("DCP", 1, counters.get_m(), counters.get_m1(), time.ReadChronos());#else  printf("1\n%d\n",counters.get_m1()); // 1 is the empty set#endif  return(counters.get_max_supp());}// second and following iterations: // the second with direct count, the others with DCP or DCItemplate <class T, class T1>void following_scans(int max_trans_len, dci_items& counters){  set_of_frequents<T, T1> *freq;         // frequent itemsets  int k=2;                               // freq. itemset size   DCI_vertical_dataset<T> DCI_dataset;   // vertical dataset  bool DCI = false;                      // DCI or DCP?  unsigned int max_count;                   // Check if the in-core vertical dataset VD can be created  if (DCI_dataset.VD_can_be_allocated(counters.get_m1(),				      counters.get_num_of_trans())) {    DCI_dataset.init_VD();    DCI = true;  }  max_count = counters.get_max_supp();  // ------------------------------------  // Second iteration using a prefix table  // ------------------------------------  cand_2_iter<T1>   *c;                  // candidates for 2nd iteration  c = new cand_2_iter<T1>(counters.get_m1());  freq = second_scan<T, T1>(max_trans_len, counters, *c, DCI_dataset);  if (freq == NULL)    return;    if (freq->get_num_frequents() < 3) {    // there is nothing else to mine ...    delete freq;    return;  }  // ------------------------------------  // third and following iterations  // ------------------------------------   DCP_candidates<T,T1> *cand;  cand = new DCP_candidates<T,T1>(k); // allocate cand the first time  // Iterate with DCP until DCI can start  while (!DCI) {     k++;      // increment iter counter    // Check if the in-core vertical dataset VD can be created    if (DCI_dataset.VD_can_be_allocated(counters.get_mk(), 					counters.get_num_of_trans())) {      // next iter with DCI       DCI_dataset.init_VD();      DCI = true;     }          gen_candidates<T, T1>(*freq, *cand, counters, k, *c);    if (cand->get_num_candidates() == 0) {      cout << "no more candidates !\n";      return;    }    if (k==3)       delete c;          DCP_iter<T, T1>(k, max_trans_len, counters, *cand, *freq, DCI_dataset);    if (freq->get_num_frequents() < k+1) {      // nothing to mine ...      delete cand;      delete freq;      return;    }  }  delete cand; // DCI doesn't use candidates  // ---------------------------------------------  // Iterations with DCI, i.e. using vertical dataset   // and intersections.  // ---------------------------------------------  // check the vertical dataset to choose between   // sparse or dense optimizations  // ALSO reorder the columns of the vertical dataset!!  DCI_dataset.chk_compact_vertical(counters.get_mk());  // initialize key-pattern flags  freq->init_keys();  // create a set of frequent itemsets   set_of_frequents<T, T1> *next_freq = new set_of_frequents<T, T1>(k);   set_of_frequents<T, T1> *tmp_freq; // pointer used for swapping  // decide if it is convenient to use the   // key-pattern optimization or not   bool use_keys = counters.use_key_patterns();  while(1) {    k++;      // increment iter counter    if (use_keys) {       // few key patterns are expected      // it is faster to try to infer itemsets       // supports from non-key patterns      DCI_iter_compact_key<T, T1>(k, counters, *freq, *next_freq, DCI_dataset);    } else {       // too many key patterns are expected      // it is faster to *count* itemset supports      // but we can still check if the dataset       // is compact or not.      if (DCI_dataset.is_compact())	DCI_iter_compact<T, T1>(k, counters, *freq, *next_freq, DCI_dataset);      else	DCI_iter_diffuse<T, T1>(k, counters, *freq, *next_freq, DCI_dataset);    }    if (next_freq->get_num_frequents() < k) {      // nothing to mine      delete freq;      delete next_freq;      return;    }    else {      // swap sets of frequent itemsets       tmp_freq = freq;      freq = next_freq;      next_freq = tmp_freq;    }  }    }template <class T, class T1>set_of_frequents<T,T1> *second_scan(int max_trans_len, dci_items& counters, 				    cand_2_iter<T1>& c, 				    DCI_vertical_dataset<T>& DCI_dataset)  // Second iteration with direct count of 2-itemsets.   // If possible (enough memory) builds VD on the fly  // for third and subsequent iterations{  Chronos time;  time.StartChronos();   binFSin<unsigned int> ii(TEMPORARY_DATASET);  if(!ii.isOpen()) {    cerr << TEMPORARY_DATASET << " could not be opened!" << endl;    exit(1);  }    bool create=false;  binFSout<T> oo(TEMPORARY_DATASET, create);  if(!oo.isOpen()) {    cerr << TEMPORARY_DATASET << " could not be opened!" << endl;    exit(1);  }  int m1 = counters.get_m1();  Transaction<unsigned int> t_in(max_trans_len);  Transaction<T> t_out(max_trans_len);    // 2nd database scan  // direct count of 2-itemsets  unsigned int n_tr = 0;  while(ii.getNextTransaction(t_in)) {    prune_and_map_and_ord_first_iter(t_in, t_out, counters);    if (t_out.length >= 2) {      int x0;      int index_init;      for (int t0=0; t0 < (int) t_out.length-1; t0++) {	x0 = (int) t_out.t[t0];	index_init = direct_position2_init(x0, m1);	for (int t1=t0+1; t1 < (int) t_out.length; t1++)	  c.incr_cand_count(index_init + (int) t_out.t[t1]);      }       if (DCI_dataset.VD_is_allocated()) { 	// write the trans in VD on the fly	DCI_dataset.write_t_in_VD(n_tr, t_out);	n_tr++;      }      else 	// write Dk	oo.writeTransaction(t_out);          }  }      // output frequent 2-itemsets and set global pruning mask

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
jlzzjlzz国产精品久久| 国产成人福利片| 日本一二三不卡| 欧美挠脚心视频网站| 国产在线国偷精品产拍免费yy| 国产午夜精品久久久久久免费视 | 国产一区二区三区免费在线观看| 国产精品久久久久久久第一福利| 91精品婷婷国产综合久久性色| 成人黄色a**站在线观看| 日本不卡一区二区| 亚洲欧美偷拍另类a∨色屁股| 欧美xxxxx牲另类人与| 在线亚洲高清视频| 91丨porny丨在线| 99热在这里有精品免费| 国产久卡久卡久卡久卡视频精品| 美女视频黄久久| 日韩精品午夜视频| 日韩高清欧美激情| 日韩黄色免费电影| 日韩电影在线免费看| 亚洲国产精品嫩草影院| 性久久久久久久久久久久| 亚洲va欧美va人人爽| 亚洲免费在线电影| 玉米视频成人免费看| 亚洲男同性恋视频| 一区二区三区91| 久久精品av麻豆的观看方式| 日本不卡免费在线视频| 免费观看日韩电影| av一区二区三区| 色婷婷综合视频在线观看| 欧美日韩中文字幕精品| 欧美精品在欧美一区二区少妇| 欧美一区二区免费视频| 欧美经典一区二区| 亚洲一区二区三区在线看| 麻豆国产91在线播放| 色婷婷亚洲一区二区三区| 欧美成人一区二区三区片免费 | 粉嫩一区二区三区性色av| 91小宝寻花一区二区三区| 欧美电影免费提供在线观看| 国产精品另类一区| 久久精品久久综合| 欧美亚男人的天堂| 中文字幕精品三区| 国产乱淫av一区二区三区| 7777女厕盗摄久久久| 亚洲免费看黄网站| 成人一区二区三区中文字幕| 日韩欧美亚洲国产另类| 偷窥少妇高潮呻吟av久久免费| 成熟亚洲日本毛茸茸凸凹| 欧美成人激情免费网| 免费看日韩精品| 制服丝袜亚洲播放| 亚洲成a人片综合在线| 色久优优欧美色久优优| 中文字幕色av一区二区三区| 成人动漫中文字幕| 国产精品视频一区二区三区不卡| 狠狠狠色丁香婷婷综合激情| 精品国产免费人成电影在线观看四季 | 五月天视频一区| 欧美肥大bbwbbw高潮| 免费日本视频一区| 精品国内二区三区| 国产精品羞羞答答xxdd| 国产精品色噜噜| 91伊人久久大香线蕉| 亚洲男同1069视频| 欧美日韩综合一区| 蜜臀精品久久久久久蜜臀 | 精品国产污污免费网站入口| 国产一区二区主播在线| 欧美激情中文字幕| 在线视频一区二区免费| 青青草精品视频| 日本一区二区三级电影在线观看| 成人国产精品免费观看| 亚洲精品亚洲人成人网在线播放| 精品视频色一区| 精品一区二区三区在线观看 | 精品国产一区二区在线观看| 成人av资源站| 亚洲电影一级黄| 久久影院视频免费| 日本精品一区二区三区四区的功能| 视频一区在线播放| 欧美激情在线看| 国产精品九色蝌蚪自拍| 在线观看日韩一区| 国产69精品久久777的优势| 亚洲成人动漫一区| 国产精品二三区| 精品国产伦一区二区三区观看方式| 色偷偷88欧美精品久久久| 国产经典欧美精品| 日本女优在线视频一区二区| 亚洲精品水蜜桃| 国产精品日产欧美久久久久| 日韩午夜在线播放| 欧美日韩精品免费观看视频| 成人福利在线看| 国产成人免费视频网站| 老司机精品视频导航| 午夜私人影院久久久久| 中文字幕在线观看不卡视频| 久久久国产一区二区三区四区小说 | 国产欧美一二三区| av在线这里只有精品| 国产福利视频一区二区三区| 国产成人精品综合在线观看| 成人av电影在线| 欧美网站一区二区| 精品久久国产字幕高潮| 欧美一区二区久久久| 69久久99精品久久久久婷婷| 7777精品伊人久久久大香线蕉的 | 精品日韩一区二区三区免费视频| 色哟哟一区二区三区| 99精品欧美一区二区三区小说 | 日韩视频一区二区在线观看| 日韩一级二级三级精品视频| 欧美高清精品3d| 日韩精品综合一本久道在线视频| 日韩你懂的在线播放| 久久精品免费在线观看| 中文无字幕一区二区三区 | 欧美韩国日本综合| 亚洲欧美激情在线| 日韩黄色免费网站| 国产成人免费视| 色呦呦日韩精品| 日韩一区二区在线看| 中文一区在线播放| 亚洲a一区二区| 成人午夜激情在线| 欧美三级在线视频| 久久亚洲捆绑美女| 亚洲午夜视频在线| 国产一区二区女| 欧美日韩高清影院| 亚洲视频一区二区在线观看| 裸体健美xxxx欧美裸体表演| 国产成人欧美日韩在线电影| 欧美日韩国产免费| 国产精品美女久久久久aⅴ国产馆 国产精品美女久久久久av爽李琼 国产精品美女久久久久高潮 | 亚洲综合在线第一页| 99精品偷自拍| 国产亲近乱来精品视频| 日韩一区二区免费在线电影| 欧美国产日韩一二三区| 国产福利91精品一区二区三区| 日韩午夜激情视频| 国产视频视频一区| 亚洲一级在线观看| 五月激情丁香一区二区三区| 日韩中文字幕麻豆| 91国在线观看| 亚洲bt欧美bt精品| 日韩亚洲欧美在线| 久久综合中文字幕| 午夜在线成人av| 欧美成人免费网站| 国产精品一区二区黑丝| xfplay精品久久| 国产最新精品免费| 中文字幕中文乱码欧美一区二区| 成人福利在线看| 日韩毛片精品高清免费| 亚洲成人免费看| 在线免费不卡视频| 国产欧美日韩亚州综合| 天涯成人国产亚洲精品一区av| 国产xxx精品视频大全| 欧美三级视频在线观看| 国产情人综合久久777777| 中文字幕在线视频一区| 精品综合免费视频观看| 日本乱人伦一区| 国产精品家庭影院| 成人av网站大全| 中文字幕免费观看一区| 日韩高清不卡一区二区| 日韩视频在线你懂得| 亚洲国产综合在线| 99国产精品久久| 国产日韩欧美制服另类| 国产盗摄视频一区二区三区| 亚洲精品在线观| 日韩高清不卡一区二区三区| 色狠狠桃花综合| 欧美成人a在线| 国产自产高清不卡| 欧美国产丝袜视频| 日本成人在线视频网站|