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

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

?? prune_util.c

?? Vector Quantization壓縮算法
?? C
字號(hào):
/****************************************************************************** * NAME *    prune_util.c *    J. R. Goldschneider *    May 1994 *    Last Revision * * SYNOPSIS *    void     initialize_stat_tree(node) *    void     entropy_init_stat_tree(node) *    void     entropy_init(node) *    void     clear_count(node) *    TreeNode *find_min_slope(node) *    void     update_tree(node) *    DISTTYPE minimum(num1,num2,num3) *    void     prune(node,subtree_number) *    long     count_nodes(root) *    long     pruned_count(root) * * DESCRIPTION *    initialize_stat_tree does the initialization of the tree.  It finds *    delta_d, delta_r, lambda, and lambda_min for each node of the tree. * *    entropy_init_stat_tree does the initialization of the tree for entropy *    based pruning.  It finds delta_d, delta_r, lambda, and lambda_min for *    each node of the tree. * *    entropy_init is called by entropy_init_stat_tree.  It finds *    delta_d, delta_r, lambda, and lambda_min for each node of the tree. * *    clear_count is called by entropy_init_stat_tree.  It sets *    the node->count field of all nodes to zero.  This field is used *    to store the pruned subtree number since the counts of the *    vectors in each cell are not needed. * *    find_min_slope finds the node in the tree with the smallest slope. * *    update_tree corrects the delta_d, delta_r, lambda, and lambda_min *    values for the nodes from the given node to the root. * *    minimum returns the smallest number among the three numbers passed to it. * *    prune takes the codebook tree removes the descendents of any node *    that has a number between 1 and subtree_number. * *    countnodes counts the number of nodes in the tree. * *    pruned_count counts the number of nodes being pruned. * * RETURN VALUE *    find_min_slope returns a pointer to the node that has the *    smallest slope. * *    minimum returns the smallest number. * *    countnodes returns the number of nodes in the tree. * *    pruned_count returns the number of nodes being pruned. * * PARAMETERS *    node is the root of the codebook. * *    node in update_tree is the node with the smallest slope. * *    num1, num2, num3 are three numbers of type DISTTYPE * *    node is the root of the codebook. *    subtree_number is the subtree to create. * *    node is the root of the codebook. * *    node is the whose descendents are being pruned. * * CALLS * *****************************************************************************/#include "tsvq.h"DISTTYPE minimum();char *programname;void initialize_stat_tree(node)     TreeNode *node; /* current node to initialize */{  /* the node is a leaf node */  if (!(node->left_child)) {    /* use the unnormalized squared error */    node->avmse *= node->count;    /* initialize leaf node values */    node->data[DELTA_D] = 0.0;    node->data[DELTA_R] = 0.0;    node->data[LAMBDA] = HUGE;    node->data[LAMBDA_MIN] = HUGE;    /* use the node->count field to store the subtree_number */    node->count = 0;  }  /* node is an internal node */  else {    initialize_stat_tree(node->left_child);    initialize_stat_tree(node->right_child);    /* use the unnormalized squared error */    node->avmse *= node->count;    /* initialize internal node */    node->data[DELTA_D] =      (node->right_child->avmse + node->left_child->avmse - node->avmse)	+ node->left_child->data[DELTA_D] + node->right_child->data[DELTA_D];    node->data[DELTA_R] = (double) (node->count)      + node->left_child->data[DELTA_R]+ node->right_child->data[DELTA_R];    node->data[LAMBDA] = -1.0 *  node->data[DELTA_D] / node->data[DELTA_R];    node->data[LAMBDA_MIN] = minimum(node->data[LAMBDA],				     node->left_child->data[LAMBDA_MIN],				     node->right_child->data[LAMBDA_MIN]);    /* use the node->count field to store the subtree_number */    node->count = 0;  }}void entropy_init_stat_tree(node)     TreeNode *node; /* current node to initialize */{  entropy_init(node);  clear_count(node);}void entropy_init(node)     TreeNode *node; /* current node to initialize */{  /* the node is a leaf node */  if (!(node->left_child)) {    /* use the unnormalized squared error */    node->avmse *= node->count;    /* initialize leaf node values */    node->data[DELTA_D] = 0.0;    node->data[DELTA_R] = 0.0;    node->data[LAMBDA] = HUGE;    node->data[LAMBDA_MIN] = HUGE;  }  /* node is an internal node */  else {    entropy_init(node->left_child);    entropy_init(node->right_child);    /* use the unnormalized squared error */    node->avmse *= node->count;    /* initialize internal node for entropy based pruning */    node->data[DELTA_D] =      (node->right_child->avmse + node->left_child->avmse - node->avmse)	+ node->left_child->data[DELTA_D] + node->right_child->data[DELTA_D];    node->data[DELTA_R] = (node->count)*log((double) node->count)/M_LN2 -      (node->left_child->count)*log((double) node->left_child->count)/M_LN2 -	(node->right_child->count)*log((double) node->right_child->count)/M_LN2	  + node->left_child->data[DELTA_R]+ node->right_child->data[DELTA_R];    node->data[LAMBDA] = -1.0 *  node->data[DELTA_D] / node->data[DELTA_R];    node->data[LAMBDA_MIN] = minimum(node->data[LAMBDA],				     node->left_child->data[LAMBDA_MIN],				     node->right_child->data[LAMBDA_MIN]);  }}void clear_count(node)     TreeNode *node; /* root node */{  /* use the node->count field to store the subtree_number */  node->count = 0;  if(node->left_child) {    clear_count(node->left_child);    clear_count(node->right_child);  }}TreeNode *find_min_slope(node)     TreeNode *node; /* root node */{  /* if the minimum slope is infinity, there is a problem */  if (node->data[LAMBDA_MIN] == HUGE) {    fprintf(stderr,"%s: %s\n",programname, NOTREE);    return(NULL);  }  do {    /* minimum slope is on left side of tree */    if (node->data[LAMBDA_MIN] == node->left_child->data[LAMBDA_MIN]) {      node = node->left_child;    }    /* minimum slope is on right side of tree */    else if (node->data[LAMBDA_MIN] == node->right_child->data[LAMBDA_MIN]) {      node = node->right_child;    }    /* minimum slope is at this node */    else {      return(node);    }  } while (node->left_child != NULL);  /* there is a problem if a terminal leaf is reached */  fprintf(stderr,"%s: %s\n",programname, NOTREE);  return(NULL);}void update_tree(node)     TreeNode *node;{  DISTTYPE delta_d,delta_r;  /* find correction factors */  delta_d = node->data[DELTA_D];  delta_r = node->data[DELTA_R];  /* make node a leaf node */  node->data[DELTA_D] = 0.0;  node->data[DELTA_R] = 0.0;  node->data[LAMBDA] = HUGE;  node->data[LAMBDA_MIN] = HUGE;  /* update the internal nodes including the root */  while (node->parent != NULL) {    node = node->parent;    node->data[DELTA_D] -= delta_d;    node->data[DELTA_R] -= delta_r;    node->data[LAMBDA] = -1.0 * node->data[DELTA_D] / node->data[DELTA_R];    node->data[LAMBDA_MIN] = minimum(node->data[LAMBDA],				     node->left_child->data[LAMBDA_MIN],				     node->right_child->data[LAMBDA_MIN]);  }}DISTTYPE minimum(num1,num2,num3)     DISTTYPE num1,num2,num3;{  if (num1 < num2) {    if (num1 < num3) {      return(num1);    }    else {      return(num3);    }  }  if (num2 < num3) {    return(num2);  }  else {    return(num3);  }}void prune(node,subtree_number)     TreeNode *node;     long     subtree_number;{  if ((node->count > 0) && (node->count <= subtree_number)) {    node->left_child = NULL;    node->right_child = NULL;  }  if (node->left_child != NULL) {    prune(node->left_child,subtree_number);    prune(node->right_child,subtree_number);  }}long count_nodes(root)     TreeNode *root;{  TreeNode *node;  long     n;  if(!(node = newnode())) {    fprintf(stderr,"%s: %s\n",programname,NOMEMORY);    return(0);  }  node = root;  /* count the number of nodes */  n = 0;  for ( ; ; ) {    /* determine node position and from this find the next node to use */    if (node->left_child == NULL) { /* node is terminal, find next node */      if (node->right_child != NULL) { /* test tree fidelity */	fprintf(stderr,"%s: %s\n",programname,NOTREE);	return(0);      }      n++; /* increment count of nodes */      while ((node != root) && (node == node->parent->right_child)) {	node = node->parent; /* continue with the leaf node's parent */      }      /* test tree structure fidelity */      if (node == root) break;      else if(node->parent->right_child == NULL) {	fprintf(stderr,"%s: %s\n",programname,NOTREE);	return(0);      }      else {	node = node->parent->right_child;      }    }    else { /* node is not a terminal node, go to the left child */      /* test tree structure fidelity */      if((node->left_child == NULL) || (node->right_child == NULL)) {	fprintf(stderr,"%s: %s\n",programname,NOTREE);	return(FALSE);      }      n++; /* increment count of nodes */      node = node->left_child;    }  }  return(n);}long pruned_count(root)     TreeNode *root;{  TreeNode *node;  long     n;  if(!(node = newnode())) {    fprintf(stderr,"%s: %s\n",programname,NOMEMORY);    return(0);  }  node = root;  /* count the number of nodes just pruned */  n = 0;  for ( ; ; ) {    /* determine node position and from this find the next node to use */    /* node is terminal, find next node */    if (node->data[LAMBDA_MIN] == HUGE) {      n++; /* increment count of nodes */      while ((node != root) && (node == node->parent->right_child)) {	node = node->parent; /* continue with the leaf node's parent */      }      /* test tree structure fidelity */      if (node == root) break;      else if(node->parent->right_child == NULL) {	fprintf(stderr,"%s: %s\n",programname,NOTREE);	return(0);      }      else {	node = node->parent->right_child;      }    }    /* node is not a terminal node, go to the left child */    else {      /* test tree structure fidelity */      if((node->left_child == NULL) || (node->right_child == NULL)) {	fprintf(stderr,"%s: %s\n",programname,NOTREE);	return(FALSE);      }      n++; /* increment count of nodes */      node = node->left_child;    }  }  return(n);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区日韩二区欧美三区| 亚洲最大成人综合| 91精品婷婷国产综合久久性色| 91小视频在线观看| 欧美专区日韩专区| 1区2区3区国产精品| 在线一区二区三区四区| 北岛玲一区二区三区四区| 国产**成人网毛片九色| 国产成人av一区二区三区在线| 国产精品一区二区在线观看不卡| 精品亚洲成a人在线观看| 国产伦精品一区二区三区视频青涩| 狠狠色狠狠色综合系列| 国产乱色国产精品免费视频| 丁香另类激情小说| jizzjizzjizz欧美| 欧美影院一区二区| 欧美一级视频精品观看| 久久久久国产精品麻豆ai换脸 | 成人毛片在线观看| av网站一区二区三区| 99久久精品国产毛片| 欧美性视频一区二区三区| 欧美高清dvd| 久久久久久久国产精品影院| 亚洲欧美中日韩| 日韩av电影免费观看高清完整版 | 日韩一区二区不卡| 欧美激情一区在线观看| 一区二区久久久久| 久久99精品国产麻豆婷婷| 高清在线观看日韩| 欧美人xxxx| 中文字幕免费不卡| 全部av―极品视觉盛宴亚洲| 成年人网站91| 日韩一区二区三区三四区视频在线观看 | 色综合一区二区| 69久久夜色精品国产69蝌蚪网| 久久久不卡网国产精品二区| 亚洲一区二区在线视频| 国产精品一区二区x88av| 色综合天天综合色综合av| 日韩精品一区二| 一区二区三区四区乱视频| 国产综合一区二区| 欧美精品久久99| 国产精品网站在线| 极品少妇xxxx精品少妇| 欧美三电影在线| 1000精品久久久久久久久| 久久精品噜噜噜成人88aⅴ| 色婷婷国产精品综合在线观看| 精品国产乱码久久久久久蜜臀| 亚洲精品视频免费看| 国产高清视频一区| 欧美成人国产一区二区| 三级久久三级久久久| 色哟哟国产精品| 欧美国产精品一区| 国产成人亚洲综合色影视| 日韩欧美www| 美女国产一区二区三区| 欧美乱妇15p| 婷婷中文字幕一区三区| 色婷婷久久久久swag精品| 中文字幕亚洲欧美在线不卡| 国产成人在线视频网站| 国产日韩影视精品| 国产风韵犹存在线视精品| 久久久99久久| 国产精品一区二区视频| 久久综合色8888| 经典三级在线一区| 欧美v日韩v国产v| 老司机精品视频导航| 日韩一区二区高清| 蜜桃视频第一区免费观看| 91精品国产综合久久久蜜臀图片| 视频一区视频二区中文| 欧美一卡2卡三卡4卡5免费| 极品少妇xxxx精品少妇| 国产视频一区不卡| 成人av网站在线| 日韩美女视频一区二区| 欧美一区二区久久久| 久久精品国产一区二区三区免费看| 91精品福利在线一区二区三区| 亚洲777理论| 欧美一区二区在线免费播放| 久久精品国产亚洲高清剧情介绍 | 日韩一级片在线观看| 一区二区三区成人| 欧美高清激情brazzers| 精品一区二区三区日韩| 国产精品午夜久久| 欧美视频三区在线播放| 免费日韩伦理电影| 国产日韩欧美在线一区| 91久久香蕉国产日韩欧美9色| 日韩精品乱码免费| 久久精品人人做| 在线视频观看一区| 久久超级碰视频| 一区二区三区在线视频免费| 欧美成va人片在线观看| 91麻豆国产精品久久| 青青草国产成人99久久| 国产目拍亚洲精品99久久精品| 欧美体内she精高潮| 国产一区二区视频在线播放| 一区二区三区av电影| 精品国产污污免费网站入口| 91丨九色丨蝌蚪富婆spa| 热久久一区二区| 一区二区在线观看不卡| 欧美tickling挠脚心丨vk| 91麻豆国产精品久久| 国产一区二区调教| 婷婷一区二区三区| 亚洲欧美电影院| 国产日韩欧美激情| 日韩午夜精品电影| 欧美午夜宅男影院| 91蝌蚪porny| 欧美一区二视频| 欧美无乱码久久久免费午夜一区 | 人人狠狠综合久久亚洲| 国产精品久久久久久久久免费桃花 | 捆绑紧缚一区二区三区视频| 亚洲一区二区在线免费看| 国产精品区一区二区三| 日韩免费观看高清完整版在线观看| jiyouzz国产精品久久| 国产精品一级二级三级| 日韩黄色免费电影| 亚洲福利一区二区三区| ㊣最新国产の精品bt伙计久久| 2021国产精品久久精品| 日韩一区二区在线观看| 欧美丝袜第三区| 99国产精品国产精品久久| 国产成人精品免费一区二区| 麻豆成人av在线| 热久久国产精品| 麻豆精品一二三| 美女一区二区久久| 麻豆91精品91久久久的内涵| 日韩不卡一区二区| 日本aⅴ精品一区二区三区 | 久久久久久久电影| 国产亚洲欧美激情| 中文字幕欧美区| √…a在线天堂一区| 综合分类小说区另类春色亚洲小说欧美| 国产亚洲一区二区三区| 国产日韩欧美高清在线| 欧美激情综合五月色丁香小说| 国产精品欧美综合在线| 中文字幕一区二区三区精华液 | 国产一区二区在线看| 国模套图日韩精品一区二区| 国产精品影音先锋| av中文字幕亚洲| 在线精品视频免费播放| 欧美视频三区在线播放| 日韩精品一区二区在线| 久久久综合激的五月天| 自拍偷拍亚洲激情| 亚洲18色成人| 国产在线国偷精品免费看| 成人涩涩免费视频| 欧美午夜精品久久久久久超碰| 欧美日韩一区二区在线观看| 日韩精品在线一区二区| 日本一区二区免费在线观看视频 | 欧美一级淫片007| 国产三级精品在线| 亚洲一二三区视频在线观看| 日本中文字幕一区二区有限公司| 精品亚洲免费视频| 一本一道久久a久久精品综合蜜臀| 欧美日韩免费观看一区二区三区| 日韩一区二区在线播放| 自拍偷拍亚洲欧美日韩| 日本不卡在线视频| youjizz久久| 欧美一卡二卡三卡| 亚洲色图制服诱惑| 九九视频精品免费| 91成人免费在线| 久久久久综合网| 午夜久久久久久| 99久久99久久精品国产片果冻| 91精品免费观看| 亚洲色图在线播放| 国产精品亚洲一区二区三区妖精 | 国产三级精品三级| 日本va欧美va瓶|