由频繁项产生关键规则函数
void guanlian() //确定关联规则并链接
{int r=0; //
for(int i=0;pinfanxiang[i][0]!="";i++) //遍历每个频繁项
{int k=0; //用于记录当前频繁项长度
for(k=0;pinfanxiang[i][k]!="";k++); //算出当前频繁项长度
for(int j=0,a=0;j<k-1;j++) //子集阶数循环,便于确定子集阶数查
for(a;pinfanxiang[a][j]!="";a++) //遍历每个频繁项找出子集
{if(pinfanxiang[a][j+1]!="") //判断是否超出范围子集阶数范围
break; //超出结束判断
int shu=0; //记录符合子项维度(确定阶数后要查看是否是当前阶数子集)
for(int c=0;pinfanxiang[i][c]!="";c++) //遍历拿出的一个频繁项
for(int b=0;pinfanxiang[a][b]!="";b++) //遍历拿出的子频繁项
if(pinfanxiang[a][b]==pinfanxiang[i][c])//判断子集相符维度
{shu++;c++; //维度+1,查找数据+1
}
if(shu==j+1) //判断是否达到维度 (达到则为当前阶数子集)
{if(1.0*pinfanjishu[i]/pinfanjishu[a]>=confidence) //判断是否满足强关联规则 (置信度是否达到)
{for(int m=0;pinfanxiang[a][m]!="";m++) //达到将其子集逐个数据放入强关联关系库
guanlian1[r][m]=pinfanxiang[a][m]; //入库(赋值入数组)
for(int x=0,m=0;pinfanxiang[i][x]!="";x++) //将其剩余部分放入关联关系库 遍历拿出项数据
for(int y=0;;y++) //遍历子集项 数据
{if(pinfanxiang[i][x]==pinfanxiang[a][y]) //判断子集中是否已经存在
break; //存在跳出一层遍历
if(pinfanxiang[a][y]=="") //如果找完一行未发现有存在,将其给关联项
{guanlian2[r][m++]=pinfanxiang[i][x]; //蒋未找到的数据给关联项
break; //结束循环
}
}
r++;
}
}
}
}
}