let rec visit_graph node_list = 
  match node_list with
      (id,targets,visited)::rest ->
        if !visited then
          visit_graph rest
        else 
          let _ = visited := true in
          let _ = visit_graph (List.map get_state targets) in
            visit_graph rest
    | [] -> ()