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

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

?? closedtree.cpp

?? 數據挖掘中的序列模式挖掘算法clospan的C++實現
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#include <assert.h>#include "../Global.h"#include "../ProjDB.h"#if defined(_ANOTHER_CLOSED_APPROACH)#include "ClosedTree.h"ItemSet supSet;ItemSet subSet;int zzz=0;bool TreeNodeLess( TreeNode * a, TreeNode * b ){	if( (*a).ItemIsIntra == (*b).ItemIsIntra )		return (*a).Item < (*b).Item; 	else if( (*a).ItemIsIntra && !(*b).ItemIsIntra )		return true;	else		return false;}int TreeNodeCompare( TreeNode ** a, TreeNode ** b ){	if( (*(*a)).ItemIsIntra == (*(*b)).ItemIsIntra )		if( (*(*a)).Item == (*(*b)).Item )			return 0;		else if( (*(*a)).Item < (*(*b)).Item )			return -1;		else			return 1;	else if( (*(*a)).ItemIsIntra && !(*(*b)).ItemIsIntra )		return -1;	else		return 1;}inline TreeNode * GetLastItemSet(TreeNode * treeNode, ItemSet *itemSet){	int *itemArray=itemSet->ItemArray;	int i=0;	itemSet->reset();	do {		itemArray[i++]=treeNode->Item;		if (!treeNode->ItemIsIntra)			break;		else			treeNode=treeNode->Parent;	} while (treeNode->Items > 0);		itemSet->Count=i;	return (treeNode->Parent);}inline int isContained_DBSizeEqual(struct PROJ_DB *pDB, TreeNode *currentLevel, TreeNode *candidate) {		int		myItem = pDB->Item;	bool	myItemIsIntra = pDB->ItemIsIntra;	int		dir;	bool	isContained;	TreeNode *supNode;	TreeNode *subNode;	if ((myItem != candidate->Item) || (candidate->Items == (currentLevel->Items+1))) 		return 0;	if ( candidate->Items > (currentLevel->Items + 1))		dir=1;	else		dir=-1;	if (candidate->ItemIsIntra) {		if (myItemIsIntra) {			candidate=candidate->Parent;		}		else {			//in this case, supNode must be candidate, subNode must be currentLevel			while (candidate->ItemIsIntra && candidate->Items >0)				candidate = candidate ->Parent;			candidate=candidate->Parent;			if ((candidate->Items < currentLevel->Items) || (candidate->ItemsetNumber < currentLevel->ItemsetNumber))				return 0;					}	}	else {		if (myItemIsIntra) {			//in this case, supNode must be currentLevel, subNode must be candidate			while (currentLevel->ItemIsIntra && currentLevel->Items >0)				currentLevel = currentLevel ->Parent;			currentLevel=currentLevel->Parent;			if ((candidate->Items > currentLevel->Items) || (candidate->ItemsetNumber > currentLevel->ItemsetNumber))				return 0;					}		else {			candidate=candidate->Parent;		}	}		if (currentLevel->Items == 0) {		return 1;	}	if (candidate->Items == 0) {		return -1;	}	if ( dir == 1) {		supNode=candidate;		subNode=currentLevel;		}	else {		supNode=currentLevel;		subNode=candidate;	}	isContained=false;	supNode=GetLastItemSet(supNode, &supSet);	subNode=GetLastItemSet(subNode, &subSet);	while (1) {		if (subSet.IsSubsetOf(&supSet)) {			if (subNode->Items == 0) {				isContained=true;				break;			}			if ((supNode->Items >= subNode->Items) && (supNode->ItemsetNumber >= subNode->ItemsetNumber)) {				supNode=GetLastItemSet(supNode, &supSet);				subNode=GetLastItemSet(subNode, &subSet);			}			else				break;		}		else {			if (supNode->Items == 0) // unnecessary to check any more.				break;			if ((supNode->Items >= subNode->Items) && (supNode->ItemsetNumber >= subNode->ItemsetNumber)) {				supNode=GetLastItemSet(supNode, &supSet);			}			else				break;		}	}	if (isContained)		return dir;	else		return 0;}void updateNodeInfo(TreeNode *treeNode, int extraItems, int extraItemsetNumber){	NodeVector::iterator it, endit;	treeNode->Items += extraItems;	treeNode->ItemsetNumber += extraItemsetNumber;	for (it=treeNode->Children->begin(), endit=treeNode->Children->end(); it != endit; it++) {		if ((*it)->Parent == treeNode)				updateNodeInfo((*it), extraItems, extraItemsetNumber);	}}void updateOldNodeInfo(TreeNode* parent, TreeNode *pNode, TreeNode *qNode){	TreeNode **Res;	Res = (TreeNode **) bsearch( &pNode, &(*(parent->Children))[0], (*(parent->Children)).size(), sizeof( TreeNode *), (int (*)(const void*, const void*))TreeNodeCompare );	*Res=qNode;}void checkNodeInfo(TreeNode *treeNode){		int items;	int itemset_number;	TreeNode *parent = treeNode->Parent;	NodeVector::iterator it, endit;	if( treeNode->ItemIsIntra ) {		itemset_number = parent->ItemsetNumber;		items = parent->Items + 1;	}	else {		itemset_number = parent->ItemsetNumber + 1;		items = parent->Items + 1;	}	if ((items != treeNode->Items) || (itemset_number != treeNode->ItemsetNumber))		printf("Node Info: Items or ItemsetNumber Error");	for (it=treeNode->Children->begin(), endit=treeNode->Children->end(); it != endit; it++) {		if ((*it)->Parent == treeNode)			checkNodeInfo((*it));	}		}//int qqq;int addSequence(struct PROJ_DB *pDB, TreeNode **currentLevelp, ReverseHashTable *reverseTable){	TreeNode   *pNode, *qNode;	TreeNode *currentLevel=*currentLevelp;	ReverseMap pMap;	ReverseHashTable::iterator it, endit;	int ret, myNumOfItems;		/*printf("SSN: %d Item: %d\n", ++qqq, pDB->Item);	if (qqq == 20496) {		printf("hello\n");	}*/		//myNumOfItems=pDB->NumOfItems + pDB->m_nMaxSup - pDB->m_nSup;	myNumOfItems=pDB->NumOfItems + pDB->m_nMaxSup;	//myNumOfItems=pDB->NumOfItems;	/*if (myNumOfItems == 3378012)			printf("GUGU\n");	*/	pMap=(*reverseTable).equal_range(myNumOfItems);	for (it=pMap.first, endit=pMap.second; it != endit; it++) {		pNode=(*it).second;		if (pNode->Support != pDB->m_nMaxSup)			continue;		ret=isContained_DBSizeEqual(pDB, currentLevel, pNode);		switch (ret) {			case 0:				continue;			case 1:  //Backward SubPattern				//(*(currentLevel->Children)).push_back(pNode);				//(*(currentLevel->IntraChildren))[pDB->Item]=pNode;				//qNode is a mirror of pNode, but has slight different				//the major goal is to let closed_maxPruning much easier				qNode= new TreeNode();				qNode= currentLevel->AddChildWithoutChecking( pDB->Item, pDB->ItemIsIntra, pDB->m_nMaxSup);				qNode->SetProjDBSize(myNumOfItems);				qNode->Children=pNode->Children;				return EQUAL_PROJECT_DB_SIZE;			case -1: //Backward SuperPattern				qNode= new TreeNode(pNode);				updateOldNodeInfo(pNode->Parent, pNode, qNode);				if (pDB->ItemIsIntra) {					updateNodeInfo(pNode, 								   currentLevel->Items - pNode->Parent->Items,								   currentLevel->ItemsetNumber - pNode->Parent->ItemsetNumber);					//checkNodeInfo(currentLevel);					pNode->ItemIsIntra=true;					pNode->Parent=currentLevel;					(*(currentLevel->Children)).push_back(pNode);					inplace_merge((*(currentLevel->Children)).begin(), (*(currentLevel->Children)).end()-1, 								  (*(currentLevel->Children)).end(), TreeNodeLess );				}				else {					updateNodeInfo(pNode, 								   currentLevel->Items - pNode->Parent->Items,								   currentLevel->ItemsetNumber - pNode->Parent->ItemsetNumber);					//checkNodeInfo(currentLevel);					//pNode->Parent->Children->erase(pNode);					pNode->ItemIsIntra=false;					pNode->Parent=currentLevel;					(*(currentLevel->Children)).push_back(pNode);					inplace_merge((*(currentLevel->Children)).begin(), (*(currentLevel->Children)).end()-1, 								  (*(currentLevel->Children)).end(), TreeNodeLess );				}								//reverseTable->erase(it);				//reverseTable->insert(ReverseHashTable::value_type(myNumOfItems, qNode));									return EQUAL_PROJECT_DB_SIZE;			default:				break;		}	}		zzz++;	pNode= new TreeNode();	pNode= currentLevel->AddChildWithoutChecking( pDB->Item, pDB->ItemIsIntra, pDB->m_nMaxSup);	pNode->SetProjDBSize(myNumOfItems);	(*currentLevelp)=pNode;	reverseTable->insert(ReverseHashTable::value_type(myNumOfItems, pNode));	return INEQUAL_PROJECT_DB_SIZE;}void closed_maxChecking(TreeNode *pNode, TreeNode *pNode_parent, TreeNode *qNode){	NodeVector::iterator it, endit;	if (pNode == NULL)		return;	if (pNode->Parent != pNode_parent)		return;#if defined (_ANOTHER_MAX_APPROACH)		pNode->max=false;#else	if (pNode->Support == qNode->Support)		pNode->closed = false;#endif	for (it=qNode->Children->begin(), endit=qNode->Children->end(); it != endit; it++) 		closed_maxChecking (pNode->FindChild((*it)->Item, (*it)->ItemIsIntra), pNode, (*it));}void closed_maxPruning(TreeNode *treeNode, TreeNode *parent){	NodeVector::iterator it, endit, ti;	bool myItemIsIntra=treeNode->ItemIsIntra;	TreeNode *pNode;#if defined (_ANOTHER_MAX_APPROACH)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频麻豆| 国产一区二区不卡在线| 久久国产精品无码网站| 97久久久精品综合88久久| 欧美大胆一级视频| 亚洲午夜电影网| 99久久99久久久精品齐齐| 欧美mv和日韩mv的网站| 午夜精品视频在线观看| 99久久精品国产一区| 国产日产亚洲精品系列| 蜜桃视频在线观看一区| 欧美丝袜第三区| 亚洲欧美日韩精品久久久久| 成人综合日日夜夜| 国产婷婷一区二区| 日韩二区三区四区| 欧美精品乱码久久久久久| 亚洲六月丁香色婷婷综合久久| 成人一区二区三区视频在线观看| xfplay精品久久| 久久不见久久见免费视频7| 欧美精品乱码久久久久久| 亚洲成人av中文| 欧美性猛交xxxxxx富婆| 亚洲激情校园春色| 欧美色手机在线观看| 日韩国产精品久久久| 在线观看视频欧美| 亚洲免费在线观看视频| 91丨porny丨中文| 亚洲激情校园春色| 欧美日韩在线播| 日韩综合一区二区| 欧美一区二区三区系列电影| 日韩av电影天堂| 日韩精品一区二区三区四区| 欧美a级理论片| 日韩欧美激情四射| 极品少妇xxxx精品少妇| 2020国产精品| 成人黄色综合网站| 一区二区三区在线免费视频| 欧美天堂亚洲电影院在线播放| 日韩和欧美一区二区| 欧美变态凌虐bdsm| 成人av电影在线网| 亚洲午夜影视影院在线观看| 欧美一级二级三级蜜桃| 国内精品久久久久影院色 | 国产麻豆欧美日韩一区| 久久精品一区二区三区av| 成人性视频免费网站| 亚洲欧美日韩在线| 日韩一区二区免费高清| 国产69精品久久777的优势| 中文字幕一区二区不卡| 欧美日韩国产bt| 国产麻豆精品一区二区| 亚洲精品乱码久久久久久日本蜜臀| 欧美日韩美女一区二区| 国产美女在线精品| 亚洲精品国产第一综合99久久 | 久久久精品影视| 色婷婷激情综合| 国产做a爰片久久毛片| 国产精品素人一区二区| 欧美精品日日鲁夜夜添| 成人小视频在线| 日本v片在线高清不卡在线观看| 国产女人aaa级久久久级| 色乱码一区二区三区88| 激情久久五月天| 一区二区三区四区乱视频| 欧美大胆人体bbbb| 在线欧美一区二区| 国产91露脸合集magnet| 午夜视频在线观看一区二区| 国产农村妇女精品| 欧美精品在线一区二区| av网站免费线看精品| 美女尤物国产一区| 亚洲国产日产av| 国产精品美女久久久久久| 欧美国产一区视频在线观看| 欧美色欧美亚洲另类二区| 成人国产亚洲欧美成人综合网| 视频一区在线视频| 亚洲精品中文在线| 国产精品久久午夜夜伦鲁鲁| 精品播放一区二区| 91精品国产乱| 欧美亚洲一区三区| 97久久精品人人爽人人爽蜜臀| 国产一区二区在线视频| 日日摸夜夜添夜夜添亚洲女人| 一区二区不卡在线播放 | 91精品中文字幕一区二区三区| 97久久超碰国产精品电影| 国产精品18久久久| 国产精品1024久久| 韩日av一区二区| 奇米精品一区二区三区在线观看一 | 中文字幕一区二区三区在线观看| 日韩一区二区精品葵司在线| 欧美日韩国产色站一区二区三区| 91在线播放网址| 成人午夜av电影| 国产成都精品91一区二区三| 极品少妇一区二区三区精品视频| 日韩成人伦理电影在线观看| 亚洲一区二区五区| 午夜精品国产更新| 性欧美大战久久久久久久久| 日韩电影在线一区| 蜜桃在线一区二区三区| 国内精品国产成人国产三级粉色| 亚洲一级二级在线| 亚洲成人动漫av| 青娱乐精品视频在线| 免费久久精品视频| 国内精品伊人久久久久av一坑 | 久久美女艺术照精彩视频福利播放| 日韩午夜小视频| 久久亚洲影视婷婷| 一区二区三区四区视频精品免费| 亚洲色图清纯唯美| 亚洲图片欧美视频| 日韩精品亚洲一区| 国产麻豆视频一区| 91香蕉视频污在线| 欧美男同性恋视频网站| 日韩欧美一二三四区| 久久久亚洲精品石原莉奈| 国产精品国产三级国产普通话蜜臀 | 99国内精品久久| 91黄视频在线观看| 3atv在线一区二区三区| 26uuu久久天堂性欧美| 国产精品美日韩| 一级日本不卡的影视| 免费成人在线影院| 国产激情一区二区三区桃花岛亚洲| 成人激情视频网站| 在线成人免费视频| 久久久噜噜噜久久中文字幕色伊伊| 日韩一区欧美小说| 免费观看91视频大全| 成人av在线资源网| 欧美一区二区在线看| 中日韩免费视频中文字幕| 午夜精品一区在线观看| 国产丶欧美丶日本不卡视频| 色婷婷久久99综合精品jk白丝| 日韩精品一区二区三区swag| 国产精品进线69影院| 老司机午夜精品| 日本丶国产丶欧美色综合| 日韩你懂的在线观看| 亚洲精品视频在线看| 国产综合色精品一区二区三区| 色激情天天射综合网| 中文字幕av一区二区三区高| 亚洲国产日韩a在线播放性色| 国产成人av电影在线| 日韩情涩欧美日韩视频| 亚洲精品国产成人久久av盗摄| 久久国产精品区| 欧美日韩黄视频| 国产精品久久久久久久久免费樱桃| 蜜臀久久99精品久久久久宅男| 在线影院国内精品| 中文字幕亚洲综合久久菠萝蜜| 韩国女主播成人在线观看| 在线播放视频一区| 亚洲免费毛片网站| 风间由美性色一区二区三区| 欧美不卡视频一区| 成人高清免费在线播放| 精品三级在线观看| 日韩电影免费一区| 欧美人与z0zoxxxx视频| 一区二区三区精品| 色先锋资源久久综合| 国产精品久久久久久福利一牛影视| 激情亚洲综合在线| 精品久久久久香蕉网| 蜜臀av性久久久久av蜜臀妖精| 欧美日本视频在线| 日韩**一区毛片| 欧美一区二区三区成人| 亚洲最大的成人av| 在线观看av一区二区| 一区av在线播放| 在线观看亚洲精品| 亚洲国产综合在线| 3d动漫精品啪啪1区2区免费| 日韩 欧美一区二区三区| 日韩午夜激情电影| 国产精品视频你懂的|