code: def get_dot_graph(leaf_nodes: Collection[ValueNode]) -> pydot.Dot:
      """Utility to print a graph in a human readable manner.
  
      The format resembles a sequence of calls to apply_operation or
      apply_multi_output_operation.
  
      Args:
        leaf_nodes: A list of leaf `ValueNode`s to define the graph.  The graph will
          be the transitive parents of the leaf nodes.
  
      Returns:
        A human readable summary of the graph.
      """
      visitor = _PrintGraphVisitor()
      traverser = Traverser(visitor)
      for value_node in leaf_nodes:
          traverser.visit_value_node(value_node)
      return visitor.get_dot_graph()
  
imports: import abc
  import collections
  import dataclasses
  from typing import Any, Collection, Dict, List, Optional, Tuple
  import pydot
label_desc: Use image node_id 4 for calling a global function with example usage: get_dot_graph(leaf_nodes) and returns: visitor