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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fptree.c

?? 數據挖掘中的FP-growth算法,很好的代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*----------------------------------------------------------------------  File    : fptree.c  Contents: frequent pattern tree management  Author  : Christian Borgelt  History : 2004.11.21 file created            2004.11.22 second projection added, bonsai pruning added            2004.12.09 adapted to changed report function            2004.12.10 adapted to general memory management system            2004.12.28 bug in function fpt_delete fixed            2005.12.06 bug in function _project2 fixed            2006.11.26 reuse of item set prefix made possible----------------------------------------------------------------------*/#include <stdio.h>#include <stdlib.h>#include <assert.h>#include "fptree.h"#ifdef STORAGE#include "storage.h"#endif/*----------------------------------------------------------------------  Preprocessor Definition----------------------------------------------------------------------*/#define BLKSIZE    6553         /* block size for memory management *//*----------------------------------------------------------------------  Type Definition----------------------------------------------------------------------*/typedef FPTREE* PROJFN (FPTREE *fpt, int item);typedef struct {                /* --- structure for rec. search */  int      min;                 /* minimum number of items */  int      max;                 /* maximum number of items */  int      supp;                /* minimum support (num. of trans.) */  int      bonsai;              /* flag for pruning to bonsai */  PROJFN   *proj;               /* projection function */  FPTREPFN *report;             /* report function for results */  void     *data;               /* user data for report function */  int      cnt;                 /* number of frequent item sets */  int      items[1];            /* item vector for reporting */} FPRS;                         /* (structure for rec. search) *//*----------------------------------------------------------------------  Main Functions----------------------------------------------------------------------*/static FPTREE* _create (MEMSYS *mem, int cnt){                               /* --- create a base f.p. tree */  FPTREE  *fpt;                 /* created frequent pattern tree */  FPTLIST *list;                /* to traverse the node lists */  assert(cnt > 0);              /* check the function arguments */  fpt = (FPTREE*)malloc(sizeof(FPTREE) +(cnt-1) *sizeof(FPTLIST));  if (!fpt) return NULL;        /* allocate the base structure */  fpt->cnt = cnt;               /* and note the number of items */  if (mem) fpt->mem = mem;      /* if a memory management is given, */  else {                        /* simply store it, otherwise */    fpt->mem = ms_create(sizeof(FPTNODE), BLKSIZE);    if (!fpt->mem) { free(fpt); return NULL; }  }                             /* allocate a memory system */  for (list = fpt->lists +cnt; --cnt >= 0; ) {    (--list)->cnt = 0; list->node = NULL; }  return fpt;                   /* initialize the node lists and */}  /* _create() */              /* return the created f.p. tree *//*--------------------------------------------------------------------*/static int _build (FPTREE *fpt, FPTNODE *parent,                   TASET *taset, int lft, int rgt, int pos){                               /* --- recursively build f.p. tree */  int     i, k;                 /* loop variable, buffer */  int     item;                 /* to traverse the items at pos */  FPTNODE *node;                /* created freq. pattern tree node */  assert(fpt && taset && (pos >= 0)); /* check the function arguments */  while ((lft <= rgt) && (tas_tsize(taset, lft) <= pos))    lft++;                      /* skip trans. that are too short */  if (lft > rgt) return 0;      /* check for an empty range */  item = k = tas_tract(taset, i = rgt)[pos];    /* get first item */  do {                          /* traverse the longer transactions */    while (--i >= lft) {        /* while not at start of section */      k = tas_tract(taset, i)[pos];      if (k != item) break;     /* try to find a transaction */    }                           /* with a different item */    node = ms_alloc(fpt->mem);  /* create a new tree node */    if (!node) return -1;       /* for the current item */    node->item   = item;        /* and store the item */    node->succ   = fpt->lists[item].node;    fpt->lists[item].node = node;    node->parent = parent;      /* insert the node into the item list */    node->copy   = NULL;        /* and compute and sum the support */    fpt->lists[item].cnt += node->cnt = rgt -i;    if (_build(fpt, node, taset, i+1, rgt, pos+1) != 0)      return -1;                /* build the child node recursively */    item = k; rgt = i;          /* remove processed transaction from */  } while (lft <= rgt);         /* the interval and note next item */  return 0;                     /* return 'ok' */}  /* _build() *//*--------------------------------------------------------------------*/FPTREE* fpt_create (TASET *taset){                               /* --- create a freq. pattern tree */  FPTREE *fpt;                  /* created frequent pattern tree */  assert(taset);                /* check the function argument */  fpt = _create(NULL, is_cnt(tas_itemset(taset)));  if (!fpt) return NULL;        /* allocate a base f.p. tree */  fpt->itemset = tas_itemset(taset);  fpt->tra     = tas_cnt(taset);  if ((fpt->tra > 0)            /* if there is at least one trans. */  &&  (_build(fpt, NULL, taset, 0, fpt->tra -1, 0) != 0)) {    fpt_delete(fpt); return NULL; }  return fpt;                   /* recursively build the frequent */}  /* fpt_create() */           /* pattern tree and return it *//*----------------------------------------------------------------------The above function assumes that the items in each transaction in tasetare sorted and that the transactions are sorted accordingly.----------------------------------------------------------------------*/void fpt_delete (FPTREE *fpt){                               /* --- delete a freq. pattern tree */  assert(fpt);                  /* check the function argument */  ms_delete(fpt->mem);          /* delete the memory system */  free(fpt);                    /* and the base structure */}  /* fpt_delete() *//*--------------------------------------------------------------------*/static void _prune (FPTREE *fpt){                               /* --- prune nodes for last item */  FPTNODE *node, *buf;          /* to traverse the nodes to delete */  assert(fpt);                  /* check the function argument */  for (node = fpt->lists[--fpt->cnt].node; node; ) {    buf  = node;                /* while there is another node */    node = node->succ;          /* note the current node and */    ms_free(fpt->mem, buf);     /* remove it from the list, */  }                             /* and then delete the node */}  /* _prune() *//*--------------------------------------------------------------------*/static void _detach (FPTREE *fpt){                               /* --- detach a projection */  FPTNODE *node, *anc;          /* to traverse the ancestors */  assert(fpt);                  /* check the function argument */  node = fpt->lists[--fpt->cnt].node;  while (node) {                /* while there is another node */    for (anc = node->parent; anc && anc->copy; anc = anc->parent)      anc->copy = NULL;         /* clear the copy pointers */    anc  = node;                /* note the current node and */    node = node->succ;          /* remove it from the list, */    ms_free(fpt->mem, anc);     /* then delete the node */  }                             /* (prune deepest tree level) */}  /* _detach() *//*--------------------------------------------------------------------*/static void _cleanup (FPTREE *fpt, FPTREE *proj){                               /* --- clean up after failure */  assert(fpt && proj);          /* check the function argument */  _detach(fpt);                 /* detach projection from tree */  while (proj->cnt > 0) _prune(proj);  free(proj);                   /* delete the projection */}  /* _cleanup() */             /* (only called on failure) *//*--------------------------------------------------------------------*/static FPTREE* _project1 (FPTREE *fpt, int item){                               /* --- project a freq. pattern tree */  int     i;                    /* loop variable */  FPTREE  *proj;                /* projected frequent pattern tree */  FPTNODE *node, *anc, *copy;   /* to traverse the tree nodes */  FPTNODE **prev;               /* to link copies to their ancestors */  FPTLIST *lists;               /* to access the node lists */  assert(fpt);                  /* check the function argument */  proj = _create(fpt->mem, item);  if (!proj) return NULL;       /* create a base freq. pattern tree */  proj->itemset = fpt->itemset; /* note the underlying item set */  lists = proj->lists;          /* get the node lists of the proj. */  for (node = fpt->lists[item].node; node; node = node->succ) {    prev = NULL;                /* traverse the nodes for the item */    for (anc = node->parent; anc && !anc->copy; anc = anc->parent) {      anc->copy =               /* traverse and copy all ancestors */      copy = ms_alloc(fpt->mem);        /* that are not yet copied */      if (!copy) { _cleanup(fpt, proj); return NULL; }      if (prev) *prev = copy;   /* set parent link from child */      copy->item = i = anc->item;      copy->succ = lists[i].node;      lists[i].node = copy;     /* insert copy into corresp. list */      lists[i].cnt += copy->cnt = node->cnt;      copy->copy = NULL;        /* set the support of the node */      prev = &copy->parent;     /* and note the parent pointer */    }                           /* for later linking */    if (prev)                   /* set last parent pointer */      *prev = (anc) ? anc->copy : NULL;    for ( ; anc; anc = anc->parent) {      anc->copy->cnt       += node->cnt;      lists[anc->item].cnt += node->cnt;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
18涩涩午夜精品.www| 欧美国产综合一区二区| 日本黄色一区二区| kk眼镜猥琐国模调教系列一区二区| 激情综合色综合久久综合| 亚洲午夜私人影院| 视频在线观看一区二区三区| 日韩中文字幕麻豆| 蜜臀av性久久久久蜜臀aⅴ | 色av成人天堂桃色av| 99精品国产视频| 91欧美一区二区| 欧美视频中文字幕| 91精品国产色综合久久ai换脸| 91精选在线观看| 久久午夜免费电影| 国产精品免费久久久久| 亚洲人成网站在线| 一区二区三区国产精品| 日韩成人午夜电影| 国产精品综合久久| 在线观看一区日韩| 日韩欧美国产午夜精品| 国产精品久久久久影院| 玉米视频成人免费看| 美女国产一区二区三区| 国产成人免费9x9x人网站视频| 色视频一区二区| 日韩三级伦理片妻子的秘密按摩| 久久亚洲捆绑美女| 亚洲久草在线视频| 美日韩一区二区| 99国产精品99久久久久久| 欧美日韩精品二区第二页| 日韩精品一区二区三区四区| 国产精品美女久久福利网站| 午夜在线电影亚洲一区| 韩国中文字幕2020精品| 色婷婷久久综合| 精品久久久久久久久久久久久久久| 亚洲欧洲国产专区| 狠狠色狠狠色综合系列| 91国偷自产一区二区三区成为亚洲经典 | 91.xcao| 最近日韩中文字幕| 另类成人小视频在线| 91国偷自产一区二区三区观看| 久久综合视频网| 午夜精品久久一牛影视| 成人小视频在线| 日韩精品中午字幕| 亚洲国产精品久久人人爱 | 亚洲日本在线天堂| 精品在线观看视频| 777a∨成人精品桃花网| 国产精品久久免费看| 国产一区二区三区四区在线观看 | 日韩精品乱码av一区二区| 91啦中文在线观看| 国产三级一区二区| 麻豆成人在线观看| 欧美一区二区福利视频| 一区二区三区在线看| 99视频一区二区| 国产视频911| 国产一区在线不卡| 日韩一区和二区| 日本强好片久久久久久aaa| 在线观看中文字幕不卡| 一区二区欧美国产| 在线亚洲人成电影网站色www| 中文字幕一区在线观看| 丰满少妇久久久久久久| 亚洲精选在线视频| 色综合夜色一区| 亚洲视频免费看| 一本一道久久a久久精品综合蜜臀| 亚洲国产岛国毛片在线| 国产成人午夜视频| 亚洲国产精品t66y| 91美女片黄在线| 一区二区三区精品视频在线| 欧美综合亚洲图片综合区| 亚洲免费视频中文字幕| 色噜噜狠狠成人网p站| 亚洲国产中文字幕在线视频综合| 在线观看www91| 天堂一区二区在线| 日韩欧美一区二区久久婷婷| 狠狠色狠狠色综合系列| 中文字幕不卡在线观看| 9久草视频在线视频精品| 亚洲激情男女视频| 在线成人免费观看| 精品一区二区三区在线视频| 国产精品入口麻豆九色| 91网址在线看| 日本视频在线一区| 欧美国产日韩a欧美在线观看| aaa欧美色吧激情视频| 爽爽淫人综合网网站| 精品女同一区二区| 不卡电影一区二区三区| 亚洲bt欧美bt精品777| 欧美不卡视频一区| 99久久国产综合色|国产精品| 天天综合色天天| 国产亲近乱来精品视频| 日本高清视频一区二区| 久久精品国产99国产精品| 中文字幕一区二区在线观看| 欧美老女人第四色| 懂色av中文一区二区三区| 亚洲一区二区成人在线观看| 久久综合五月天婷婷伊人| 日韩写真欧美这视频| 成人动漫一区二区三区| 日韩精品亚洲专区| 国产欧美日韩亚州综合| 这里只有精品电影| 91年精品国产| 国产精品白丝av| 视频一区二区三区中文字幕| 国产精品夫妻自拍| 欧美电视剧在线看免费| 91福利国产成人精品照片| 国产一区中文字幕| 日本一道高清亚洲日美韩| 亚洲欧美一区二区三区国产精品| 久久―日本道色综合久久| 7777精品伊人久久久大香线蕉| av成人免费在线观看| 国产一区在线观看麻豆| 青青草一区二区三区| 亚洲国产你懂的| 国产精品久久精品日日| 久久影院午夜论| 亚洲精品一区二区三区福利| 欧美日韩成人激情| 色噜噜久久综合| 一本色道久久综合亚洲91| 成人午夜伦理影院| 国产一二精品视频| 极品少妇xxxx精品少妇偷拍| 美女在线观看视频一区二区| 日本午夜精品一区二区三区电影| 亚洲综合丁香婷婷六月香| 综合在线观看色| 中文字幕在线不卡一区| 中文字幕在线不卡视频| 国产精品美日韩| 国产精品久久久久久久久快鸭| 亚洲成人av电影| 一区二区在线电影| 亚洲精品菠萝久久久久久久| 亚洲色图第一区| 亚洲女爱视频在线| 亚洲精品国产高清久久伦理二区| 自拍视频在线观看一区二区| 亚洲色图一区二区| 又紧又大又爽精品一区二区| 亚洲狠狠爱一区二区三区| 午夜精品免费在线观看| 免费成人你懂的| 经典三级一区二区| 狠狠色综合日日| 成人av在线网| 色狠狠综合天天综合综合| 欧美午夜视频网站| 欧美一区二区三区成人| 欧美大片在线观看一区| 久久久午夜精品理论片中文字幕| 国产精品免费视频观看| 一区二区三区成人| 日韩高清不卡在线| 国产一区二区在线观看免费| 成人动漫视频在线| 欧美午夜精品电影| 精品国产乱码久久久久久蜜臀| 国产日韩欧美精品一区| 亚洲精品日产精品乱码不卡| 日本在线不卡一区| 国产suv精品一区二区883| 91网站在线观看视频| 日韩欧美一级二级| 亚洲图片另类小说| 麻豆久久一区二区| 99久久99久久精品国产片果冻| 欧美片在线播放| 久久理论电影网| 亚洲第一福利一区| 国产剧情一区二区| 欧美日韩性生活| 日本一区二区在线不卡| 亚洲第一成年网| 成人av电影在线播放| 欧美一区二区三区免费在线看| 国产精品福利电影一区二区三区四区| 日韩精品成人一区二区三区| av中文字幕不卡|