docs: def get_variable_nodes(self):
          """
          Returns variable nodes present in the graph.
  
          Before calling this method make sure that all the factors are added
          properly.
  
          Examples
          --------
          >>> from pgmpy.models import FactorGraph
          >>> from pgmpy.factors.discrete import DiscreteFactor
          >>> G = FactorGraph()
          >>> G.add_nodes_from(['a', 'b', 'c'])
          >>> phi1 = DiscreteFactor(['a', 'b'], [2, 2], np.random.rand(4))
          >>> phi2 = DiscreteFactor(['b', 'c'], [2, 2], np.random.rand(4))
          >>> G.add_nodes_from([phi1, phi2])
          >>> G.add_factors(phi1, phi2)
          >>> G.add_edges_from([('a', phi1), ('b', phi1),
          ...                   ('b', phi2), ('c', phi2)])
          >>> G.get_variable_nodes()
          ['a', 'b']
          """
          self.check_model()
  
          variable_nodes = set([x for factor in self.factors for x in factor.scope()])
          return list(variable_nodes)