'Given the state and action, return a list of possible next states and their probabilities. Only next states
with nonzero probabilities will be returned
:param state: start state
:param action: action
:return: a list of pairs (s\', p(s\'|s,a))'

def get_possible_next_states(self, state, action):

    x = (state // self.n_col)
    y = (state % self.n_col)
    coords = np.array([x, y])
    increments = np.array([[0, (-1)], [1, 0], [0, 1], [(-1), 0]])
    next_coords = np.clip((coords + increments[action]), [0, 0], [(self.n_row - 1), (self.n_col - 1)])
    next_state = ((next_coords[0] * self.n_col) + next_coords[1])
    state_type = self.desc[(x, y)]
    next_state_type = self.desc[(next_coords[0], next_coords[1])]
    if ((next_state_type == 'W') or (state_type == 'H') or (state_type == 'G')):
        return [(state, 1.0)]
    else:
        return [(next_state, 1.0)]
