docs: def set_start_state(self, start_state):
          """
          Set the start state of the Markov Chain. If the start_state is given as a array-like iterable, its contents
          are reordered in the internal representation.
  
          Parameters:
          -----------
          start_state: dict or array-like iterable object
              Dict (or list) of tuples representing the starting states of the variables.
  
          Examples:
          ---------
          >>> from pgmpy.models import MarkovChain as MC
          >>> from pgmpy.factors.discrete import State
          >>> model = MC(['a', 'b'], [2, 2])
          >>> model.set_start_state([State('a', 0), State('b', 1)])
          """
          if start_state is not None:
              if not hasattr(start_state, '__iter__') or isinstance(start_state, six.string_types):
                  raise ValueError('start_state must be a non-string iterable.')
              # Must be an array-like iterable. Reorder according to self.variables.
              state_dict = {var: st for var, st in start_state}
              start_state = [State(var, state_dict[var]) for var in self.variables]
          if start_state is None or self._check_state(start_state):
              self.state = start_state