亚洲欧美第一页_禁久久精品乱码_粉嫩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成人免费毛片麻豆| 国产一区二区三区国产| 成人午夜精品在线| 色综合天天综合网国产成人综合天 | 蜜桃精品在线观看| 国产一级精品在线| 丰满少妇在线播放bd日韩电影| 99精品欧美一区| 欧美酷刑日本凌虐凌虐| 2023国产一二三区日本精品2022| 国产农村妇女毛片精品久久麻豆 | 国产成人福利片| 97久久人人超碰| 91福利社在线观看| 91精品国产综合久久久久久漫画| 日韩精品一区二| 欧美国产一区二区| 亚洲黄色片在线观看| 久久精品国产久精国产| 色婷婷久久久久swag精品| 欧美丝袜第三区| 久久久久高清精品| 婷婷成人激情在线网| 国产成人aaaa| 欧美一区二区在线不卡| 国产精品久久久久久久久搜平片| 亚洲电影在线播放| 国模少妇一区二区三区| 欧美在线不卡一区| 日韩精品中文字幕一区| 亚洲精品免费播放| 国产精品一区二区在线播放| 777欧美精品| 亚洲欧美日韩精品久久久久| 国产一区二区视频在线| 欧美性大战久久| 中文字幕一区在线观看视频| 蜜臀av在线播放一区二区三区| 91免费观看视频| 日本一区二区三区国色天香| 奇米色一区二区| 欧美亚洲图片小说| 成人免费一区二区三区视频 | 欧美第一区第二区| 日本在线播放一区二区三区| 在线视频一区二区三区| 亚洲国产高清在线| 国产在线日韩欧美| 91精品麻豆日日躁夜夜躁| 一区二区日韩av| 91性感美女视频| 国产精品美女久久久久久| 久久国产欧美日韩精品| 欧美一区二区三区免费视频| 婷婷开心久久网| 欧美日韩一区二区三区四区五区| 亚洲另类在线一区| 日本丰满少妇一区二区三区| 国产精品久久久久久久岛一牛影视| 国产一区视频导航| 国产无人区一区二区三区| 国内成+人亚洲+欧美+综合在线| 久久精品视频网| 久久精品国产一区二区三| 欧美精品成人一区二区三区四区| 亚洲午夜久久久久久久久久久| 色综合婷婷久久| 亚洲综合一区在线| 91精品国产综合久久婷婷香蕉 | 国产成人av电影在线播放| 久久久久久久久久久久久久久99 | 久久蜜臀精品av| 狂野欧美性猛交blacked| 欧美精品vⅰdeose4hd| 午夜精品久久久久久久 | 在线一区二区三区| 亚洲gay无套男同| 精品欧美黑人一区二区三区| 国内精品国产成人国产三级粉色| 国产欧美精品区一区二区三区| 国产乱对白刺激视频不卡| 国产视频911| 不卡av在线免费观看| 亚洲精品免费在线播放| 欧美精品欧美精品系列| 精品一区免费av| 国产精品久久久久久户外露出 | 国产欧美一区二区精品秋霞影院 | 日韩一卡二卡三卡四卡| 国产老妇另类xxxxx| 亚洲青青青在线视频| 91精品国产福利| 国产精品资源在线看| 一区二区三区在线影院| 日韩精品综合一本久道在线视频| 国产成人精品午夜视频免费| 夜夜嗨av一区二区三区四季av| 3d动漫精品啪啪一区二区竹菊| 极品少妇xxxx精品少妇| 国产精品国产馆在线真实露脸 | 中文字幕在线一区二区三区| 欧美亚洲尤物久久| 国产不卡在线播放| 五月天精品一区二区三区| 中文字幕免费不卡在线| 91精品欧美一区二区三区综合在 | 最好看的中文字幕久久| 精品久久久影院| 欧美高清www午色夜在线视频| 成人小视频在线| 日本不卡在线视频| 亚洲精品国产a久久久久久| 精品91自产拍在线观看一区| 欧美体内she精高潮| 99久久久精品免费观看国产蜜| 精品一区二区三区欧美| 亚洲成人一区在线| 国产精品国产三级国产aⅴ无密码| 日韩视频在线永久播放| 欧美主播一区二区三区美女| 丁香婷婷综合五月| 精品午夜久久福利影院| 日韩精品一卡二卡三卡四卡无卡| 亚洲三级在线免费观看| 国产欧美日韩另类一区| 精品国产一区二区三区忘忧草| 欧美日本一区二区三区| 色婷婷av一区二区三区大白胸| 国产成人在线视频网址| 久久成人免费网站| 美国毛片一区二区| 青青青伊人色综合久久| 五月综合激情日本mⅴ| 亚洲午夜精品网| 性做久久久久久免费观看| 亚洲影院理伦片| 亚洲精品高清视频在线观看| 国产精品看片你懂得| 国产性做久久久久久| 久久天天做天天爱综合色| 精品久久人人做人人爰| 日韩欧美久久久| 久久久午夜精品| 久久精品夜色噜噜亚洲aⅴ| 精品欧美一区二区在线观看| 日韩欧美一级在线播放| 久久嫩草精品久久久久| 国产人成一区二区三区影院| 国产日韩欧美在线一区| 国产精品久久毛片| 亚洲欧洲精品一区二区三区| 亚洲精品国产a久久久久久| 午夜亚洲国产au精品一区二区| 日韩高清不卡一区二区三区| 麻豆专区一区二区三区四区五区| 精品一区二区三区久久| 国产 日韩 欧美大片| 色悠悠久久综合| 91精品黄色片免费大全| 久久影视一区二区| 亚洲婷婷综合色高清在线| 亚洲成a人v欧美综合天堂| 蜜臀av一区二区| 99re亚洲国产精品| 在线成人免费视频| 久久综合狠狠综合久久激情| 亚洲欧美一区二区不卡| 日本不卡中文字幕| 成人一区二区三区中文字幕| 欧美三级电影一区| 国产亚洲成av人在线观看导航| 亚洲精品视频在线看| 老司机午夜精品99久久| 99国产精品久| 精品国产乱码久久久久久久久| 中文字幕在线不卡一区| 奇米影视在线99精品| 一本久久综合亚洲鲁鲁五月天 | 国产成人在线视频免费播放| 欧美在线观看一区| 国产午夜精品久久| 首页国产丝袜综合| 99re在线精品| 久久久一区二区三区捆绑**| 天天色综合成人网|