docs: def get_hops(self, start, end=None, forward=True):
          """
          Computes the hop distance to all nodes centered around a specified node.
  
          First order neighbours are at hop 1, their neigbours are at hop 2 etc.
          Uses :py:meth:`forw_bfs` or :py:meth:`back_bfs` depending on the value of the forward
          parameter.  If the distance between all neighbouring nodes is 1 the hop
          number corresponds to the shortest distance between the nodes.
  
          :param start: the starting node
          :param end: ending node (optional). When not specified will search the whole graph.
          :param forward: directionality parameter (optional). If C{True} (default) it uses L{forw_bfs} otherwise L{back_bfs}.
          :return: returns a list of tuples where each tuple contains the node and the hop.
  
          Typical usage::
  
              >>> print graph.get_hops(1, 8)
              >>> [(1, 0), (2, 1), (3, 1), (4, 2), (5, 3), (7, 4), (8, 5)]
              # node 1 is at 0 hops
              # node 2 is at 1 hop
              # ...
              # node 8 is at 5 hops
          """
          if forward:
              return list(self._iterbfs(start=start, end=end, forward=True))
          else:
              return list(self._iterbfs(start=start, end=end, forward=False))