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

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

?? status.c

?? 數據挖掘算法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一区二区三区免费野_久草精品视频
成人a免费在线看| 色呦呦国产精品| 成人高清免费观看| 在线观看视频一区二区欧美日韩| 在线精品亚洲一区二区不卡| 91精品久久久久久蜜臀| 欧美激情一区在线| 日日夜夜免费精品视频| 国产乱人伦精品一区二区在线观看| av一二三不卡影片| 日韩午夜在线观看| 国产精品美女久久久久aⅴ国产馆| 亚洲黄色片在线观看| 精品影视av免费| 久久久无码精品亚洲日韩按摩| 国产成人午夜电影网| 99精品视频一区| 欧美一区二区三区视频在线| 中文一区一区三区高中清不卡| 亚洲成人动漫在线观看| 白白色亚洲国产精品| 欧美xxxx老人做受| 亚洲一区二区偷拍精品| 床上的激情91.| 日韩欧美亚洲一区二区| 亚洲国产另类精品专区| 成人黄色小视频| 日韩免费视频线观看| 亚洲自拍偷拍网站| 成人a级免费电影| 久久综合九色综合97婷婷女人| 亚洲3atv精品一区二区三区| 99精品视频一区二区三区| 久久男人中文字幕资源站| 午夜欧美视频在线观看| 色综合久久久久综合99| 91影视在线播放| 欧美女孩性生活视频| 亚洲国产视频直播| 欧美日韩免费一区二区三区视频| 1000精品久久久久久久久| av电影一区二区| 亚洲欧美日韩国产另类专区| av一区二区不卡| 一区二区三区欧美在线观看| 在线观看视频欧美| 午夜一区二区三区视频| 欧美日韩国产123区| 首页国产欧美日韩丝袜| 日韩一区二区电影| 国产在线精品一区二区夜色| 久久久久久久久久久久久夜| 成人午夜看片网址| 亚洲欧美乱综合| 欧美日韩三级视频| 国产91丝袜在线观看| 久久久久久久久久久黄色| 国产成人无遮挡在线视频| 国产精品毛片高清在线完整版| 99久精品国产| 日韩av不卡一区二区| 久久久www成人免费毛片麻豆 | 日韩欧美一区中文| 激情综合色丁香一区二区| 国产欧美日韩另类视频免费观看 | 蜜臀久久久99精品久久久久久| 26uuu国产在线精品一区二区| 国产91丝袜在线播放| 一区二区三区在线视频免费| 日韩一卡二卡三卡四卡| 暴力调教一区二区三区| 日本一区中文字幕| 国产精品美女一区二区| 在线电影一区二区三区| 国产成人在线免费观看| 亚洲香肠在线观看| 久久精品水蜜桃av综合天堂| 欧美偷拍一区二区| 国产激情视频一区二区在线观看 | 成人免费在线视频观看| 欧美精品1区2区3区| 国产·精品毛片| 婷婷中文字幕一区三区| 国产精品私人自拍| 日韩免费高清av| 欧美丝袜自拍制服另类| 成人一道本在线| 紧缚捆绑精品一区二区| 亚洲国产视频在线| 综合中文字幕亚洲| 国产亚洲人成网站| 日韩欧美国产精品| 欧美影院午夜播放| 波多野结衣中文字幕一区| 国产在线视频一区二区三区| 日韩经典中文字幕一区| 一区二区三区小说| 国产精品久线观看视频| 精品久久久久久无| 欧美一卡二卡在线| 欧美日韩精品二区第二页| 色悠久久久久综合欧美99| 国产成人精品一区二| 久久国产精品99精品国产| 亚洲成人自拍一区| 亚洲制服欧美中文字幕中文字幕| 国产精品久久久久久久裸模| 久久婷婷国产综合国色天香| 日韩一区二区精品在线观看| 欧美精品日韩精品| 欧美性xxxxxxxx| 欧美做爰猛烈大尺度电影无法无天| 成人av电影观看| 成人精品免费视频| 粉嫩av一区二区三区粉嫩| 国产酒店精品激情| 国产一区二区三区香蕉| 韩国av一区二区三区四区| 国产综合色精品一区二区三区| 麻豆成人91精品二区三区| 久久国产精品区| 国产精品99久久久久久似苏梦涵| 国产中文字幕一区| 国产成人精品免费看| 成人免费高清视频在线观看| 99视频在线观看一区三区| 91丨九色丨蝌蚪富婆spa| 91国产丝袜在线播放| 欧美亚一区二区| 欧美久久婷婷综合色| 日韩午夜在线观看视频| 久久久久久久久免费| 亚洲国产激情av| 亚洲久草在线视频| 亚洲mv在线观看| 经典三级在线一区| 成人综合婷婷国产精品久久免费| eeuss鲁片一区二区三区| 欧美性生活一区| 欧美一二三四区在线| 久久综合色综合88| 自拍偷拍国产亚洲| 天天影视涩香欲综合网| 国产一区二区三区免费播放| 成人app下载| 久久先锋影音av| 亚洲免费电影在线| 久久精品国产亚洲高清剧情介绍| 国产乱码精品一区二区三区av| 91色porny在线视频| 欧美精选在线播放| 中文字幕第一页久久| 夜夜精品浪潮av一区二区三区| 久久国产精品第一页| 99v久久综合狠狠综合久久| 欧美一区二区三区免费在线看| 国产欧美va欧美不卡在线| 亚洲午夜久久久久久久久电影院 | 国产激情视频一区二区三区欧美| 99国产精品99久久久久久| 日韩一区二区电影在线| 亚洲视频一区二区免费在线观看| 日本三级亚洲精品| 91女厕偷拍女厕偷拍高清| 日韩午夜三级在线| 亚洲色图一区二区三区| 九色porny丨国产精品| 色妹子一区二区| 国产色一区二区| 日本不卡一区二区三区 | 国产一区福利在线| 欧美性色综合网| 国产精品视频一二三区 | 91精品啪在线观看国产60岁| 国产精品久久久久一区二区三区共| 日本女优在线视频一区二区| 91在线国产福利| 久久精品夜色噜噜亚洲aⅴ| 日韩精品久久理论片| 91黄视频在线| 中文字幕在线视频一区| 国产剧情在线观看一区二区| 欧美一区二区三区系列电影| 亚洲精品自拍动漫在线| 大陆成人av片| 国产亚洲欧美日韩在线一区| 久久国产麻豆精品| 日韩一区二区三区在线| 天天免费综合色| 欧美视频一区二区三区在线观看| 国产精品久久久久天堂| 国产伦精品一区二区三区在线观看| 91精品久久久久久久99蜜桃| 五月婷婷色综合| 欧美亚洲图片小说| 亚洲一区国产视频| 日本韩国欧美三级| 夜夜嗨av一区二区三区四季av| 成人av网站在线| 亚洲人成网站色在线观看|