docs: def induced_graph(self, elimination_order):
          """
          Returns the induced graph formed by running Variable Elimination on the network.
  
          Parameters
          ----------
          elimination_order: list, array like
              List of variables in the order in which they are to be eliminated.
  
          Examples
          --------
          >>> import numpy as np
          >>> import pandas as pd
          >>> from pgmpy.models import BayesianModel
          >>> from pgmpy.inference import VariableElimination
          >>> values = pd.DataFrame(np.random.randint(low=0, high=2, size=(1000, 5)),
          ...                       columns=['A', 'B', 'C', 'D', 'E'])
          >>> model = BayesianModel([('A', 'B'), ('C', 'B'), ('C', 'D'), ('B', 'E')])
          >>> model.fit(values)
          >>> inference = VariableElimination(model)
          >>> inference.induced_graph(['C', 'D', 'A', 'B', 'E'])
          <networkx.classes.graph.Graph at 0x7f34ac8c5160>
          """
          # If the elimination order does not contain the same variables as the model
          if set(elimination_order) != set(self.variables):
              raise ValueError("Set of variables in elimination order"
                               " different from variables in model")
  
          eliminated_variables = set()
          working_factors = {node: [factor.scope() for factor in self.factors[node]]
                             for node in self.factors}
  
          # The set of cliques that should be in the induced graph
          cliques = set()
          for factors in working_factors.values():
              for factor in factors:
                  cliques.add(tuple(factor))
  
          # Removing all the factors containing the variables which are
          # eliminated (as all the factors should be considered only once)
          for var in elimination_order:
              factors = [factor for factor in working_factors[var]
                         if not set(factor).intersection(eliminated_variables)]
              phi = set(itertools.chain(*factors)).difference({var})
              cliques.add(tuple(phi))
              del working_factors[var]
              for variable in phi:
                  working_factors[variable].append(list(phi))
              eliminated_variables.add(var)
  
          edges_comb = [itertools.combinations(c, 2)
                        for c in filter(lambda x: len(x) > 1, cliques)]
          return nx.Graph(itertools.chain(*edges_comb))