/// <summary> /// Kiem tra tap muc thuoc tid /// </summary> /// <param name="tid">Transaction id cua F</param> /// <param name="muc">Mot muc cua L, Example: {1,2}</param> /// <returns></returns> public static bool ThuocTid(ItemSetsCollection tid, Itemsets muc) { Itemsets p = new Itemsets(muc); p.RemoveAt(muc.Count - 1); // p: c-c[k] List <int> q = new List <int>(muc); q.RemoveAt(muc.Count - 2); //q: c-c[k-1] int count = 0; foreach (Itemsets item in tid) { if (item.IsEqual(p)) { count += 1; } if (item.IsEqual(q)) { count += 1; } } return(count >= 2); }
/// <summary> /// Thuat toan apriori_gen, sinh ra tap ung vien C tu tap L(k-1) /// </summary> /// <param name="lPrevious">L(k-1)</param> /// <returns></returns> public static ItemSetsCollection AprioriGen(ItemSetsCollection lPrevious) { ItemSetsCollection result = new ItemSetsCollection(); if (lPrevious.Count <= 1) { return(result); } int k = lPrevious[0].Count; for (int i = 0; i < lPrevious.Count - 1; i++) { Itemsets p = new Itemsets(lPrevious[i]); p.RemoveAt(k - 1); for (int j = i + 1; j < lPrevious.Count; j++) { Itemsets q = new Itemsets(lPrevious[j]); q.RemoveAt(k - 1); if (p.IsEqual(q)) { q.Add(lPrevious[i][k - 1]); q.Add(lPrevious[j][k - 1]); result.Add(q); } } } return(result); }