示例#1
0
        public override bool isomorfismo(int[,] g1, int[,] g2, ref List <int[, ]> pasos, ref int[] cambios)
        {
            int[]      p;
            List <int> p2   = new List <int>();
            long       fact = MetodosAuxiliares.factorial(this.Count);

            int[] indexp = new int[this.Count];

            for (int i = 0; i < this.Count; i++)  //se llena indexp con el numero de nodos
            {
                indexp[i] = i;
            }

            if (MetodosAuxiliares.comparaMatrices(g1, g2))
            {
                sep(ref p2, indexp);
                cambios = indexp;
                return(true);
            }
            p = indexp;
            //creamos una permutacion y la probamos
            for (int i = 0; i < fact; i++)
            {
                biyeccion(indexp);
                if (PruebaPermutacion(g1, g2, indexp, ref p, ref pasos))
                {
                    cambios = indexp;
                    return(true);
                }
            }
            cambios = indexp;
            return(false);
        }