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

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

?? cftree.h

?? 經典的層次聚類算法Birch。在linux下運行通過
?? 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);	void visualize_leaf_entries(Stat *Stats, ostream &fo);	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一区二区三区免费野_久草精品视频
精品粉嫩超白一线天av| 亚洲国产综合人成综合网站| 自拍偷拍国产精品| 久久99精品久久久久久国产越南 | 国产盗摄一区二区| 欧美情侣在线播放| 亚洲欧美日本在线| 成人永久免费视频| 91精品国产色综合久久久蜜香臀| 中文字幕在线观看一区| 极品销魂美女一区二区三区| 色婷婷综合五月| 最新热久久免费视频| 国产91富婆露脸刺激对白| 欧美一级片免费看| 午夜久久久久久久久久一区二区| 懂色av一区二区三区蜜臀 | 日本女人一区二区三区| 一本到不卡精品视频在线观看| 久久久久久久久久久99999| 日韩国产成人精品| 欧美日韩一级二级| 一区二区在线看| 99re8在线精品视频免费播放| 26uuu国产电影一区二区| 蜜桃一区二区三区在线观看| 欧美在线观看禁18| 亚洲一区二区欧美| 欧美日韩一级视频| 日韩精品一级中文字幕精品视频免费观看 | 亚洲精品乱码久久久久久久久 | 国产精品麻豆久久久| 狠狠色丁香婷婷综合| 欧美一级国产精品| 久久国产尿小便嘘嘘| 91精品国产欧美日韩| 免费精品视频最新在线| 日韩欧美激情在线| 国产精品一区二区免费不卡| 国产欧美日韩不卡免费| 白白色 亚洲乱淫| 一区二区三区在线视频观看| 欧美色欧美亚洲另类二区| 亚洲一区二区在线观看视频| 欧美男男青年gay1069videost| 亚洲成人tv网| 日韩欧美激情在线| 成人夜色视频网站在线观看| 国产精品理论片| 91成人国产精品| 蜜臀av一区二区| 国产欧美在线观看一区| 91免费视频网| 免费观看91视频大全| 久久久久久久久久电影| 97久久精品人人爽人人爽蜜臀| 一区av在线播放| 欧美大肚乱孕交hd孕妇| 成人免费看黄yyy456| 一区二区三区四区激情| 欧美一区二区成人6969| 成人午夜电影网站| 日韩制服丝袜先锋影音| 亚洲国产高清不卡| 欧美色区777第一页| 国产精品123区| 亚洲一区视频在线| 久久免费看少妇高潮| 色8久久精品久久久久久蜜| 日韩国产欧美在线播放| 日本一区二区久久| 在线综合亚洲欧美在线视频| 粉嫩在线一区二区三区视频| 亚洲一区二区在线视频| 久久久777精品电影网影网| 日本高清成人免费播放| 国产在线视频精品一区| 亚洲一区欧美一区| 欧美国产日韩a欧美在线观看| 在线影视一区二区三区| 国产一区欧美日韩| 一二三四区精品视频| 久久久蜜桃精品| 91精品国产综合久久久久久| 91浏览器打开| 国产精品影视在线| 午夜精品123| 亚洲乱码国产乱码精品精的特点 | 国产精品国产三级国产aⅴ中文 | 国产精品国产三级国产aⅴ入口| 宅男在线国产精品| 欧美日韩亚洲综合在线 | 国产成人综合亚洲91猫咪| 亚洲国产视频a| 亚洲国产成人在线| 日韩精品中文字幕一区| 69p69国产精品| 欧美亚洲综合另类| 99精品视频一区| 国产成人免费av在线| 国产一区二区精品久久91| 美女视频一区在线观看| 日韩福利电影在线观看| 亚洲成人激情av| 亚洲国产日日夜夜| 亚洲一区在线观看网站| 亚洲自拍偷拍欧美| 亚洲精品成人悠悠色影视| 成人欧美一区二区三区1314| 日本一区二区三区四区| 国产三级三级三级精品8ⅰ区| 欧美成人免费网站| 日韩久久免费av| 精品国产一区二区三区不卡| 精品国产区一区| 精品成人一区二区| 久久久久国产成人精品亚洲午夜| 久久综合九色综合97婷婷女人| 精品日韩99亚洲| 国产网红主播福利一区二区| 国产亚洲制服色| 国产精品久久福利| 亚洲狠狠丁香婷婷综合久久久| 自拍av一区二区三区| 亚洲男同性视频| 天堂资源在线中文精品| 日韩av电影免费观看高清完整版 | 亚洲欧美欧美一区二区三区| 夜夜亚洲天天久久| 水野朝阳av一区二区三区| 久久99九九99精品| 成人黄色av电影| 欧美视频日韩视频在线观看| 在线成人午夜影院| 欧美精品一区二区三区视频| 中日韩免费视频中文字幕| 最新中文字幕一区二区三区| 亚洲国产人成综合网站| 久久99最新地址| av一二三不卡影片| 欧美无乱码久久久免费午夜一区 | 91超碰这里只有精品国产| 欧美va在线播放| 国产精品欧美综合在线| 亚洲综合偷拍欧美一区色| 蜜臀av一区二区| 99久久综合狠狠综合久久| 欧美熟乱第一页| 国产欧美日韩激情| 亚洲成人第一页| 国产成人自拍高清视频在线免费播放| 不卡视频在线观看| 欧美一区二区人人喊爽| 国产精品每日更新在线播放网址| 亚洲成人av资源| 成人黄色片在线观看| 日韩一区二区在线看片| 亚洲天堂a在线| 国内精品第一页| 欧美狂野另类xxxxoooo| 国产精品女主播av| 毛片av一区二区三区| 色综合天天做天天爱| 久久久久99精品国产片| 亚洲大片在线观看| 99国产一区二区三精品乱码| 日韩精品一区二区三区视频 | 欧美日韩的一区二区| 国产精品毛片久久久久久| 麻豆91精品视频| 在线观看视频91| 国产精品女人毛片| 国产精品一区不卡| 欧美成人女星排名| 爽好久久久欧美精品| 欧美最猛性xxxxx直播| 中文字幕亚洲在| 国产老妇另类xxxxx| 666欧美在线视频| 一区二区三区在线视频观看| 成人福利电影精品一区二区在线观看 | 99国产欧美另类久久久精品| 久久色成人在线| 捆绑调教一区二区三区| 欧美日韩一二区| 亚洲综合区在线| 91理论电影在线观看| 国产精品理论片| 成年人午夜久久久| 国产精品美女一区二区| 国产激情视频一区二区在线观看 | 亚洲黄色片在线观看| 97se亚洲国产综合自在线| 国产精品进线69影院| av高清久久久| 1区2区3区精品视频| 97久久人人超碰| 亚洲综合一区二区| 欧美无砖砖区免费| 日韩电影在线看|