'Builds a training graph for this component.
Two assumptions are made about the resulting graph:
1. An oracle will be used to unroll the state and compute the cost.
2. The graph will be differentiable when the cost is being minimized.
Args:
state: MasterState from the \'AdvanceMaster\' op that advances the
underlying master to this component.
network_states: dictionary of component NetworkState objects.
Returns:
(state, cost, correct, total) -- These are TF ops corresponding to
the final state after unrolling, the total cost, the total number of
correctly predicted actions, and the total number of actions.'

@abstractmethod
def build_greedy_training(self, state, network_states):

    pass
