📄 fpgrowth.java
字号:
package association.fptree;
import java.io.*;
import java.util.LinkedList;
import association.fptree.ITree.Node;
/**
* FP_growth算法
* @author qjt
*
*/
public class FPGrowth {
int minSupport=1;
CreateFPTree ct;
ITree iTree; //存储挖掘出的所有项集的树
FPGrowth(){
ct=new CreateFPTree();
}
/*主程序*/
public void Start(FPTree tree,ITree itr,int supp){
iTree=itr;
minSupport=supp;
FP_growth(tree,itr.head);
}
/**
* fp-growth算法
* @param tree FPtree
* @param head 频繁项集树的头结点
* */
public void FP_growth(FPTree tree,LinkedList<Node> head){
FPTree branch; //条件FPTree
String itemName;
int len,i=0,count;
LinkedList<Node> l,cl;
ITree itr=new ITree();
ITree.Node node;
l=head;
len=tree.itemTb.Length();
while(i<len){
count=tree.itemTb.ReadCount(i);
if (count<minSupport){
i++;
continue;
}
itemName=tree.itemTb.ReadItem(i);
node=itr.new Node(itemName,count);
l.add(node);
branch=ct.ConditionFPT(tree,itemName); //产生条件FP树
if (branch==null){ /*如果没有产生条件FPTree,
当一个项只是root结点下的子结点是就不会产生条件FPTree */
i++;
continue;
}
cl=new LinkedList<Node>();
node.cNode=cl;
FP_growth(branch,cl);
branch=null;
i++;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -