| 算法:Apriori 
 输入:D - 事务数据库;min_sup - 最小支持度计数阈值
 
 输出:L - D中的频繁项集
 
 方法:
 
 L1=find_frequent_1-itemsets(D); // 找出所有频繁1项集
 
 For(k=2;Lk-1!=null;k++){
 
 Ck=apriori_gen(Lk-1); // 产生候选,并剪枝
 
 For each 事务t in D{ // 扫描D进行候选计数
 
 Ct =subset(Ck,t); // 得到t的子集
 
 For each 候选c 属于 Ct
 
 c.count++;
 
 }
 
 Lk={c属于Ck | c.count>=min_sup}
 
 }
 
 Return L=所有的频繁集;
 
 
 
 Procedure apriori_gen(Lk-1:frequent(k-1)-itemsets)
 
 For each项集l1属于Lk-1
 
 For each项集 l2属于Lk-1
 
 If((l1[1]=l2[1])&&( l1[2]=l2[2])&&……..
 
 && (l1[k-2]=l2[k-2])&&(l1[k-1]<l2[k-1])) then{
 
 c=l1连接l2 //连接步:产生候选
 
 if has_infrequent_subset(c,Lk-1) then
 
 delete c; //剪枝步:删除非频繁候选
 
 else add c to Ck;
 
 }
 
 Return Ck;
 
 
 
 Procedure has_infrequent_sub(c:candidate k-itemset; Lk-1:frequent(k-1)-itemsets)
 
 For each(k-1)-subset s of c
 
 If s不属于Lk-1 then
 
 Return true;
 
 Return false;
 
 
 |