It is well-known how one gets from an NFA for a regular language to a minimal DFA. However, the DFA might have an exponentially larger number of states.
What I need is a way to reduce an NFA, giving again an NFA but with a smaller number of states. T.i. I don't need the result to be deterministic, but I'd like it to be as small as possible while preserving the recognized language (perhaps not absolutely optimal, but the smaller, the better).
What are the best algorithms for this problem? Or perhaps not "the best" but at least "the easiest to implement with non-abysmal efficiency"? Or does the problem have a well-known name so that I could find good sources of information myself?