Beispiel #1
0
            public List <U> theNodes = new List <U>();           // 2 or 3 elements in this list

            public Node(Monoid <V> aMonoid, U u1, U u2)
            {
                theMonoid = aMonoid;

                theNodes.Add(u1);
                theNodes.Add(u2);

                PreCalcMeasure = theMonoid.Operation(u1.Measure(), u2.Measure());
            }
Beispiel #2
0
            public V Measure()
            {
                V result = theMonoid.Zero;

                foreach (U u in digNodes)
                {
                    result = theMonoid.Operation(result, u.Measure());
                }

                return(result);
            }
Beispiel #3
0
            public Node(Monoid <V> aMonoid, List <U> listU)
            {
                theMonoid = aMonoid;

                theNodes = listU;

                PreCalcMeasure = theMonoid.Zero;
                foreach (U u in theNodes)
                {
                    PreCalcMeasure = theMonoid.Operation(PreCalcMeasure, u.Measure());
                }
            }
Beispiel #4
0
            public Node(Monoid <V> aMonoid, U u1, U u2, U u3)
            {
                theMonoid = aMonoid;

                theNodes.Add(u1);
                theNodes.Add(u2);
                theNodes.Add(u3);

                PreCalcMeasure = theMonoid.Zero;
                foreach (U u in theNodes)
                {
                    PreCalcMeasure = theMonoid.Operation(PreCalcMeasure, u.Measure());
                }
            }
Beispiel #5
0
        public DeepFTreeM(Monoid <M> aMonoid,

                          Digit <T, M> frontDig,
                          FTreeM <Node <T, M>, M> innerFT,
                          Digit <T, M> backDig)
        {
            if (frontDig.digNodes.Count > 0)
            {
                theMonoid = aMonoid;

                this.frontDig = frontDig;
                this.innerFT  = innerFT;
                this.backDig  = backDig;

                PreCalcMeasure = theMonoid.Zero;
                PreCalcMeasure = theMonoid.Operation(PreCalcMeasure, frontDig.Measure());
                PreCalcMeasure = theMonoid.Operation(PreCalcMeasure, innerFT.Measure());
                PreCalcMeasure = theMonoid.Operation(PreCalcMeasure, backDig.Measure());
            }
            else
            {
                throw new Exception("The DeepFTree() constructor is passed an empty frontDig !");
            }
        }