code: def nfa_complementation(nfa: dict) -> dict:
      
      determinized_nfa = nfa_determinization(nfa)
      return DFA.dfa_complementation(determinized_nfa)
docs: Returns a DFA reading the complemented language read by
      input NFA.
  
      Complement a nondeterministic automaton is possible
      complementing the determinization of it.
      The construction is effective, but it involves an exponential
      blow-up, since determinization involves an unavoidable
      exponential blow-up (i.e., if NFA has n states,
      then the DFA has :math:`2^n` states).
  
      :param dict nfa: input NFA.
      :return: *(dict)* representing a completed DFA.