Может ли кто-нибудь намного ярче, чем я кратко описать SO-сообществу алгоритм преобразования NFA в DFA?(Желательно в 500 словах или меньше.) Я видел диаграммы и лекции, которые только запутали то, что я думал, что когда-то знал.Я в основном уверен в создании исходной таблицы переходов NFA из диаграммы состояний, но после этого я теряю DFA в эпсилонах и подмножествах.
1) В таблице переходов (дельта), столбец которой представляетновые ДФА заявляют?Это первый столбец сгенерированных состояний?
2) В строке {2,3}, столбец 0 моего примера ниже, что означает {2,3} о NFA с точки зрения его диаграммы состояний?(Извините, я должен подумать на рисунках.) И я предполагаю, что это будет "возврат по шлейфу на входе 0" в DFA?
3) Любые простые "практические правила" при переходе от таблицы кDFA или при распознавании состояний принятия результирующего DFA?
Конечно автономно
delta | 0 | 1 |
=======+=======+========+
{1} |{1} |{2} |
{2} |{3} |{2,3} |
{3} |{2} |{2,4} |
{2,3} |{2,3} |{2,3,4} |
{2,4} |{3,4} |{2,3,4} |
{2,3,4}|{2,3,4}|{2,3,4} |
{3,4} |{2,4} |{2,4} |
Редактировать: вот таблица выше в формате точка ,cheers Regexident.
digraph dfa {
rankdir = LR;
size = "8,5"
/* node [shape = doublecircle]; "1";*/
node [shape = circle];
"1" -> "1" [ label = "0" ];
"1" -> "2" [ label = "1" ];
"2" -> "3" [ label = "0" ];
"2" -> "2_3" [ label = "1" ];
"3" -> "2" [ label = "0" ];
"3" -> "2_4" [ label = "1" ];
"2_3" -> "2_3" [ label = "0" ];
"2_3" -> "2_3_4" [ label = "1" ];
"2_4" -> "2_3" [ label = "0" ];
"2_4" -> "2_3_4" [ label = "1" ];
"2_3_4" -> "2_3_4" [ label = "0" ];
"2_3_4" -> "2_3_4" [ label = "1" ];
"3_4" -> "2_4" [ label = "0" ];
"3_4" -> "2_4" [ label = "1" ];
}
А вот в представленной форме:
Примечание: В таблице отсутствует какая-либо информация относительно принятия государством,отсюда и график.