public TAction Search(TState state, IAdversarialSearchProblem <TState, TAction> problem) { this.problem = problem; searchPlayer = problem.Player(state); var a = default(TAction); var alpha = double.NegativeInfinity; var actions = problem.Actions(state); foreach (var action in actions) { var vector = MinValue(problem.Result(state, action)); //var min = Minimax(Problem.Result(state, action)); if (vector > alpha) { alpha = vector; a = action; } } return(a); }