private NFAToDFA dfa;
public IEnumerable<int[]> DFA2MFA()
{
var states = new List<int[]>();
//dfa结束状态集和非结束状态集
var allStates = Enumerable.Range(0, dfa.DFA.GetLength(0)).ToArray();
var acceptStates = dfa.FinalStates;
var nonAcceptStates = (from state in allStates
where !acceptStates.Contains(state)
select state).ToArray();
states.Add(nonAcceptStates);
states.Add(acceptStates);
var compared = new List<int[]>(states);
while (true)
{
foreach(var item in states)
{
if (item.Length < 2) continue;
for (var i = 0; i < Transitions.Length; ++i)
{
var groups = (from state in item
group state by states.FindIndex(array => array.Contains(dfa.DFA[state, i])) into g
select g).ToArray();
if (groups.Length < 2