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

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

?? cftree.h~

?? 數據挖掘算法BIRCH源碼 c語言版本。
?? H~
字號:
/****************************************************************File Name:   cftree.hAuthor: 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.******************************************************************/#ifndef CFTREE_H#define CFTREE_Hclass Para;class Stat;class Path;class ConNode;extern Para *Paras;typedef enum {	LEAF, NONLEAF} NodeType;class Node {public:		int actsize;	Entry *entry;	int ActSize() const {return actsize;}	void AssignActSize(int size) {actsize=size;}	Entry* TheEntry(int i) { return &(entry[i]); }	Entry* Entries() const {return entry;}	int N() const;	void SX(Vector& tmpsx) const;	double SXX() const;	void CF(Entry& tmpcf) const;#ifdef RECTANGLE	void Rect(Rectangle& tmprect) const;#endif RECTANGLE	double Radius() const;	double Diameter() const;	double Fitness(short ftype) const;		virtual int MaxSize(Stat *Stats) const=0;	virtual NodeType Type() const=0;	virtual int Size() const=0;	virtual int Depth() const=0;	virtual int NumEntry() const=0;	virtual int LeafNum() const=0;	virtual int NonleafNum() const=0;	virtual int NumLeafEntry() const=0;	virtual int NumNonleafEntry() const=0;	virtual double Occupancy(Stat *Stats) const=0;	virtual double AbsVofLevel(int i, short ftype, short dim) const=0;	void Print_Summary(Stat *Stats, ostream &fo) const;	void Print_Summary(Stat *Stats, ofstream &fo) const;	short NotEmpty() const {return actsize>0;} 	short NotFull(Stat *Stats) const {return actsize<MaxSize(Stats);}	// inline functions: for convenience	virtual void free_leaf(Stat *Stats)=0;	virtual void free_nonleaf(Stat *Stats)=0;	virtual void NewLeafChildI(Stat *Stats, int i)=0;	virtual void NewNonleafChildI(Stat *Stats, int i)=0;	virtual void assign(Node *node1, int i1, Node *node2, int i2)=0;	virtual void swap(Node *node1, int i1, Node *node2, int i2)=0;	void AddEntry(int i, const Entry &ent) {		entry[i]+=ent;		}	void SubEntry(int i, const Entry &ent) {		entry[i]-=ent;		}	virtual void AttachEntry(const Entry &ent, Node *ptr)=0;	virtual void DeleteEntry(int i)=0;	void AssignEntry(int i, const Entry &ent) { entry[i]=ent; }	virtual Node *TheChild(int i) const=0;	virtual void AssignChild(int i, Node *ptr)=0;	virtual void Print_Tree(short ind, ostream &fo) const=0;	virtual void Print_Tree(short ind, ofstream &fo) const=0;	virtual void print_leaf_entries_topdown(ofstream &fo) const=0;	virtual int DensestEntry() const=0;	virtual Node* DenseNode()=0;	virtual void AssignNextPrev(Stat *Stats)=0;	virtual void ChainNextPrev(Stat *Stats)=0;	virtual short FreeEmptyNode(Stat *Stats)=0;virtual int ClosestOne(Stat *Stats, const Entry &ent) const=0;virtual double ClosestTwo(Stat *Stats, int &i, int &j) const=0;virtual void FarthestTwo(Stat *Stats, int &i, int &j) const=0;virtual double ClosestDiffTwo(Stat *Stats, int &i, int &j) const=0;virtual void FarthestTwoOut(Stat *Stats, Node *node1, Node *node2,			    short &samegroup, int &i, int &j) const=0;virtual short BestFitPath1(Stat *Stats, const Entry &ent, Path& BestPath)=0;virtual short BestFitPath2(Stat *Stats, const Entry &ent, Path& BestPath)=0;virtual short AbsorbEntry1(Stat *Stats, const Entry &ent)=0;virtual short AbsorbEntry2(Stat *Stats, const Entry &ent)=0;virtual Node* AdjustTree(Stat *Stats, const Entry &ent)=0;virtual Node* InsertMightSplit(Stat *Stats, const Entry &ent, Node *ptr)=0;virtual ConNode* Copy(Stat *Stats) const=0;	friend class Stat;	friend class Leaf;	friend class Nonleaf;	friend class Path;};class Leaf : public Node {public:	Leaf* next;	Leaf* prev;	Leaf(Stat *Stats) { 		actsize=0;	 	int leafsize=MaxSize(Stats);		if (leafsize<1) 			print_error("Leaf","less than 1 entry per page");	 	entry = new Entry[leafsize];	 	for (int i=0; i<leafsize; i++)			entry[i].Init(Stats->Dimension);		 next = NULL;		 prev = NULL;	       }	virtual ~Leaf() {		delete [] entry;		}	virtual int MaxSize(Stat *Stats) const {#ifdef RECTANGLE	return (Stats->PageSize-2*sizeof(int))/	       (sizeof(int)+sizeof(double)*(3*Stats->Dimension+1));#else	return (Stats->PageSize-2*sizeof(int))/	       (sizeof(int)+sizeof(double)*(Stats->Dimension+1));#endif	}	virtual NodeType Type() const {return LEAF;}	virtual int Size() const;	virtual int Depth() const;	virtual int NumEntry() const;	virtual int LeafNum() const;	virtual int NonleafNum() const;	virtual int NumLeafEntry() const;	virtual int NumNonleafEntry() const;	virtual double Occupancy(Stat *Stats) const;	virtual double AbsVofLevel(int i, short ftype, short dim) const;	virtual void free_leaf(Stat *Stats) {		if (this->next!=NULL)			this->next->free_leaf(Stats);		delete this; Stats->MemUsed--;		}	virtual void free_nonleaf(Stat *Stats) {}	virtual void NewLeafChildI(Stat *Stats, int i) {}	virtual void NewNonleafChildI(Stat *Stats, int i) {}	virtual void assign(Node *node1, int i1, Node *node2, int i2) 	{	if (!(node1==node2 && i1==i2))    		node1->entry[i1]=node2->entry[i2];    	}	virtual void swap(Node *node1, int i1, Node *node2, int i2) {	Entry tmpent;	tmpent.Init(node1->entry[0].sx.dim);	if (!(node1==node2 && i1==i2)) {		tmpent=node1->entry[i1];		node1->entry[i1]=node2->entry[i2];		node2->entry[i2]=tmpent;		}	}	virtual void AttachEntry(const Entry& ent, Node* ptr) {		entry[actsize]=ent; 		// ignore ptr		actsize++;		}	virtual void DeleteEntry(int i) {		actsize--; 		entry[i]=entry[actsize];		}	virtual Node* TheChild(int i) const {return NULL;}	virtual void AssignChild(int i, Node *ptr) { }	virtual void Print_Tree(short ind, ostream &fo) const;	virtual void Print_Tree(short ind, ofstream &fo) const;	virtual void print_leaf_entries_topdown(ofstream &fo) const;	virtual int DensestEntry() const;	virtual Node* DenseNode();	virtual void AssignNextPrev(Stat *Stats) {		if (this==Stats->NewLeafHead) 			Stats->NewLeafHead=this->next;	        if (this->prev!=NULL)			{this->prev->next=this->next;			}		if (this->next!=NULL)			{this->next->prev=this->prev;			}		}	virtual void ChainNextPrev(Stat *Stats) {		Stats->OldLeafHead->next=this;		this->prev=Stats->OldLeafHead;		Stats->OldLeafHead=this;		}	virtual short FreeEmptyNode(Stat *Stats);virtual int ClosestOne(Stat *Stats, const Entry &ent) const;virtual double ClosestTwo(Stat *Stats, int &i, int &j) const;virtual void FarthestTwo(Stat *Stats, int &i, int &j) const;virtual double ClosestDiffTwo(Stat *Stats, int &i, int &j) const;virtual void FarthestTwoOut(Stat *Stats, Node *node1, Node *node2, 		            short &samegroup, int &i, int &j) const;virtual short BestFitPath1(Stat *Stats, const Entry &ent, Path& BestPath);virtual short BestFitPath2(Stat *Stats, const Entry &ent, Path& BestPath);virtual short AbsorbEntry1(Stat *Stats, const Entry &ent);virtual short AbsorbEntry2(Stat *Stats, const Entry &ent);virtual Node* AdjustTree(Stat *Stats, const Entry &ent);virtual Node* InsertMightSplit(Stat *Stats, const Entry &ent, Node *ptr);virtual ConNode* Copy(Stat *Stats) const;	// only for leaf nodes	Leaf* NextLeaf() const {return next;}	Leaf* PrevLeaf() const {return prev;}	void print_leaf_entries_bychain(ofstream &fo) const;	void print_leaf_entries_bychain(ostream &fo) const;	void visualize_leaf_entries(Stat *Stats, ofstream &fo) const;	void visualize_leaf_entries(Stat *Stats, ostream &fo) const;	int count_leaf_nodes() const;	int count_leaf_entries() const;	int count_leaf_tuples() const;	friend class Stat;};class Nonleaf : public Node {public:	Node **child;	Nonleaf(Stat *Stats) { 	actsize = 0;        int nonleafsize=MaxSize(Stats);        entry = new Entry[nonleafsize];	child = new Node*[nonleafsize];        for (int i=0;i<nonleafsize;i++) {		entry[i].Init(Stats->Dimension);		child[i]=NULL;		}	}	virtual ~Nonleaf() { 		delete [] entry; 		delete [] child;		}	virtual int MaxSize(Stat *Stats) const {#ifdef RECTANGLE	return Stats->PageSize/(2*sizeof(int)+sizeof(double)*(3*Stats->Dimension+1));#else	return Stats->PageSize/(2*sizeof(int)+sizeof(double)*(Stats->Dimension+1));#endif	}	virtual NodeType Type() const {return NONLEAF;}	virtual int Size() const;	virtual int Depth() const;	virtual int NumEntry() const;	virtual int LeafNum() const;	virtual int NonleafNum() const;	virtual int NumLeafEntry() const;	virtual int NumNonleafEntry() const;	virtual double Occupancy(Stat *Stats) const;	virtual double AbsVofLevel(int i, short ftype, short dim) const;	virtual void free_leaf(Stat *Stats) {}	virtual void free_nonleaf(Stat *Stats) {		for (int i=0; i<actsize; i++)			child[i]->free_nonleaf(Stats);		delete this; Stats->MemUsed--;		}	virtual void NewLeafChildI(Stat *Stats, int i) { 		child[i]=new Leaf(Stats);		}	virtual void NewNonleafChildI(Stat *Stats, int i) {		child[i]=new Nonleaf(Stats); 		}	virtual void assign(Node *node1, int i1, Node *node2, int i2) 	{	if (!(node1==node2 && i1==i2)) {   	  	node1->entry[i1]=node2->entry[i2];   		((Nonleaf*)node1)->child[i1]=((Nonleaf *)node2)->child[i2];   		}   	}	virtual void swap(Node *node1, int i1, Node *node2, int i2) {	Entry tmpent;	tmpent.Init(node1->entry[0].sx.dim);	Node  *tmpptr;	if (!(node1==node2 && i1==i2)) {		tmpent=node1->entry[i1];		tmpptr=((Nonleaf *)node1)->child[i1];		node1->entry[i1]=node2->entry[i2];		((Nonleaf *)node1)->child[i1]=((Nonleaf *)node2)->child[i2];		node2->entry[i2]=tmpent;		((Nonleaf *)node2)->child[i2]=tmpptr;		}	}		virtual void AttachEntry(const Entry &ent, Node *ptr) {		entry[actsize]=ent,		child[actsize]=ptr;		actsize++;		}	virtual void DeleteEntry(int i) {		actsize--;		entry[i]=entry[actsize];		child[i]=child[actsize];		}	virtual Node* TheChild(int i) const { return child[i]; }	virtual void AssignChild(int i, Node *ptr) { child[i]=ptr; }	virtual void Print_Tree(short ind, ostream &fo) const;	virtual void Print_Tree(short ind, ofstream &fo) const;	virtual void print_leaf_entries_topdown(ofstream &fo) const;	virtual int DensestEntry() const;	virtual Node* DenseNode();	virtual void AssignNextPrev(Stat *Stats) {}	virtual void ChainNextPrev(Stat *Stats) {}	virtual short FreeEmptyNode(Stat *Stats);virtual int ClosestOne(Stat *Stats, const Entry &ent) const;virtual double ClosestTwo(Stat *Stats, int &i, int &j) const;virtual void FarthestTwo(Stat *Stats, int &i, int &j) const;virtual double ClosestDiffTwo(Stat *Stats, int &i, int &j) const;virtual void FarthestTwoOut(Stat *Stats, Node *node1, Node *node2, 		            short &samegroup, int &i, int &j) const;virtual short BestFitPath1(Stat *Stats, const Entry &ent, Path& BestPath);virtual short BestFitPath2(Stat *Stats, const Entry &ent, Path& BestPath);virtual short AbsorbEntry1(Stat *Stats, const Entry &ent);virtual short AbsorbEntry2(Stat *Stats, const Entry &ent);virtual Node* AdjustTree(Stat *Stats, const Entry &ent);virtual Node* InsertMightSplit(Stat *Stats, const Entry &ent, Node *ptr);void MergeMightResplit(Stat *Stats, int i, int j);virtual ConNode* Copy(Stat *Stats) const;	friend class Stat;};#endif CFTREE_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
丁香激情综合国产| 欧美日韩精品系列| 欧美日精品一区视频| 欧美sm极限捆绑bd| 亚洲午夜久久久久久久久久久| 久久99精品久久久| 欧美日韩三级视频| 综合av第一页| 国产成人一区二区精品非洲| 欧美一级午夜免费电影| 亚洲免费av高清| 国产精品一二三在| 日韩欧美一卡二卡| 亚洲va欧美va人人爽| 94-欧美-setu| 国产精品乱码人人做人人爱 | 亚洲成av人片一区二区三区| 国产成人免费视频| 久久亚区不卡日本| 久久精品国内一区二区三区| 欧美日韩一区二区三区在线 | 日韩av电影天堂| 在线观看欧美日本| 亚洲女爱视频在线| a亚洲天堂av| 中文字幕欧美区| 国产aⅴ精品一区二区三区色成熟| 欧美tickling挠脚心丨vk| 午夜精品福利一区二区三区蜜桃| 在线一区二区三区四区| 国产精品免费久久久久| 成人免费高清视频在线观看| 欧美激情一区二区三区蜜桃视频| 蜜臀精品一区二区三区在线观看| 在线播放中文一区| 免费一区二区视频| 精品理论电影在线| 国产麻豆欧美日韩一区| 国产三级精品三级| 国产成a人无v码亚洲福利| 国产人成一区二区三区影院| 岛国一区二区在线观看| 国产精品久久久久天堂| 91亚洲国产成人精品一区二三| 日韩理论片网站| 欧美三级日韩三级国产三级| 婷婷六月综合亚洲| 精品日韩在线观看| 国内精品国产成人国产三级粉色 | 日日欢夜夜爽一区| 日韩欧美视频一区| 国产精品一区免费在线观看| 中文字幕精品—区二区四季| 95精品视频在线| 婷婷综合在线观看| 精品理论电影在线观看| caoporn国产一区二区| 亚洲一区二区影院| 欧美成人伊人久久综合网| 国产成人一级电影| 亚洲成人午夜电影| 久久久精品tv| 欧美三级欧美一级| 国产尤物一区二区在线| 亚洲乱码国产乱码精品精的特点| 欧美日韩一区二区三区免费看| 激情图区综合网| 亚洲乱码中文字幕综合| 日韩视频一区二区| 97se亚洲国产综合在线| 久久99国内精品| 亚洲精品国产无天堂网2021| 欧美精品一区二区三区蜜臀| 色综合色狠狠天天综合色| 狂野欧美性猛交blacked| 亚洲视频你懂的| 欧美mv日韩mv国产网站| 在线免费观看视频一区| 国产精品一区二区视频| 日韩专区中文字幕一区二区| 国产精品日韩成人| 91精品国产丝袜白色高跟鞋| 99久久99久久免费精品蜜臀| 麻豆一区二区三| 亚洲国产wwwccc36天堂| 国产精品视频线看| 欧美大度的电影原声| 欧美性猛交一区二区三区精品| 国产一区欧美二区| 性久久久久久久| 亚洲欧美日韩国产手机在线 | 欧美一区二区三区男人的天堂| 粉嫩一区二区三区性色av| 亚洲综合小说图片| 国产精品另类一区| 欧美精品一区二区高清在线观看 | 91成人在线免费观看| 国产真实乱对白精彩久久| 五月开心婷婷久久| 亚洲一区精品在线| 亚洲欧美影音先锋| 国产日韩欧美a| 精品国产百合女同互慰| 欧美一级搡bbbb搡bbbb| 欧美区在线观看| 在线观看三级视频欧美| 一本大道久久a久久综合婷婷| 国产1区2区3区精品美女| 国产精品一区二区91| 国产原创一区二区| 国产九九视频一区二区三区| 国内精品久久久久影院薰衣草| 免费观看在线综合色| 人禽交欧美网站| 免费精品99久久国产综合精品| 五月婷婷综合在线| 日韩精品五月天| 日韩av一级片| 韩国一区二区三区| 粉嫩av亚洲一区二区图片| 成人免费视频视频在线观看免费| 成人激情图片网| 91捆绑美女网站| 色94色欧美sute亚洲线路二| 欧美影院午夜播放| 91精品国产一区二区三区蜜臀| 日韩精品最新网址| 国产欧美综合在线观看第十页| 中文字幕国产精品一区二区| 最新热久久免费视频| 一区二区高清免费观看影视大全| 夜夜操天天操亚洲| 蜜臀99久久精品久久久久久软件| 国产美女一区二区| 91小视频免费看| 欧美乱熟臀69xxxxxx| 精品国产不卡一区二区三区| 中文字幕第一区综合| 一区二区三区四区精品在线视频| 亚洲五码中文字幕| 国精产品一区一区三区mba桃花| 成人性生交大合| 欧美日韩三级在线| 久久久久高清精品| 亚洲午夜久久久久久久久电影网 | 欧美亚洲一区二区在线观看| 制服丝袜激情欧洲亚洲| 久久精品视频免费| 亚洲成人1区2区| 国产馆精品极品| 欧美四级电影在线观看| 2020日本不卡一区二区视频| 亚洲日本va午夜在线电影| 日韩高清欧美激情| 99久久婷婷国产综合精品| 91麻豆精品国产自产在线| 国产精品人妖ts系列视频| 午夜精品视频在线观看| 国产成人一级电影| 6080午夜不卡| 亚洲精选视频在线| 国产精品综合视频| 欧美美女喷水视频| 国产精品福利一区| 精品无人区卡一卡二卡三乱码免费卡 | 久久成人免费网| 国产成人鲁色资源国产91色综| 91国产成人在线| 久久久噜噜噜久久中文字幕色伊伊 | heyzo一本久久综合| 欧美一级电影网站| 一区二区不卡在线播放 | 国产精品一区二区免费不卡| 欧美日韩一区中文字幕| 欧美极品aⅴ影院| 麻豆精品国产传媒mv男同 | 91捆绑美女网站| 日本一区二区视频在线| 美女国产一区二区三区| 色综合色狠狠综合色| 欧美成人r级一区二区三区| 亚洲综合在线五月| 成人毛片视频在线观看| 欧美精品一区二区三区高清aⅴ| 亚洲成a人片综合在线| 91年精品国产| 久久久精品影视| 国产精品一区二区无线| 亚洲精品一线二线三线 | 日韩毛片视频在线看| 风间由美中文字幕在线看视频国产欧美| 91精品国产综合久久精品图片| 亚洲一区二区三区四区五区黄| 99久久99久久精品国产片果冻| 国产色婷婷亚洲99精品小说| 国产二区国产一区在线观看| 久久久综合视频| 国产电影一区在线| 国产日产欧美精品一区二区三区| 国产在线精品一区二区夜色|