<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def select_action(self, state):
 """ Select the best action for the given state using e-greedy exploration to minimize overfitting :return: tuple(action, value) """

    value = 0
    if self.steps < self.min_steps:
      action = np.random.randint(self.actions)
    else:
      self.eps = max(self.eps_end, self.eps * self.eps_decay)
      if random.random() < self.eps:
        action = np.random.randint(self.actions)
      else:
        self.local.eval()
        with torch.no_grad():
          state = torch.tensor(state, device=self.device, dtype=torch.float).unsqueeze(0)
          Q = self.local(state)
          value, action = torch.max(Q, 1)

    return int(action), float(value)