⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fp.h

📁 数据流关联规则挖掘算法moment
💻 H
字号:
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
Header: FP.h
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */

#ifndef FP_H
#define FP_H

struct IdxNode; //a node in the indexing link list
struct FPNode; //a node in the FP tree
typedef IdxNode* IdxNodePtr; 
typedef FPNode* FPNodePtr; 
typedef map<unsigned short, FPNode> FPFamily; //<node label, FPNode>


struct TidNode
{
	int tid;
	FPNodePtr tailOfItemset;

	TidNode ()
	{
		tid = 0;
		tailOfItemset = 0;
	}

	TidNode (int newTid, FPNodePtr newTail)
	{
		tid = newTid;
		tailOfItemset = newTail;
	}
};

struct FPNode
{
	static long numberOfFPNodes;

	FPNodePtr parent;
	unsigned short item;
	int count;
	int tid_sum;
	FPFamily children;
	IdxNodePtr locInIdx;

	FPNode () //default constructor
	{
		numberOfFPNodes ++;

		parent = 0;
		item = 0;
		count = 0;
		tid_sum = 0;
		locInIdx = 0;
	}

	FPNode (const FPNode & rhs) //copy constructor, defined because need to update number of nodes
	{
		numberOfFPNodes ++;

		parent = rhs.parent;
		item = rhs.item;
		count = rhs.count;
		tid_sum = rhs.tid_sum;
		locInIdx = rhs.locInIdx;
	}

	~FPNode () //default destructor
	{
		numberOfFPNodes --;
	}

};

struct IdxNode
{
	IdxNodePtr left;
	IdxNodePtr right;
	FPNodePtr locInFP;
	IdxNode () //default constructor
	{
		left = 0;
		right = 0;
		locInFP = 0;
	}
};

struct FP
{
	vector<IdxNode> headTable;
	FPNode FPRoot;
	deque<TidNode> tidList;
	vector<int> headCount;
	vector<int> headTidSum;

	FP (unsigned short size) //there is no default constructor
	{
		IdxNode dummy;
		headTable.assign(size, dummy);
		headCount.assign(size,0);
		headTidSum.assign(size,0);
	}

	~FP() //destructor, clear the headTable
	{
		//IdxNodePtr dummy1, dummy2;
		//for ( unsigned short i = 0; i < headTable.size(); i++ ) {
		//	dummy1 = headTable[i].right;
		//	while ( dummy1 != 0 ) {
		//		dummy2 = dummy1;
		//		dummy1 = dummy1->right;
		//		delete dummy2;
		//	}
		//}
	}

	void addItemset(vector<unsigned short> & itemset, int tid);
	void addHelp(FPNode & myNode, unsigned short ending, 
		vector<unsigned short> & itemset, int tid);
	void deleteItemset(vector<unsigned short> & itemset, int & tid);

	void printMe(FPNode & myNode);
};

#endif //FP_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -