public FPTree() { Raiz = new FPNode(null, null); ultimoListaEnlazada = new Dictionary <string, FPNode>(); primeroListaEnlazada = new Dictionary <string, FPNode>(); items = new List <string>(); }
public void InsertarTransaccion(List <String> t, Dictionary <string, FPNode> listaEn, Dictionary <string, FPNode> listaEnPrim, int minSup, Dictionary <string, int> supports, int times) { if (t.Count != 0 && supports[t[0]] >= minSup) { string act = t[0]; t.RemoveAt(0); if (hijos.ContainsKey(act)) { FPNode hijo = hijos[act]; hijo.Ocurrencia += times; hijo.InsertarTransaccion(t, listaEn, listaEnPrim, minSup, supports, times); } else { FPNode nuev = new FPNode(act, this); hijos.Add(act, nuev); hijos[act].Ocurrencia = times; if (listaEn.ContainsKey(act)) { listaEn[act].Siguiente = nuev; listaEn[act] = nuev; } else { listaEn.Add(act, nuev); listaEnPrim.Add(act, nuev); } hijos[act].InsertarTransaccion(t, listaEn, listaEnPrim, minSup, supports, times); } } }
//Constructor de la instancia Nodo. Recibe por parametro el identificador del producto representado en el nado y de su padre. public FPNode(string Ident, FPNode Padre) { Ocurrencia = 1; Identificador = Ident; Siguiente = null; this.Padre = Padre; hijos = new Dictionary <string, FPNode>(); }
public FPTree(List <List <String> > Transactions, double minSup) { Raiz = new FPNode(null, null); ultimoListaEnlazada = new Dictionary <string, FPNode>(); primeroListaEnlazada = new Dictionary <string, FPNode>(); items = new List <string>(); this.minSup = minSup; ConstructFPTree(Transactions, minSup); }
public void FrequentItemSets(List <string> frecuente, List <List <string> > frequents, Dictionary <List <string>, int> supports) { if (items.Count != 0 && primeroListaEnlazada.ContainsKey(items[0])) { int j = items.Count - 1; while (!primeroListaEnlazada.ContainsKey(items[j])) { j--; } for (int i = j; i >= 0; i--) { List <string> frecuenteItem = new List <string>(); foreach (string st in frecuente) { frecuenteItem.Add(st); } frecuenteItem.Add(items[i]); int tam = frecuenteItem.Count(); if (tam > 1) { frequents.Add(frecuenteItem); } int sup = 0; Dictionary <List <string>, int> transacc = new Dictionary <List <string>, int>(); FPNode prim = primeroListaEnlazada[items[i]]; while (prim != null) { sup += prim.Ocurrencia; int cont = prim.Ocurrencia; FPNode act = prim.Padre; List <string> transaccion = new List <string>(); while (act.Identificador != null) { transaccion.Add(act.Identificador); act = act.Padre; } transacc.Add(transaccion, cont); prim = prim.Siguiente; } supports.Add(frecuenteItem, sup); FPTree conditional = new FPTree(); conditional.ConstructFPTree(transacc, minSupInt); conditional.FrequentItemSets(frecuenteItem, frequents, supports); } } }