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); }
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); }
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); }