let free_not_done_nodes (graph : graph) : nodeid Hashset.hashset = 
  let result = create (Hashtbl.length graph) in
    Hashtbl.iter (fun _ node -> 
                    if (free node && not_done node) then
                      add result node.id
                 ) graph;
    result