Пример #1
0
        public override Mate Clone(State state)
        {
            MateSimpath mate = new MateSimpath();

            mate.mate_array_ = new int[state.GetNumberOfVertices() + 1];

            for (int i = 1; i <= state.GetNumberOfVertices(); ++i)
            {
                mate.mate_array_[i] = this.mate_array_[i];
            }
            return(mate);
        }
Пример #2
0
        public override Mate MakeInitialMate()
        {
            MateSimpath mate = new MateSimpath();

            int[] mate_array = new int[GetNumberOfVertices() + 1];
            for (int i = 1; i <= GetNumberOfVertices(); ++i)
            {
                mate_array[i] = i;
            }
            mate_array[1] = GetNumberOfVertices();
            mate_array[GetNumberOfVertices()] = 1;
            mate.SetMate(mate_array);
            return(mate);
        }
Пример #3
0
        public override bool Equals(object obj)
        {
            MateSimpath mate2 = (MateSimpath)obj;

            for (int i = 0; i < state_.GetNextFrontierSize(); ++i)
            {
                int v = state_.GetNextFrontierValue(i);
                if (this.mate_array_[v] != mate2.mate_array_[v])
                {
                    return(false);
                }
            }
            return(true);
        }