package edu.neu.ccs.demeter.aplib;

import java.util.Collection;

/** A directed graph whose nodes are unique Objects and whose edges
    are unlabeled but ordered. */
public interface StrategyGraphI {
  /** A Collection of nodes in the strategy graph. */
  Collection getNodes();

  /** A Collection of indices (Integer objects) of edges going out of node v.
      Return an empty list if there are no outgoing edges, null if there
      is no such node. */
  Collection getOutgoingEdges(Object v);

  /** A Collection of indices (Integer objects) of edges coming into node v.
      Return an empty list if there are no incoming edges, null if there
      is no such node. */
  Collection getIncomingEdges(Object v);

  /** The number of edges in the strategy graph. */
  int numEdges();

  /** The source node of edge number i. */
  Object getEdgeSource(int i);

  /** The target node of edge number i. */
  Object getEdgeTarget(int i);
}

