Ejemplo n.º 1
0
        internal bool Remove(Pointstamp element)
        {
            int position = elements.Count;

            for (int i = 0; i < elements.Count; i++)
            {
                if (this.Reachability.LessThan(element, elements[i]))
                {
                    if (position == elements.Count && element.Equals(elements[i]))
                    {
                        position = i;
                    }
                    else
                    {
                        precedents[i]--;
                    }
                }
            }

            if (position == elements.Count)
            {
                throw new Exception("Tried to remove an element not present in MinimalAntichain");
            }

            if (position < elements.Count)
            {
                elements[position] = elements[elements.Count - 1];
                //elements.Count--;
                elements.RemoveAt(elements.Count - 1);

                precedents[position] = precedents[precedents.Count - 1];
                precedents.RemoveAt(precedents.Count - 1);
                //precedents.Count--;
            }

            var changes = false;

            for (int i = 0; i < Antichain.Count; i++)
            {
                if (element.Equals(Antichain[i]))
                {
                    changes = true;
                }
            }

            if (changes)
            {
                UpdateAntichain();
            }

            return(changes);
        }
        public int CompareTo(Pointstamp a, Pointstamp b)
        {
            if (a.Timestamp[0] != b.Timestamp[0])
            {
                return(a.Timestamp[0] - b.Timestamp[0]);
            }

            if (a.Equals(b))
            {
                return(0);
            }

            if (this.LessThan(a, b))
            {
                return(-1);
            }

            if (this.LessThan(a, b))
            {
                return(1);
            }

            return(a.Location - b.Location);
        }