import java.util.*; public interface Combiner { /** Apply a given row of a graph to a given column of a (possibly different graph) to get a candidate edge weight for the corresponding row and column of a third graph (which may be the same as one of the first two). @param row the list of edge weights of the row @param col @return the candidate weight */ public Object apply(List row, List col); /** Determine the better value, given the choice of an old value and a new value. The intended application is to return the better of an existing weight in a graph, or a newer canddiate value computed by apply @param current the old value @param newer the new value @return whichever of the two arguments is a better edge weight for the current application */ public Object choose(Object current, Object newer); }