我编写了以下代码来从 2 元素集生成 k 元素项集。这两个元素集作为 clist1 和 clist2 传递给 CandidateItemsetGen。
public static void candidateItemsetGen(ArrayList<Integer> clist1, ArrayList<Integer> clist2)
{
for(int i = 0; i < clist1.size(); i++)
{
for(int j = i+1; j < clist2.size(); j++)
{
for(int k = 0; k < clist1.size()-2; k++)
{
int r = clist1.get(k).compareTo(clist2.get(k));
if(r == 0 && clist1.get(k)-1 == clist2.get(k)-1)
{
** candidateItemset.add(clist1.get(i), clist1.get(clist1.size()-1), clist2.get(clist2.size()-1));
}
}
}
}
// return candidateItemset;
}
创建 k 项集的条件是 clist1(i) == clist2(i),其中 i = 1,...,k-2 和 clist1(k-2) != clist2(k-2)。但是我放**的代码中有错误。我怎样才能解决这个问题?逻辑是该函数生成候选项目集,这些候选项目集将再次用作生成其他候选项目集的输入。