Johnson's algorithm


 * 1) Johnson's algorithm; maximizing the amount of overlap to reduce total time spent