public Object calculate(GraphData gd) {
   GraphModel graph = gd.getGraph();
   Vector<ArrayDeque<BaseVertex>> maxsets = getMaxIndependentSet(graph);
   Vector<SubGraph> ret = new Vector<SubGraph>();
   for (ArrayDeque<BaseVertex> maxset : maxsets) {
     SubGraph sd = new SubGraph(graph);
     sd.vertices = new HashSet<Vertex>();
     for (BaseVertex v : maxset) {
       sd.vertices.add((Vertex) v);
     }
     ret.add(sd);
   }
   return ret;
 }