package aima.core.probability.mdp;
import aima.core.agent.Action;
/**
* Artificial Intelligence A Modern Approach (3rd Edition): page 647.<br>
* <br>
*
* A solution to a Markov decision process is called a <b>policy</b>. It
* specifies what the agent should do for any state that the agent might reach.
* It is traditional to denote a policy by π, and π(s) is the action
* recommended by the policy π for state s. If the agent has a complete
* policy, then no matter what the outcome of any action, the agent will always
* know what to do next.
*
* @param <S>
* the state type.
* @param <A>
* the action type.
*
* @author Ciaran O'Reilly
* @author Ravi Mohan
*
*/
public interface Policy<S, A extends Action> {
/**
* π(s) is the action recommended by the policy π for state s.
*
* @param s
* the state s
* @return the action recommended by the policy π for state s.
*/
A action(S s);
}