Example #1
0
    private ItemSet AprioriGenerate(ItemSet li, int k, double support)
    {
        ItemSet curList = null;
        ItemSet durList = null;
        ItemSet candi   = null;
        ItemSet result  = new ItemSet();

        for (int i = 0; i < li.Count; i++)
        {
            for (int j = 0; j < li.Count; j++)
            {
                bool flag = true;
                curList = (ItemSet)li.arr[i];
                durList = (ItemSet)li.arr[j];
                for (int n = 2; n < k; n++)
                {
                    if (((DataItem)curList.arr[n - 2]).Id == ((DataItem)durList.arr[n - 2]).Id)
                    {
                        flag = true;
                    }
                    else
                    {
                        flag = false;
                        break;
                    }
                }

                if (flag && ((DataItem)curList.arr[k - 1]).Id < ((DataItem)durList.arr[k - 1]).Id)
                {
                    flag = true;
                }
                else
                {
                    flag = false;
                }
                if (flag)
                {
                    candi = new ItemSet();


                    for (int m = 0; m < k; m++)
                    {
                        candi.Add((DataItem)durList.arr[m]);
                    }
                    candi.Add((DataItem)curList.arr[k - 1]);



                    if (HasInFrequentSubset(candi, li, k))
                    {
                        candi.Clear();
                    }
                    else
                    {
                        result.Add(candi);
                    }
                }
            }
        }
        return(result);
    }