def update_sarsa_table(sarsa, state, action, reward, next_state, next_action, alpha, gamma):
    '\n    update sarsa state-action pair value, main difference from q learning is that it uses epsilon greedy policy\n    return action\n    '
    next_max = sarsa[(next_state, next_action)]
    sarsa[(state, action)] = (sarsa[(state, action)] + (alpha * ((reward + (gamma * next_max)) - sarsa[(state, action)])))
update sarsa state-action pair value, main difference from q learning is that it uses epsilon greedy policy
return action
def update_sarsa_table(sarsa, state, action, reward, next_state, next_action, alpha, gamma):
    '\n    update sarsa state-action pair value, main difference from q learning is that it uses epsilon greedy policy\n    return action\n    '
    next_max = sarsa[(next_state, next_action)]
    sarsa[(state, action)] = (sarsa[(state, action)] + (alpha * ((reward + (gamma * next_max)) - sarsa[(state, action)])))