Beispiel #1
0
 public FPTree()
 {
     Raiz = new FPNode(null, null);
     ultimoListaEnlazada  = new Dictionary <string, FPNode>();
     primeroListaEnlazada = new Dictionary <string, FPNode>();
     items = new List <string>();
 }
Beispiel #2
0
        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);
                }
            }
        }
Beispiel #3
0
 //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>();
 }
Beispiel #4
0
 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);
 }
Beispiel #5
0
        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);
                }
            }
        }