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
| [] -> ()