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

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

?? closedseqtree.cpp

?? 數據挖掘中的序列模式挖掘算法clospan的C++實現
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
#include <assert.h>#include "../Global.h"#include "../ProjDB.h"#if !defined( _FIND_MAX_SEQS ) && !defined( _FIND_FREQUENT_SEQS )//#include "SequenceList.h"void RTATest( const struct PROJ_DB * pDB );///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////#if defined( _USE_OUTPUT_BUFFER )void EmptyBuffer( SequenceList * aList, Sequence * aSeq ){	Sequence * aBuf;	Sequence * aParent;	int tmpSup = 0;	if( n_max_mem < n_total_mem )		n_max_mem = n_total_mem;	aBuf = aSeq;	while( aBuf != NULL )	{		aParent = (*aBuf).Parent;		(*aBuf).ReferenceCount--;		if( (*aBuf).ReferenceCount <= 0 )		{			if( (*aBuf).Support > tmpSup )			{				tmpSup = (*aBuf).Support;				(*aList).AddIfClosedSeq( aBuf );			} else {				delete aBuf;			}		} else			break;		aBuf = aParent;	}		// Ignor parent sequences that have the same support, when traversing through their other children.	while( aBuf != NULL && (*aBuf).Support <= tmpSup )	{		(*aBuf).Support = -1;		aBuf = (*aBuf).Parent;	}}#endif///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////void main1( int argc, char** argv ){	printf( "This is SequenceList running!!!\n" );}//************************//************************Sequence::Sequence(){	StartPtr = NULL;	Support = 0;	Len = 0;#if defined( _USE_OUTPUT_BUFFER )	Parent = NULL;	ReferenceCount = 0;#endif}// No last -1, and -2 are presented.Sequence::Sequence( int * Ptr, int Len, int Sup ){	int tmp;	Support = Sup;	(*this).Len = Len;#if defined( _USE_OUTPUT_BUFFER )	Parent = NULL;	ReferenceCount = 0;#endif	tmp = (*this).Len * sizeof( int );	StartPtr = (int*) memalloc( tmp );	n_total_mem += ( tmp  + sizeof( *this ) );	memcpy( StartPtr, Ptr, tmp );}inline bool Sequence::EndOfSequence( int * aPtr ){	return (aPtr-StartPtr >= Len);}inline bool Sequence::EndOfItemSet( int * aPtr ){	return (*aPtr==-1) || (aPtr-StartPtr >= Len);}inline int Sequence::NumOfItemSets(){	int * ItemPtr;	int Result = 0;	if( Len>0 )		Result = 1;	for( ItemPtr = StartPtr; !EndOfSequence( ItemPtr ); ItemPtr++ )	{		if( *ItemPtr == -1 )			Result++;	}	return Result;}// Returns the address of the next itemset in aSeq, if itemset pointed to by ThisStart// is the subset of the itemset pointed to by SeqStart.inline int * Sequence::IsItemSetSubsetOf( int * ThisStart, int * SeqStart, Sequence * aSeq ){	int * aSeqPtr = SeqStart;	int * thisPtr = ThisStart;	while( !(*aSeq).EndOfSequence(aSeqPtr) )	{		if( *aSeqPtr == *thisPtr )		{			thisPtr++;			if( EndOfItemSet(thisPtr) )			{				while( !(*aSeq).EndOfItemSet(aSeqPtr) )					aSeqPtr++;				return ++aSeqPtr;			}		}		aSeqPtr++;		if( (*aSeq).EndOfItemSet(aSeqPtr) )			thisPtr = ThisStart;	}	return NULL;}// Returns true if this sequence is the closed subset of aSeq.bool Sequence::IsClosedSubsetOf( Sequence * aSeq ){	int * aSeqPtr = (*aSeq).StartPtr;	int * thisPtr = StartPtr;	if( Len == 0 )		return true;	if( (*aSeq).Len >= Len && (*aSeq).Len > 0 && (*aSeq).Support >= Support )	{		while( !(*aSeq).EndOfSequence(aSeqPtr) )		{			aSeqPtr = IsItemSetSubsetOf( thisPtr, aSeqPtr, aSeq );			if( aSeqPtr == NULL )				return false;			else {				while( !EndOfItemSet(thisPtr) )					thisPtr++;				if( EndOfSequence(++thisPtr) )					return true;			}		}	}	return false;}void Sequence::Print( FILE *aFile ){	int * TmpPtr = NULL;	fprintf( aFile, " <" );	TmpPtr = StartPtr;	if( TmpPtr!=NULL )		fprintf( aFile, " (" );	while( TmpPtr != NULL && TmpPtr-StartPtr <= Len )	{		if( TmpPtr-StartPtr == Len )			fprintf( aFile, ") " );		else if( *TmpPtr == -1 )		{				fprintf( aFile, ")  (" );		} else {			fprintf( aFile, " %d ", *TmpPtr );		}		TmpPtr++;	}	fprintf( aFile, "> " );	fprintf( aFile, "  Support = %d\n", Support );}Sequence::~Sequence(){	int tmp;	tmp = (*this).Len * sizeof( int );	n_total_mem -= ( tmp  + sizeof( *this ) );	freemem( (void**) &StartPtr );}//************************//************************//************************//************************#define _CONSIDER_LENinline bool SeqGreater( Sequence * a, Sequence * b ){#if defined( _CONSIDER_LEN )	if( (*a).Support > (*b).Support )		return true;	else if( (*a).Support < (*b).Support )		return false;	else if( (*a).Len > (*b).Len )		return true;	else if( (*a).Len < (*b).Len )		return false;	for( int i=0; i<(*a).Len; i++ )	{		if( *((*a).StartPtr+i) > *((*b).StartPtr+i) )			return true;		if( *((*a).StartPtr+i) < *((*b).StartPtr+i) )			return false;	}	return false;#else	return (*a).Support > (*b).Support;#endif}inline bool SeqGreaterEqual( Sequence * a, Sequence * b ){#if defined( _CONSIDER_LEN )	if( (*a).Support > (*b).Support )		return true;	else if( (*a).Support < (*b).Support )		return false;	else		return (*a).Len >= (*b).Len;#else	return (*a).Support >= (*b).Support;#endif}inline bool SeqEqual( Sequence * a, Sequence * b ){#if defined( _CONSIDER_LEN )	return ( (*a).Support == (*b).Support ) && ( (*a).Len == (*b).Len );#else	return (*a).Support == (*b).Support;#endif}#if _NEW_SEQUENCE_LIST > 0 && _NEW_SEQUENCE_LIST < 20inline bool LenGreater( Sequence * a, Sequence * b ){	if( (*a).Len > (*b).Len )		return true;	else if( (*a).Len < (*b).Len )		return false;	for( int i=0; i<(*a).Len; i++ )	{		if( *((*a).StartPtr+i) > *((*b).StartPtr+i) )			return true;		if( *((*a).StartPtr+i) < *((*b).StartPtr+i) )			return false;	}	return false;}#endif // _NEW_SEQUENCE_LIST > 0 && _NEW_SEQUENCE_LIST < 20#if defined( _NEW_SEQUENCE_LIST )#if _NEW_SEQUENCE_LIST < 20SequenceList::SequenceList(){	NumOfAdds = 0;	NumOfDels = 0;	NumOfAddIfClosed = 0;	NumIsClosedSubsetOf = 0;}inline void SequenceList::AddSeq( Sequence * aSeq ){	NumOfAdds++;#if _NEW_SEQUENCE_LIST > 0	SeqMap::iterator Itrtr;	SeqList * tmpSeqList;	Itrtr = List.find( (*aSeq).Support );	if( Itrtr != List.end() )	{		tmpSeqList = (*Itrtr).second;	} else {		tmpSeqList = new SeqList();		List.insert( SeqMap::value_type( (*aSeq).Support, tmpSeqList ) );	}	(*tmpSeqList).push_back( aSeq );	// To keep the List vector sorted.	inplace_merge( (*tmpSeqList).begin(), (*tmpSeqList).end()-1, (*tmpSeqList).end(), LenGreater );#else //_NEW_SEQUENCE_LIST > 0	List.push_back( aSeq );	// To keep the List vector sorted.	inplace_merge( List.begin(), List.end()-1, List.end(), SeqGreater );#endif //_NEW_SEQUENCE_LIST > 0}inline SeqList::iterator SequenceList::Del( SeqList::iterator anItr ){	NumOfDels++;#if _NEW_SEQUENCE_LIST > 0#else //_NEW_SEQUENCE_LIST > 0	return List.erase( anItr );#endif //_NEW_SEQUENCE_LIST > 0}// Tries to add aSeq to the list if non of the list elements// is a closed superset of aSeq.// Sequences in the list that are closed subset of aSeq// will be deleted from the list.// Returns true if aSeq is added.bool SequenceList::AddIfClosedSeq( Sequence * aSeq ){	NumOfAddIfClosed++;#if _NEW_SEQUENCE_LIST > 0	SeqMap::iterator Itrtr;	SeqList::iterator ListItrtr;	SeqList * aList;	for( Itrtr = List.begin(); Itrtr != List.end() && (*Itrtr).first>=(*aSeq).Support; Itrtr++ )	{		aList = (*Itrtr).second;		for( ListItrtr = (*aList).begin(); ListItrtr != (*aList).end() && (*(*ListItrtr)).Len>=(*aSeq).Len; )		{			NumIsClosedSubsetOf++;			if( (*aSeq).IsClosedSubsetOf( (*ListItrtr) ) )				return false;			if( (*aSeq).Support == (*Itrtr).first && (*(*ListItrtr)).Len == (*aSeq).Len )			{				NumIsClosedSubsetOf++;				if( (*(*ListItrtr)).IsClosedSubsetOf( aSeq ) )				{					delete (*ListItrtr);					NumOfDels++;										ListItrtr = (*aList).erase( ListItrtr );				} else					ListItrtr++;			} else				ListItrtr++;		}	}	// Go to the list with equal support with aSeq.	if( Itrtr != List.begin() ) 	{		Itrtr--; 		if( (*(Itrtr)).first != (*aSeq).Support )			Itrtr++; 	}	while( Itrtr != List.end() ) 	{		aList = (*Itrtr).second;		for( ListItrtr = (*aList).end()-1; ListItrtr >= (*aList).begin() && (*(*ListItrtr)).Len<=(*aSeq).Len; )		{			NumIsClosedSubsetOf++;			if( (*(*ListItrtr)).IsClosedSubsetOf( aSeq ) )			{				delete (*ListItrtr);				NumOfDels++;									ListItrtr = (*aList).erase( ListItrtr ) - 1;			} else				ListItrtr--;		}		Itrtr++;	}	AddSeq( aSeq );	return true;#else //_NEW_SEQUENCE_LIST > 0	SeqList::iterator Itrtr;	Itrtr = List.begin();	while( Itrtr != List.end() && SeqGreaterEqual( (*Itrtr), aSeq ) ) 	{		NumIsClosedSubsetOf++;		if( (*aSeq).IsClosedSubsetOf( (*Itrtr) ) )			return false;		if( SeqEqual( aSeq, (*Itrtr) ) )		{			NumIsClosedSubsetOf++;			if( (*(*Itrtr)).IsClosedSubsetOf( aSeq ) )			{				delete (*Itrtr);				Itrtr = Del( Itrtr );			} else				Itrtr++;		} else			Itrtr++;	}	while( Itrtr != List.end() ) 	{		NumIsClosedSubsetOf++;		if( (*(*Itrtr)).IsClosedSubsetOf( aSeq ) )		{			delete (*Itrtr);			Itrtr = Del( Itrtr );		} else			Itrtr++;	}	AddSeq( aSeq );	return true;#endif //_NEW_SEQUENCE_LIST > 0}void SequenceList::Print( FILE *aFile ){	int ListSize = 0;	fprintf( aFile, "\n" );#if _NEW_SEQUENCE_LIST > 0	SeqMap::iterator Itrtr;	SeqList::iterator ListItrtr;	SeqList * aList;	for( Itrtr = List.begin(); Itrtr != List.end(); Itrtr++)	{		aList = (*Itrtr).second;		for( ListItrtr = (*aList).begin(); ListItrtr != (*aList).end(); ListItrtr++)		{			(*(*ListItrtr)).Print( aFile );			ListSize++;		}	}#else //_NEW_SEQUENCE_LIST > 0	SeqList::iterator Itrtr;	for( Itrtr = List.begin(); Itrtr != List.end(); Itrtr++)	{		(*(*Itrtr)).Print( aFile );		//fprintf( aFile, "\n" );	}	ListSize = List.size();#endif //_NEW_SEQUENCE_LIST > 0	fprintf( aFile, "\n" );	fprintf( aFile, "# of elements added %d\n", NumOfAdds );	fprintf( aFile, "# of elements deleteded %d\n", NumOfDels );	fprintf( aFile, "# of times AddIfClosedSeq called %d\n", NumOfAddIfClosed );	fprintf( aFile, "# of times IsClosedSubsetOf called %d\n", NumIsClosedSubsetOf );	fprintf( aFile, "# of elements in the list %d\n", ListSize );}SequenceList::~SequenceList(){#if _NEW_SEQUENCE_LIST > 0	SeqMap::iterator Itrtr;	SeqList::iterator ListItrtr;	SeqList * aList;	for( Itrtr = List.begin(); Itrtr != List.end(); Itrtr++)	{		aList = (*Itrtr).second;		for( ListItrtr = (*aList).begin(); ListItrtr != (*aList).end(); ListItrtr++)		{			delete (*ListItrtr);		}		delete aList;	}#else //_NEW_SEQUENCE_LIST > 0	SeqList::iterator Itrtr;	for( Itrtr = List.begin(); Itrtr != List.end(); Itrtr++)		delete (*Itrtr);#endif //_NEW_SEQUENCE_LIST > 0}//************************//************************#else // _NEW_SEQUENCE_LIST < 20//************************//************************//************************************//************************************//************************************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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区性视频| www国产精品av| 欧美揉bbbbb揉bbbbb| 日韩一区二区三区视频| 久久久亚洲精品石原莉奈 | 欧美日本乱大交xxxxx| 久久亚洲综合av| 黑人精品欧美一区二区蜜桃 | 一区二区三区高清不卡| 日本美女一区二区三区视频| 国产一区二区调教| 在线观看视频一区二区| 国产色综合一区| 日韩二区三区四区| 精品国产伦一区二区三区观看方式 | 欧美精品久久久久久久多人混战 | 中文字幕免费在线观看视频一区| 亚洲小说欧美激情另类| 国产一区二区三区四区五区美女| 国产区在线观看成人精品| 日韩av一区二区三区四区| 精品国产三级a在线观看| 国产91露脸合集magnet | 日本伊人色综合网| 欧美精品一区二区三区四区 | 国产在线精品一区二区不卡了| 国产亚洲一本大道中文在线| 99精品热视频| 久久香蕉国产线看观看99| 成人av在线影院| 国产无一区二区| 在线免费观看不卡av| 国精产品一区一区三区mba视频| 国产精品电影一区二区三区| 国产在线精品不卡| 亚洲综合免费观看高清完整版 | 欧洲精品视频在线观看| 精品一区二区三区免费毛片爱| 欧美三级日韩三级国产三级| 激情久久五月天| 亚洲精品亚洲人成人网 | 欧美色区777第一页| 国产一区二区三区免费| 亚洲国产裸拍裸体视频在线观看乱了| 欧美一级一级性生活免费录像| 国产69精品一区二区亚洲孕妇 | 日韩欧美在线观看一区二区三区| 床上的激情91.| 亚洲欧洲国产日韩| 不卡视频在线看| 麻豆91在线播放免费| 欧美va亚洲va香蕉在线| 国产精品69毛片高清亚洲| 国产精品欧美一级免费| 99综合电影在线视频| 亚洲美女在线国产| 欧美人与禽zozo性伦| 国产aⅴ精品一区二区三区色成熟| 首页欧美精品中文字幕| 日韩欧美激情一区| 国产99精品国产| 狠狠色伊人亚洲综合成人| 亚洲成人午夜影院| 久久老女人爱爱| 欧美一级黄色片| 欧美视频一区二区三区在线观看 | 国产69精品一区二区亚洲孕妇| 裸体健美xxxx欧美裸体表演| 日韩欧美黄色影院| 欧美挠脚心视频网站| 在线精品观看国产| 97久久精品人人做人人爽| 成人一区二区三区视频| 国产一区二区三区最好精华液| 蜜臀91精品一区二区三区| 午夜一区二区三区视频| 26uuu久久天堂性欧美| 欧美日韩一区 二区 三区 久久精品| 99国产精品久久久| 99久久伊人久久99| 99视频精品在线| 91美女视频网站| 老司机精品视频在线| 免费成人av资源网| 亚洲色图一区二区| 日韩欧美123| 26uuu国产一区二区三区| 精品国产一区二区三区久久久蜜月| 日韩一区二区三区高清免费看看| 欧美一区二区在线观看| 日韩一卡二卡三卡| 精品剧情v国产在线观看在线| 欧美成人精品二区三区99精品| 欧美v日韩v国产v| 中文字幕不卡的av| 日韩理论电影院| 亚洲国产视频直播| 麻豆专区一区二区三区四区五区| 久久se精品一区精品二区| 国产成人av一区二区三区在线| 日日夜夜一区二区| 久久成人免费网| 99在线精品一区二区三区| 在线观看欧美精品| 4438亚洲最大| 欧美性xxxxxx少妇| 91精品国产色综合久久不卡蜜臀 | 日韩视频一区二区三区 | 欧美国产综合色视频| 亚洲视频小说图片| 婷婷六月综合亚洲| 国产传媒一区在线| 91免费版在线| 日韩欧美国产一区在线观看| 久久婷婷成人综合色| 日韩伦理电影网| 极品尤物av久久免费看| 99re成人在线| 欧美一区二区三区电影| 中文字幕第一区综合| 水野朝阳av一区二区三区| 国产91富婆露脸刺激对白| 欧美男生操女生| 国产精品美女久久久久久2018| 丝袜诱惑制服诱惑色一区在线观看| 精品一二三四在线| 色乱码一区二区三区88| 99热精品国产| 日韩免费视频一区| 18涩涩午夜精品.www| 另类人妖一区二区av| 91美女在线观看| 国产色产综合色产在线视频| 亚洲成av人在线观看| av网站免费线看精品| 欧美成人女星排名| 亚洲国产人成综合网站| 国产99一区视频免费| 欧美一区二区三区啪啪| 亚洲品质自拍视频网站| 国产精华液一区二区三区| 欧美猛男男办公室激情| 亚洲精品久久久久久国产精华液| 激情综合网天天干| 欧美精品乱码久久久久久按摩 | aaa国产一区| 国产亚洲一本大道中文在线| 欧美a一区二区| 欧美在线免费观看视频| 国产精品乱码久久久久久| 韩国精品主播一区二区在线观看| 在线精品观看国产| 亚洲乱码国产乱码精品精可以看 | 国产精品一区专区| 精品国产在天天线2019| 免费看欧美美女黄的网站| 欧美日韩国产区一| 一区二区欧美精品| 一本一道久久a久久精品综合蜜臀| 91精品1区2区| 成人欧美一区二区三区| 国产成人综合亚洲91猫咪| 精品乱码亚洲一区二区不卡| 视频在线观看一区二区三区| 在线观看日韩一区| 一区二区三区在线高清| 99re这里只有精品视频首页| 日韩美女精品在线| 色一区在线观看| 亚洲天堂免费看| 99国产精品国产精品毛片| 国产精品久久一级| av不卡在线播放| 亚洲色图在线播放| 在线观看三级视频欧美| 午夜久久久久久久久久一区二区| 欧美日免费三级在线| 日韩有码一区二区三区| 欧美一区二区福利在线| 美女视频一区二区| 久久蜜桃av一区精品变态类天堂| 国产高清久久久| 椎名由奈av一区二区三区| 色88888久久久久久影院按摩 | 国产精品久久二区二区| 91免费观看在线| 亚洲国产成人va在线观看天堂| 欧美日韩亚洲丝袜制服| 免费成人av资源网| 久久精品一级爱片| 91免费视频观看| 日韩高清国产一区在线| 精品国产免费一区二区三区四区 | 国产精品久久久久毛片软件| 91色porny| 亚洲国产人成综合网站| 欧美一区二区三区啪啪| 成人综合日日夜夜| 亚洲一区二区三区爽爽爽爽爽| 欧美久久久久久久久中文字幕|