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

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

?? status.c

?? 數(shù)據(jù)挖掘算法BIRCH源碼 c語言版本。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************File Name: status.C  Author: Tian Zhang, CS Dept., Univ. of Wisconsin-Madison, 1995               Copyright(c) 1995 by Tian Zhang                   All Rights ReservedPermission to use, copy and modify this software must be grantedby the author and provided that the above copyright notice appear in all relevant copies and that both that copyright notice and this permission notice appear in all relevant supporting documentations. Comments and additions may be sent the author at zhang@cs.wisc.edu.******************************************************************/#include "global.h"#include "util.h"#include "vector.h"#include "rectangle.h"#include "cfentry.h"#include "cutil.h"#include "parameter.h"#include "status.h"#include "cftree.h"#include "path.h"#include "contree.h"#include "buffer.h"#include "recyqueue.h"#include "hierarchy.h"Stat::Stat(char *str) {// initialize dynamic status informationstrcpy(name,str);Bars=NULL;Phase=1;Passi=0;CurFt=0.0;MemUsed=0;TreeSize=0; PrevEntryCnt = 0;CurrEntryCnt = 0;PrevDataCnt = 0;CurrDataCnt = 0;NoiseCnt = 0;AvgDensity = 0;OldRoot = NULL;NewRoot = NULL;OldLeafHead = NULL;NewLeafHead = NULL;RestLeafPtr = NULL;RestLeafK = 0;SplitBuffer = NULL;OutlierQueue = NULL;OStats=NULL;Entries = NULL;OutlierEntryCnt=0;OutlierTupleCnt=0;}Stat::~Stat() {if (Bars) delete [] Bars;if (NewRoot!=NULL) NewRoot->free_nonleaf(this);if (NewLeafHead!=NULL) NewLeafHead->free_leaf(this);if (SplitBuffer!=NULL) delete SplitBuffer;if (OutlierQueue!=NULL) delete OutlierQueue;if (OStats!=NULL) delete OStats;if (Entries) delete [] Entries;}void Stat::Accept1A(const Entry &ent) {// keep trying until accepted anywaywhile (1) {  // 1: memory available, accepted  if (MemUsed<=MemSize) {	CurrDataCnt+=ent.n;	Ranges+=ent.sx;		// valid only for Stats, not for OStats	OldRoot->AdjustTree(this,ent);	OldRoot=NewRoot;	return;	}  // 2: buffer splits: accepted  if (SplitBuffer!=NULL && !SplitBuffer->Full()) {	CurrDataCnt+=ent.n;	Ranges+=ent.sx;		// valid only for Stats, not for OStats	if (OldRoot->AbsorbEntry2(this,ent)==FALSE) 		SplitBuffer->AddEnt(ent);	return;		}  // 3: memory out and buffer full:   //    increase threshold, throw outliers, rebuild tree,   //    re-try to see if acceptedcout<<"#"<<name<<" "<<Phase<<" "<<Passi<<" "<<MemUsed<<" "    <<CurrDataCnt<<" "<<CurrEntryCnt<<" "<<sqrt(CurFt)<<endl;  RebuiltTree1A(1);cout<<"#"<<name<<" "<<Phase<<" "<<Passi<<" "<<MemUsed<<" "    <<CurrDataCnt<<" "<<CurrEntryCnt<<" "<<sqrt(CurFt)<<endl;  if (SplitBuffer!=NULL) ScanSplitBuffer();  if (OutlierQueue!=NULL && OutlierQueue->Full()) ScanOutlierQueue();  }}void Stat::Accept1B(const Entry &ent) {// keep trying until accepted anywaywhile (1) {  // 1: memory available, accepted  if (MemUsed<=MemSize) {	CurrDataCnt+=ent.n;	Ranges+=ent.sx; 	// valid only for Stats, not for OStats	OldRoot->AdjustTree(this,ent);	OldRoot=NewRoot;	return;	}  // 2: buffer splits: accepted  if (SplitBuffer!=NULL && !SplitBuffer->Full()) {	CurrDataCnt+=ent.n;	Ranges+=ent.sx;		// valid only for Stats, not for OStats	if (OldRoot->AbsorbEntry2(this,ent)==FALSE) 		SplitBuffer->AddEnt(ent);	return;		}  // 3: memory out and buffer full:   //    increase threshold, throw outliers, rebuild tree,   //    re-try to see if acceptedcout<<"#"<<name<<" "<<Phase<<" "<<Passi<<" "<<MemUsed<<" "    <<CurrDataCnt<<" "<<CurrEntryCnt<<" "<<sqrt(CurFt)<<endl;  RebuiltTree1B(1);cout<<"#"<<name<<" "<<Phase<<" "<<Passi<<" "<<MemUsed<<" "    <<CurrDataCnt<<" "<<CurrEntryCnt<<" "<<sqrt(CurFt)<<endl;  if (SplitBuffer!=NULL) ScanSplitBuffer();  if (OutlierQueue!=NULL && OutlierQueue->Full()) ScanOutlierQueue();  }}// TZ: work herevoid Stat::SelectInitFt1() { if (InitFt<=0.0) CurFt=0.0; else CurFt=InitFt*InitFt; }void Stat::SelectFtB(){   if (CurFt==0.0)       	CurFt=pow(AvgDNNScanLeafEntry(BDtype),2.0);   else CurFt=MaxOne(CurFt,pow(AvgDNNScanLeafEntry(BDtype),2.0));}void Stat::SelectFtA(){   if (CurFt==0.0)        	CurFt=pow(AvgDNNScanLeafEntry(BDtype),2.0);   else CurFt=MaxOne(CurFt,pow(AvgDNNScanLeafEntry(BDtype),2.0));}void Stat::RebuiltTree1B(short inc_flag){	AvgDensity=1.0*NewRoot->N()/(1.0*CurrEntryCnt);        if (inc_flag==1 && Passi%StayTimes==0) SelectFtB(); 		Passi++;	switch (RebuiltAlg) { 	 	 case 0: ScanLeaf1A(); break;	 	 case 1: CompactTree1A(); break;	 	 case 2: ShiftTree1A(); break;	 	 }}void Stat::RebuiltTree1A(short inc_flag){	AvgDensity=1.0*NewRoot->N()/(1.0*CurrEntryCnt);        if (inc_flag==1 && Passi%StayTimes==0) SelectFtA(); 		Passi++;	switch (RebuiltAlg) { 	 	 case 0: ScanLeaf1A(); break;	 	 case 1: CompactTree1A(); break;	 	 case 2: ShiftTree1A(); break;	 	 }}// shift the tree:void Stat::ShiftTree1A(){int i;Entry ent;ent.Init(Dimension);Node *tmpnode;MakeNewTree();int height=OldRoot->Depth();Path CurrPath(height), BestPath(height);// initialize CurrPath to the leftmost path (leaf entry) in old treetmpnode=OldRoot;for (i=0; i<height; i++) {	CurrPath.Push(0,tmpnode);	tmpnode=tmpnode->TheChild(0);	}tmpnode=CurrPath.TopLeaf();while (tmpnode!=NULL) {  // Process all entries in the leaf node  for (i=0; i<tmpnode->actsize; i++) {      ent=tmpnode->entry[i];      if (strcmp(name,"outlier")!=0 && 	  ent.n<NoiseRate*AvgDensity &&	  OutlierQueue!=NULL) // write out all qualified outliers    		OutlierQueue->AddEnt(ent,this);      else {          // find BestPath for current entry in new tree 	  BestPath.Reset();	  if (NewRoot->BestFitPath2(this,ent,BestPath)==TRUE)	  	BestPath.AddonPath(this,ent,NewRoot);	  else  CurrPath.AddonLeaf(this,ent,NewRoot);	  }      }  // Process next leaf node  tmpnode=CurrPath.NextRightLeafFreeSpace(this);  if (tmpnode!=NULL) CurrPath.InsertLeaf(this,NewRoot);  }OldRoot=NewRoot;OldLeafHead=NewLeafHead;NewRoot->FreeEmptyNode(this);}// compact the tree:void Stat::CompactTree1A(){int i;Entry ent;ent.Init(Dimension);MarkNewTree();int height = OldRoot->Depth();Path CurrPath(height), BestPath(height);// initialize to the leftmost path (or leaf entry) in the treeNode *tmpnode=OldRoot;for (i=0; i<height; i++) {	CurrPath.Push(0,tmpnode);	tmpnode=tmpnode->TheChild(0);	}while (CurrPath.Exists()) {	// takeoff current path (or leaf entry) from the tree	ent=*(CurrPath.TopLeafEntry());	CurrPath.TakeoffPath(ent);	if (strcmp(name,"outlier")!=0 && 	    ent.n<NoiseRate*AvgDensity &&	    OutlierQueue!=NULL) { // write out all qualified outliers	    OutlierQueue->AddEnt(ent,this);	    CurrPath.CollectSpace(this);	    }	else {// find bestpath for current leaf entry in tree and put back            BestPath.Reset();	    if (OldRoot->BestFitPath2(this,ent,BestPath)==TRUE 		&& BestPath<CurrPath) {	   		BestPath.AddonPath(this,ent,OldRoot);	   		CurrPath.CollectSpace(this);	   		}	        else { CurrPath.AddonPath(this,ent,OldRoot);		       CurrEntryCnt++;		       CurrPath.NextRightPath();		       }	    }	}}// responsible for old leaves// does not guarantee S2<=S1 if T2>=T1.void Stat::ScanLeaf1A(){int k = 0;Entry ent;ent.Init(Dimension);short res=TRUE;StartNewTree();while (res!=FALSE) {     res = NextEntryFreeOldLeafHead(k,ent);      if (res==TRUE) {        if (strcmp(name,"outlier")!=0 && 	    ent.n<NoiseRate*AvgDensity &&	    OutlierQueue!=NULL) // write out all qualified outliers		OutlierQueue->AddEnt(ent,this);	else {		OldRoot->AdjustTree(this,ent);		OldRoot = NewRoot;		}	}      } }void Stat::ScanSplitBuffer(){Entry ent;ent.Init(Dimension);int count=SplitBuffer->CountEntry();while (count>0 && MemUsed<=MemSize) {	SplitBuffer->DeleteEnt(ent);	count--;	OldRoot->AdjustTree(this,ent);	OldRoot=NewRoot;	}while (count>0) {	SplitBuffer->DeleteEnt(ent);	count--;        if (OldRoot->AbsorbEntry2(this,ent)==FALSE)	   if (OutlierQueue!=NULL) 		OutlierQueue->AddEnt(ent,this); 	   else SplitBuffer->AddEnt(ent);	}}void Stat::ScanOutlierQueue(){Entry ent;ent.Init(Dimension);int count=OutlierQueue->CountEntry();// without secondary tree for outliersif (OStats==NULL) {       while (count>0) {	OutlierQueue->DeleteEnt(ent); 	count--;	if (OldRoot->AbsorbEntry1(this,ent)==FALSE)		OutlierQueue->AddEnt(ent,this); 	}      }// with secondary tree for outlierselse {      // if can't absorb by main tree, accept to outlier tree     while (count>0) {	OutlierQueue->DeleteEnt(ent); 	count--;	if (OldRoot->AbsorbEntry1(this,ent)==FALSE) {		switch (OStats->Phase1Scheme) {		  case 0: OStats->Accept1A(ent); break;		  case 1: OStats->Accept1B(ent); break;		  default: print_error("ScanOutlierQueue","Invalid Phase1Scheme"); break;		  }		NoiseCnt+=ent.n;		}	}     }}void Stat::Inherit(const Stat *Stats) {	Dimension=Stats->Dimension;	PageSize=Stats->PageSize;	MemSize=Stats->OutlierTreeSize;	BufferSize=0;	QueueSize=0;	OutlierTreeSize=0;	BDtype=Stats->BDtype;	Ftype=Stats->Ftype;	Phase1Scheme=Stats->Phase1Scheme;	RebuiltAlg=Stats->RebuiltAlg;	StayTimes=Stats->StayTimes;	NoiseRate=Stats->NoiseRate;	Range=Stats->Range;	CFDistr=Stats->CFDistr;	H=Stats->H;	K=Stats->K;	InitFt=Stats->InitFt;	Ft=Stats->Ft;	Gtype=Stats->Gtype;	GDtype=Stats->GDtype;	Qtype=Stats->Qtype;	RefineAlg=Stats->RefineAlg;	NoiseFlag=Stats->NoiseFlag;	MaxRPass=Stats->MaxRPass;	Ranges.Init(Dimension);	}istream& operator>>(istream &fi,Stat *Stats) {fi>>Stats->WMflag;Stats->W.Init(Stats->Dimension);fi>>Stats->W;Stats->M.Init(Stats->Dimension);fi>>Stats->M;fi>>Stats->PageSize;Stats->MemSize/=Stats->PageSize;Stats->BufferSize/=Stats->PageSize;Stats->QueueSize/=Stats->PageSize;Stats->OutlierTreeSize/=Stats->PageSize;fi>>Stats->BDtype;fi>>Stats->Ftype;fi>>Stats->Phase1Scheme;fi>>Stats->RebuiltAlg;fi>>Stats->StayTimes;fi>>Stats->NoiseRate;fi>>Stats->Range;fi>>Stats->CFDistr;fi>>Stats->H;Stats->Bars=new int[Stats->Dimension];for (int i=0;i<Stats->Dimension;i++) 	fi>>Stats->Bars[i];fi>>Stats->K;fi>>Stats->InitFt;fi>>Stats->Ft;fi>>Stats->Gtype;fi>>Stats->GDtype;fi>>Stats->Qtype;fi>>Stats->RefineAlg;fi>>Stats->NoiseFlag;fi>>Stats->MaxRPass;Stats->Ranges.Init(Stats->Dimension);if (Stats->BufferSize>0) 	Stats->SplitBuffer=new BufferClass(Stats);if (Stats->QueueSize>0) Stats->	OutlierQueue=new RecyQueueClass(Stats);if (Stats->OutlierTreeSize>0) {	Stats->OStats=new Stat("outlier"); 	Stats->OStats->Inherit(Stats);	}return fi;}ifstream& operator>>(ifstream &fi,Stat *Stats) {fi>>Stats->WMflag;Stats->W.Init(Stats->Dimension);fi>>Stats->W;Stats->M.Init(Stats->Dimension);fi>>Stats->M;fi>>Stats->PageSize;Stats->MemSize/=Stats->PageSize;Stats->BufferSize/=Stats->PageSize;Stats->QueueSize/=Stats->PageSize;Stats->OutlierTreeSize/=Stats->PageSize;fi>>Stats->BDtype;fi>>Stats->Ftype;fi>>Stats->Phase1Scheme;fi>>Stats->RebuiltAlg;fi>>Stats->StayTimes;fi>>Stats->NoiseRate;fi>>Stats->Range;fi>>Stats->CFDistr;fi>>Stats->H;Stats->Bars=new int[Stats->Dimension];for (int i=0;i<Stats->Dimension;i++) 	fi>>Stats->Bars[i];fi>>Stats->K;fi>>Stats->InitFt;fi>>Stats->Ft;fi>>Stats->Gtype;fi>>Stats->GDtype;fi>>Stats->Qtype;fi>>Stats->RefineAlg;fi>>Stats->NoiseFlag;fi>>Stats->MaxRPass;Stats->Ranges.Init(Stats->Dimension);if (Stats->BufferSize>0) 	Stats->SplitBuffer=new BufferClass(Stats);if (Stats->QueueSize>0) 	Stats->OutlierQueue=new RecyQueueClass(Stats);if (Stats->OutlierTreeSize>0) {	Stats->OStats=new Stat("outlier"); 	Stats->OStats->Inherit(Stats);	}return fi;}ostream& operator<<(ostream &fo,Stat** Stats) {for (int i=0; i<Paras->ntrees; i++)	fo<<Stats[i]<<endl;return fo;}ofstream& operator<<(ofstream &fo,Stat** Stats) {for (int i=0; i<Paras->ntrees; i++)	fo<<Stats[i]<<endl;return fo;}ostream& operator<<(ostream &fo,Stat* Stats) {fo<<"***************Status of "<<Stats->name<<endl;if (strcmp(Stats->name,"outlier")!=0) {fo<<"WMflag\t"<<Stats->WMflag<<endl;fo<<"W\t"<<Stats->W<<endl;fo<<"M\t"<<Stats->M<<endl;}fo<<"Dimension\t"<<Stats->Dimension<<endl;fo<<"PageSize\t"<<Stats->PageSize<<endl;fo<<"MemSize\t"<<Stats->MemSize<<endl;fo<<"BufferSize\t"<<Stats->BufferSize<<endl;fo<<"QueueSize\t"<<Stats->QueueSize<<endl;fo<<"OutlierTreeSize\t"<<Stats->OutlierTreeSize<<endl;fo<<"BDtype\t"<<Stats->BDtype<<endl;fo<<"Ftype\t"<<Stats->Ftype<<endl;fo<<"Phase1Scheme\t"<<Stats->Phase1Scheme<<endl;fo<<"RebuiltAlg\t"<<Stats->RebuiltAlg<<endl;fo<<"StayTimes\t"<<Stats->StayTimes<<endl;fo<<"NoiseRate\t"<<Stats->NoiseRate<<endl;fo<<"Range\t"<<Stats->Range<<endl;fo<<"CFDistr\t"<<Stats->CFDistr<<endl;fo<<"H\t"<<Stats->H<<endl;if (Stats->Bars!=NULL) {	fo<<"Bars\t";

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲无人区一区| 精品福利在线导航| 亚洲丝袜另类动漫二区| 99久久精品免费看国产| 国产精品国产精品国产专区不蜜| 99视频一区二区三区| 一区二区三区丝袜| 国产精品国产三级国产普通话蜜臀| 国产98色在线|日韩| 日韩美女精品在线| 精品视频999| 久久疯狂做爰流白浆xx| 久久精品人人做| 91亚洲永久精品| 亚洲第一激情av| 欧美α欧美αv大片| 成人免费不卡视频| 亚洲国产欧美在线| 久久久久免费观看| 色综合天天在线| 麻豆成人免费电影| 国产精品美女一区二区三区 | 欧美va亚洲va在线观看蝴蝶网| 黑人巨大精品欧美一区| 国产精品天美传媒沈樵| 欧美午夜在线观看| 国产一区二区不卡| 悠悠色在线精品| 精品国产免费人成在线观看| jvid福利写真一区二区三区| 午夜精品久久久久久久99樱桃| 日韩欧美在线影院| 91视频精品在这里| 美女网站视频久久| 中文字幕在线观看不卡| 91精品蜜臀在线一区尤物| 国产成人午夜高潮毛片| 亚洲成av人片在www色猫咪| 精品成人a区在线观看| 日本高清免费不卡视频| 国产一区二区三区免费播放 | 一区二区三区国产精华| 337p粉嫩大胆噜噜噜噜噜91av | 久久蜜桃av一区二区天堂| 色综合久久中文综合久久牛| 精品一区二区三区香蕉蜜桃 | 国产一区二区日韩精品| 亚洲一区二区三区在线| 日产欧产美韩系列久久99| 中文字幕乱码一区二区免费| 欧美一区二区三区在线| 色av综合在线| 国产91精品在线观看| 免费人成黄页网站在线一区二区| 日韩一区欧美一区| 久久久无码精品亚洲日韩按摩| 欧美日韩免费高清一区色橹橹| 成人免费观看av| 国产一本一道久久香蕉| 日一区二区三区| 亚洲自拍偷拍av| 亚洲欧美日韩中文播放| 国产精品污污网站在线观看| 精品国产一二三区| 91麻豆精品国产91久久久久久久久 | 欧美日韩国产不卡| 91色porny在线视频| 风间由美一区二区av101| 激情图片小说一区| 蜜臀av性久久久久蜜臀aⅴ| 午夜在线成人av| 亚洲国产日日夜夜| 亚洲福中文字幕伊人影院| 亚洲精品国产成人久久av盗摄| 国产精品色在线观看| 国产三级欧美三级日产三级99| 精品国免费一区二区三区| 欧美大胆一级视频| 欧美白人最猛性xxxxx69交| 欧美一级免费观看| 日韩午夜激情电影| 日韩久久久精品| 日韩精品在线网站| 精品国产91亚洲一区二区三区婷婷| 91精品综合久久久久久| 欧美一级久久久| 精品国产百合女同互慰| 日韩欧美自拍偷拍| 久久久久久亚洲综合影院红桃| 2017欧美狠狠色| 国产欧美一区二区三区鸳鸯浴| 国产日韩综合av| 亚洲欧洲av色图| 一区二区三区免费看视频| 亚洲一区二区三区激情| 亚洲bt欧美bt精品| 久久国产乱子精品免费女| 国产在线视频不卡二| 成人性色生活片| 色综合天天综合网天天狠天天| 欧洲精品一区二区三区在线观看| 欧美男男青年gay1069videost | 爽爽淫人综合网网站| 久久不见久久见免费视频1| 国产精品资源网| 97久久超碰国产精品电影| 欧美网站大全在线观看| 欧美一级二级三级蜜桃| 国产日产欧美一区二区视频| 中文字幕在线观看不卡| 偷拍自拍另类欧美| 国产精品一区二区不卡| 色94色欧美sute亚洲线路二| 欧美剧情电影在线观看完整版免费励志电影 | 国产剧情一区在线| 91丨九色porny丨蝌蚪| 这里只有精品99re| 国产丝袜欧美中文另类| 一区二区三区日本| 韩国成人精品a∨在线观看| 91捆绑美女网站| 欧美一级理论片| 国产精品久久二区二区| 天堂蜜桃一区二区三区| 成人性生交大片免费看中文网站| 欧美中文字幕一区| 久久精品在线观看| 五月天亚洲精品| 成人精品免费看| 日韩欧美你懂的| 一区二区在线免费观看| 国产在线不卡一卡二卡三卡四卡| 欧美羞羞免费网站| 国产精品视频线看| 麻豆成人免费电影| 精品视频一区三区九区| 国产午夜精品美女毛片视频| 日韩av网站在线观看| 91麻豆免费观看| 国产日本欧洲亚洲| 老司机一区二区| 欧美日韩中文国产| 亚洲欧美aⅴ...| 国产69精品久久久久777| 一区二区在线免费| 成人精品免费视频| 久久久99久久| 老司机精品视频导航| 欧美日韩一区二区三区高清 | 久久99久久精品欧美| 欧美视频日韩视频| 亚洲日本一区二区三区| 国产福利不卡视频| 欧美va亚洲va国产综合| 亚洲v日本v欧美v久久精品| 一本一道综合狠狠老| 欧美激情综合在线| 国内精品视频666| 日韩精品一区二区三区视频播放| 午夜精品福利在线| 欧美日韩亚洲综合在线 | 亚洲影视资源网| 91在线视频免费观看| 国产精品日产欧美久久久久| 国产馆精品极品| 精品国产乱码久久| 精品在线播放免费| 日韩久久久久久| 国产乱色国产精品免费视频| 欧美videossexotv100| 精品一区二区三区在线观看| 欧美tk丨vk视频| 国产乱妇无码大片在线观看| 久久九九久久九九| 成人性生交大片免费看中文网站| 国产精品乱子久久久久| 成人国产免费视频| 亚洲少妇30p| 欧美中文字幕一二三区视频| 亚洲成人一二三| 欧美一级精品大片| 国产综合久久久久影院| 久久久av毛片精品| 成人av在线网| 亚洲乱码精品一二三四区日韩在线| 色狠狠色噜噜噜综合网| 亚洲电影视频在线| 日韩精品一区二区三区四区视频 | 亚洲成人精品一区| 日韩一级高清毛片| 精品中文字幕一区二区小辣椒| 久久午夜老司机| 99久久99久久久精品齐齐| 亚洲乱码国产乱码精品精98午夜| 欧美午夜片在线看| 美腿丝袜亚洲三区| 国产精品黄色在线观看| 欧洲激情一区二区| 麻豆精品在线视频| 亚洲图片激情小说|