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

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

?? fptn20.c

?? 關(guān)聯(lián)規(guī)則的頻繁項集算法bomo的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* fptN20.c (release mode) *//* Mining N-most interesting large itemsets *//* array of linked lists for support[], largeItemset[][][] and numLarge[] *//* redo mining if there is not enough k-itemsets *//* modifications: 1, 6, 7, 8, 4, 9, 13, 14 *//* N21.c + N16.c */#include<stdio.h>#include<stdlib.h>#include<string.h>#include <sys/resource.h>#include <sys/times.h>#include <unistd.h>/***** Data Structure *****/typedef struct FPnode *FPTreeNode;typedef struct Childnode *childLink;typedef struct Childnode {	FPTreeNode node;	childLink next;} ChildNode;typedef struct FPnode {        /* int leaf; */        int item;        int count;	int numPath; 	FPTreeNode parent;        childLink children;        FPTreeNode hlink;} FPNode;typedef struct Itemsetnode *LargeItemPtr;typedef struct Itemsetnode {	int support;	int *itemset;	LargeItemPtr next;} ItemsetNode;		/***** Global Variables *****/int startHeader;int round=0;LargeItemPtr *largeItemset;int *numLarge;int *support1;int *largeItem1;int *limit;int *thresholdK;FPTreeNode root=NULL;FPTreeNode *headerTableLink;int headerTableSize;int N;int expectedK;int realK;int threshold;int oldThreshold;int numItem;int numTrans;float decreaseRate;char dataFile[50];char treeFile[50];char outFile[50];int *arrThresholdK;void destroyTree(FPTreeNode node, int level){ childLink temp1, temp2; if (node == NULL) return; temp1 = node->children; while(temp1 != NULL) {	temp2 = temp1->next;	destroyTree(temp1->node, level+1);	free(temp1);	temp1 = temp2; } free(node); return;}void destroy(){ LargeItemPtr aLargeItemset;  int i; for (i=0; i < realK; i++) {	aLargeItemset = largeItemset[i];	while (aLargeItemset != NULL) {		largeItemset[i] = largeItemset[i]->next;		free(aLargeItemset->itemset);		free(aLargeItemset);		aLargeItemset = largeItemset[i];	} } free(largeItemset); free(numLarge); free(support1); free(largeItem1); free(limit); destroyTree(root, 1); free(headerTableLink); free(thresholdK); return;}/* swap x th element and i th element */void swap2(int *support, int x, int i){  int temp;  temp = support[x]; support[x] = support[i]; support[i] = temp;  return;}/* Quick sort support[] and the corresponding itemset[] in descending order. * Parameters: *      support[]	-> array to be sorted *      itemset[]	-> array to be sorted *      low		-> lower bound index of the array to be sorted *      high		-> upper bound index of the array to be sorted *      size		-> size of the array *	length		-> length of an itemset */void q_sort2(int *support, int low,int high, int size){ int pass; int highptr=high++;     /* highptr records the last element */ /* the first element in list is always served as the pivot */ int pivot=low; if(low>=highptr) return; do {	/* find out 1st element value larger than the pivot's */	pass=1;	while(pass==1) {		if(++low<size) {			if(support[low] > support[pivot])				pass=1;			else pass=0;		} else pass=0;	} 	/* find out 1st element value smaller than the pivot's */ 	pass=1; 	while(pass==1) {		if(high-->0) { 			if(support[high] < support[pivot]) 				pass=1;			else pass=0; 		} else pass=0; 	}	/* swap elements pointed by low pointer & high pointer */	if(low<high)		swap2(support, low, high); } while(low<=high); swap2(support, pivot, high); /* divide list into two for further sorting */  q_sort2(support, pivot, high-1, size);  q_sort2(support, high+1, highptr, size);  return;}void visitTree(FPTreeNode T, int level){ childLink child; if (level == realK-1) { 	child = T->children;  	while (child != NULL) {		arrThresholdK[N] = child->node->count;				q_sort2(arrThresholdK, 0, N, N+1);		child = child->next;	}	return; } child = T->children; while (child != NULL) {	visitTree(child->node, level+1);	child = child->next; } return;}void initThresholdK(){ int i; int level=0; thresholdK = (int *) malloc (sizeof(int) * realK); if (thresholdK == NULL) {	printf("out of memory\n");	exit(1); } arrThresholdK = (int *) malloc (sizeof(int) * N); if (arrThresholdK == NULL) {	printf("out of memory\n");	exit(1); } threshold = 1; for (i=0; i <= N; i++) {	arrThresholdK[i] = threshold; } visitTree(root, level); for (i=1; i < realK; i++) {	thresholdK[i] = arrThresholdK[N-1]; } free(arrThresholdK);  threshold = thresholdK[realK-1]; return;}/* swap x th element and i th element */void swap(int *support, int *itemset, int x, int i){  int temp;  temp = support[x]; support[x] = support[i]; support[i] = temp; temp = itemset[x]; itemset[x] = itemset[i]; itemset[i] = temp;  return;}/* Quick sort support[] and the corresponding itemset[] in descending order. * Parameters: *      support[]	-> array to be sorted *      itemset[]	-> array to be sorted *      low		-> lower bound index of the array to be sorted *      high		-> upper bound index of the array to be sorted *      size		-> size of the array *	length		-> length of an itemset */void q_sortD(int *support, int *itemset, int low,int high, int size){ int pass; int highptr=high++;     /* highptr records the last element */ /* the first element in list is always served as the pivot */ int pivot=low; if(low>=highptr) return; do {	/* find out 1st element value larger than the pivot's */	pass=1;	while(pass==1) {		if(++low<size) {			if(support[low] > support[pivot])				pass=1;			else pass=0;		} else pass=0;	} 	/* find out 1st element value smaller than the pivot's */ 	pass=1; 	while(pass==1) {		if(high-->0) { 			if(support[high] < support[pivot]) 				pass=1;			else pass=0; 		} else pass=0; 	}	/* swap elements pointed by low pointer & high pointer */	if(low<high)		swap(support, itemset, low, high); } while(low<=high); swap(support, itemset, pivot, high); /* divide list into two for further sorting */  q_sortD(support, itemset, pivot, high-1, size);  q_sortD(support, itemset, high+1, highptr, size);  return;}/* Quick sort indexList[] and freqItemP[] in ascending order. * Parameters: *      indexList[]     -> array to be sorted *      freqItemP[]     -> array to be sorted *      low             -> lower bound index of the array to be sorted *      high            -> upper bound index of the array to be sorted *      size            -> size of the array *      length          -> length of an itemset */void q_sortA(int *indexList, int *freqItemP, int low, int high, int size){ int pass; int highptr=high++;     /* highptr records the last element */ /* the first element in list is always served as the pivot */ int pivot=low; if(low>=highptr) return; do {        /* find out 1st element value smaller than the pivot's */        pass=1;        while(pass==1) {                if(++low<size) {                        if(indexList[low] < indexList[pivot])                                pass=1;                        else pass=0;                } else pass=0;        }        /* find out 1st element value larger than the pivot's */        pass=1;        while(pass==1) {                if(high-->0) {                        if(indexList[high] > indexList[pivot])                                pass=1;                        else pass=0;                } else pass=0;        }        /* swap elements pointed by low pointer & high pointer */        if(low<high)                swap(indexList, freqItemP, low, high); } while(low<=high); swap(indexList, freqItemP, pivot, high); /* divide list into two for further sorting */ q_sortA(indexList, freqItemP, pivot, high-1, size); q_sortA(indexList, freqItemP, high+1, highptr, size); return;}void addToLargeList(int *pattern, int patternSupport, int index){ LargeItemPtr aLargeItemset; LargeItemPtr aNode, previous=NULL; int i; aLargeItemset = (LargeItemPtr) malloc (sizeof(ItemsetNode)); if (aLargeItemset == NULL) {	printf("out of memory\n");	exit(1); } aLargeItemset->itemset = (int *) malloc (sizeof(int) * (index+1)); if (aLargeItemset->itemset == NULL) {	printf("out of memory\n");	exit(1); } aLargeItemset->support = patternSupport; for (i=0; i <= index; i++) {	aLargeItemset->itemset[i] = pattern[i]; } aLargeItemset->next = NULL; aNode = largeItemset[index]; if (aNode == NULL) {	largeItemset[index] = aLargeItemset; } else { 	while ((aNode != NULL) && (aNode->support > patternSupport)) {		previous = aNode;		aNode = aNode->next; 	} 	if (previous != NULL) {		previous->next = aLargeItemset;		aLargeItemset->next = aNode;	} else {		aLargeItemset->next = largeItemset[index];		largeItemset[index] = aLargeItemset;	} } (numLarge[index])++; if (numLarge[index] >= limit[index]) {        aNode = largeItemset[index];        for (i=1; i < limit[index]; i++)                aNode = aNode->next;        if (thresholdK[index] < aNode->support) {                thresholdK[index] = aNode->support;		threshold = thresholdK[realK-1];		for (i = realK-2; i > 0; i--)			if (thresholdK[i] < threshold)				threshold = thresholdK[i];	} }  return;}void combine(int *itemList, int *support, int start, int itemListSize, int *base, int baseSize){ int *pattern; int i, j;  if (baseSize >= realK) return; if (start == itemListSize) return; pattern = (int *) malloc (sizeof(int) * (baseSize+1)); if (pattern == NULL) {	printf("out of memory\n");	exit(1); } for (j=0; j < baseSize; j++)	pattern[j+1] = base[j]; for (i=start; i < itemListSize; i++) {	pattern[0] = itemList[i];	if ((baseSize > 0) && (support[i] < oldThreshold)		&& (support[i] >= thresholdK[baseSize]))		addToLargeList(pattern , support[i], baseSize);	combine(itemList, support, i+1, itemListSize, pattern, baseSize+1);	 } free(pattern);  return;}void insert_tree(int *freqItemP, int *indexList, int count, int ptr, int length, 			FPTreeNode T, FPTreeNode *headerTableLink, int *path)  { childLink newNode; FPTreeNode hNode; FPTreeNode hPrevious; childLink previous; childLink aNode; if (ptr == length) return; if (T->children == NULL) {	/* T has no children */	newNode = (childLink) malloc (sizeof(ChildNode));	if (newNode == NULL) {		printf("out of memory\n");		exit(1);	}	newNode->node = (FPTreeNode) malloc (sizeof(FPNode));	if (newNode->node == NULL) {		printf("out of memory\n");		exit(1);	}	newNode->node->item = freqItemP[ptr];	newNode->node->count = count;	newNode->node->numPath = 1;	newNode->node->parent = T;	newNode->node->children = NULL;	newNode->node->hlink = NULL;	newNode->next = NULL;	T->children = newNode;	hNode = headerTableLink[indexList[ptr]];	if (hNode == NULL) {		headerTableLink[indexList[ptr]] = newNode->node;	} else {		while (hNode != NULL) {			hPrevious = hNode;			hNode = hNode->hlink;		}		hPrevious->hlink = newNode->node;	}	insert_tree(freqItemP, indexList, count, ptr+1, length, 				T->children->node, headerTableLink, path);	T->numPath += *path; } else {	aNode = T->children;	while ((aNode != NULL) && (aNode->node->item != freqItemP[ptr])) {		previous = aNode;		aNode = aNode->next;	}	if (aNode == NULL) {		/* create a new child for T */ 		newNode = (childLink) malloc (sizeof(ChildNode));		if (newNode == NULL) {			printf("out of memory\n");			exit(1);		}		newNode->node = (FPTreeNode) malloc (sizeof(FPNode));		if (newNode->node == NULL) {			printf("out of memory\n");			exit(1);		}		newNode->node->item = freqItemP[ptr];		newNode->node->count = count;		newNode->node->numPath = 1;		newNode->node->parent = T;		newNode->node->children = NULL;		newNode->node->hlink = NULL;		newNode->next = NULL;		previous->next = newNode;				hNode = headerTableLink[indexList[ptr]];		if (hNode == NULL)			headerTableLink[indexList[ptr]] = newNode->node;		else {			while (hNode != NULL) {				hPrevious = hNode;				hNode = hNode->hlink;			}			hPrevious->hlink = newNode->node;		}		insert_tree(freqItemP, indexList, count, ptr+1, length, 					newNode->node, headerTableLink, path);		(*path)++;				T->numPath += *path;	} else {		/* match an existing child of T */		aNode->node->count += count;		insert_tree(freqItemP, indexList, count, ptr+1, length, 				aNode->node, headerTableLink, path);		T->numPath += *path; 	} } return;}void buildConTree(FPTreeNode *conRoot, FPTreeNode **conHeader, int conHeaderSize, int *conLargeItem,		int *conLargeItemSupport, FPTreeNode T, FPTreeNode *headerTable, int baseIndex, int headerSize){ FPTreeNode aNode; FPTreeNode aNode2; int *freqItemP; int *indexList; int path; int count; int i; /* build header table */ *conHeader = (FPTreeNode *) malloc (sizeof(FPTreeNode) * conHeaderSize); if (*conHeader == NULL) {        printf("out of memory\n");        exit(1); } for (i=0; i < conHeaderSize; i++)        (*conHeader)[i] = NULL; /* create root of the FP-tree */ (*conRoot) = (FPTreeNode) malloc (sizeof(FPNode)); if (*conRoot == NULL) {        printf("out of memory\n");        exit(1); } (*conRoot)->numPath = 1; (*conRoot)->parent = NULL; (*conRoot)->children = NULL; (*conRoot)->hlink = NULL; freqItemP = (int *) malloc (sizeof(int) * conHeaderSize); if (freqItemP == NULL) {        printf("out of memory\n");        exit(1); } indexList = (int *) malloc (sizeof(int) * conHeaderSize); if (indexList == NULL) {        printf("out of memory\n");        exit(1); }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美久久久| 国产精品每日更新| 成人做爰69片免费看网站| 亚洲制服丝袜av| 国产午夜精品理论片a级大结局| 欧美性三三影院| 成人深夜视频在线观看| 捆绑调教美女网站视频一区| 一区二区三区中文字幕精品精品| 久久在线观看免费| 精品视频一区三区九区| 99视频精品全部免费在线| 狠狠色丁香久久婷婷综合_中| 亚洲午夜私人影院| 亚洲三级在线免费| 日本一区二区视频在线观看| 精品免费一区二区三区| 欧美一级理论片| 欧美在线观看禁18| 色综合久久久久综合体| 成人精品免费网站| 国产精品一区在线观看乱码| 另类专区欧美蜜桃臀第一页| 日韩国产在线一| 亚洲一区二三区| 洋洋成人永久网站入口| 亚洲欧洲性图库| 国产精品乱码一区二区三区软件| 久久天堂av综合合色蜜桃网| 精品久久99ma| 日韩你懂的电影在线观看| 欧美一区二区三区免费观看视频| 在线播放/欧美激情| 欧美日韩一区高清| 欧美日韩三级在线| 欧美日精品一区视频| 欧美亚洲禁片免费| 欧美精品自拍偷拍| 91精品国产综合久久久蜜臀图片| 欧美美女网站色| 欧美日本一道本在线视频| 欧美剧在线免费观看网站| 欧美日韩国产精品成人| 91麻豆精品国产自产在线| 717成人午夜免费福利电影| 制服丝袜中文字幕亚洲| 欧美一区二区性放荡片| 欧美电影免费观看高清完整版在线 | 欧美日韩成人高清| 91精品国产黑色紧身裤美女| 日韩一区二区三区视频在线观看| 精品盗摄一区二区三区| 久久精品视频一区二区| 亚洲欧洲精品一区二区三区不卡| 自拍偷拍欧美激情| 亚洲一区二区三区四区不卡| 亚洲成人免费看| 久88久久88久久久| 国产精品一区二区三区四区| 成人91在线观看| 欧美中文一区二区三区| 欧美一区二区视频网站| 久久九九影视网| 亚洲视频精选在线| 午夜久久久影院| 国产在线精品一区二区三区不卡| 国产91在线观看丝袜| 在线亚洲一区二区| 日韩欧美二区三区| 欧美激情一区二区三区在线| 一区二区三区精品在线| 日本一不卡视频| 成人av电影在线| 欧美日本在线一区| 久久久久久97三级| 亚洲精品日韩一| 极品少妇一区二区| 91天堂素人约啪| 欧美一区二区三区免费视频 | 在线不卡中文字幕播放| 久久久亚洲精华液精华液精华液 | 黄色日韩网站视频| 91麻豆成人久久精品二区三区| 欧美疯狂性受xxxxx喷水图片| 久久精品欧美一区二区三区麻豆| 亚洲综合一区在线| 国产成人在线观看| 欧美精品黑人性xxxx| 国产亲近乱来精品视频| 午夜视频久久久久久| 国产99久久久精品| 欧美一级片在线看| 日韩一区在线看| 国内精品伊人久久久久av一坑| 在线观看日韩精品| 日本一区二区免费在线| 日韩国产欧美三级| 91福利社在线观看| 亚洲国产高清aⅴ视频| 免费日本视频一区| 欧美在线免费播放| 国产精品成人一区二区艾草 | 亚洲电影一级片| 成人黄动漫网站免费app| 日韩美女在线视频| 天堂va蜜桃一区二区三区漫画版| 北岛玲一区二区三区四区| 日韩亚洲欧美综合| 亚洲成人高清在线| 在线观看视频一区二区| 国产精品的网站| 国产98色在线|日韩| 欧美精品一区视频| 美女网站色91| 欧美二区三区91| 午夜欧美电影在线观看| 91国产视频在线观看| 亚洲人成网站精品片在线观看| 豆国产96在线|亚洲| 久久综合中文字幕| 国内久久精品视频| 精品美女被调教视频大全网站| 亚洲一区二区三区四区在线| 色呦呦网站一区| 亚洲欧美日韩国产中文在线| 99免费精品视频| 国产精品国产a| av在线一区二区三区| 一色桃子久久精品亚洲| av成人免费在线观看| 蜜臀精品一区二区三区在线观看| 欧美午夜片在线观看| 洋洋成人永久网站入口| 在线观看亚洲成人| 亚洲大型综合色站| 欧美日本国产视频| 欧美bbbbb| 精品国产一二三| 国产一区中文字幕| 国产女同性恋一区二区| 不卡的电影网站| 亚洲欧美激情视频在线观看一区二区三区 | 国产·精品毛片| 亚洲国产精品t66y| 不卡在线视频中文字幕| 国产精品网站在线播放| av在线不卡网| 亚洲永久精品国产| 69久久99精品久久久久婷婷| 青娱乐精品在线视频| 精品久久五月天| 成人国产精品视频| 亚洲小说欧美激情另类| 777奇米四色成人影色区| 久久超碰97中文字幕| 国产拍欧美日韩视频二区| 91麻豆高清视频| 日韩成人免费电影| 久久久99久久| 色猫猫国产区一区二在线视频| 亚洲gay无套男同| 精品国产乱码久久久久久老虎 | 夜夜揉揉日日人人青青一国产精品| 在线视频一区二区免费| 日韩影院在线观看| 国产欧美一区二区精品忘忧草| 91在线视频在线| 日韩经典中文字幕一区| 欧美激情一区二区三区全黄| 欧美在线色视频| 国产露脸91国语对白| 亚洲女同ⅹxx女同tv| 日韩一区二区在线看片| 波多野结衣中文字幕一区二区三区| 一区二区免费看| 久久青草欧美一区二区三区| 色欧美片视频在线观看 | 麻豆成人综合网| 椎名由奈av一区二区三区| 91精品久久久久久蜜臀| 99这里只有精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品美女一区二区| 欧美久久免费观看| 波多野结衣中文一区| 麻豆精品一区二区综合av| 亚洲情趣在线观看| 久久色视频免费观看| 欧美日韩综合在线免费观看| 成人丝袜高跟foot| 久久国产精品免费| 亚洲在线中文字幕| 亚洲国产成人午夜在线一区 | 欧美日韩久久一区二区| 国产精品一区二区久久不卡| 婷婷国产在线综合| 亚洲精品伦理在线| 国产精品三级av在线播放| 日韩一区二区不卡| 在线观看亚洲成人|