Не вдається конвертувати з NFA в DFA


11

У мене є проста проблема створення DFA, який приймає всі введення, починаючи з подвійних літер (aa, bb) або закінчуючи подвійними літерами (aa, bb), заданими є набір алфавітів дана мова.Σ={а,б}

Я намагався вирішити це круговим способом:

  1. Утворення регулярного виразу
  2. Створення відповідного НФА
  3. Використання побудови живлення для виведення DFA
  4. Мінімізація кількості штатів у DFA

Крок 1: Регулярне вираження для даної проблеми є (серед незліченної кількості інших):

((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb))

Крок 2: NFA для заданого вираження:

NFA
(джерело: livefilestore.com )

У табличній формі NFA є:

State    Input:a     Input:b
->1        2,5         3,5
  2        4           -
  3        -           4
 (4)       4           4
  5        5,7         5,6
  6        -           8
  7        8           -
 (8)       -           -

Крок 3. Перетворіть у DFA за допомогою побудови живлення:

Symbol, State       +   Symbol, State (Input:a) +   Symbol, State (Input:b)
   ->A, {1}         |        B, {2,5}           |        C, {3,5}
     B, {2,5}       |        D, {4,5,7}         |        E, {5,6}
     C, {3,5}       |        F, {5,7}           |        G, {4,5,6}
   (D), {4,5,7}     |        H, {4,5,7,8}       |        G, {4,5,6}
     E, {5,6}       |        F, {5,7}           |        I, {5,6,8}
     F, {5,7}       |        J, {5,7,8}         |        E, {5,6}
   (G), {4,5,6}     |        D, {4,5,7}         |        K, {4,5,6,8}
   (H), {4,5,7,8}   |        H, {4,5,7,8}       |        G, {4,5,6}
   (I), {5,6,8}     |        F, {5,7}           |        I, {5,6,8}
   (J), {5,7,8}     |        J, {5,7,8}         |        E, {5,6}
   (K), {4,5,6,8}   +        D, {4,5,7}         +        K, {4,5,6,8}

Крок 4: Мінімізуйте DFA:

Я змінив спочатку K-> G, J-> F, I-> E. У наступній ітерації H-> D і E-> F. Таким чином, підсумковий стіл:

  State    +   Input:a     +   Input:b
   ->A     |      B        |      C
     B     |      D        |      E
     C     |      E        |      D
    (D)    |      D        |      D
    (E)    |      E        |      E

І діаграматично це виглядає так:

Підсумковий DFA
(джерело: livefilestore.com )

... що не є необхідним DFA! Я тричі перевірив свій результат. Отже, де я пішов не так?

Примітка:

  • -> = початковий стан
  • () = остаточний стан

3
Це прекрасний приклад для основного питання, яке було добре поставлене, адже ви включаєте весь свій порядок думок.
Рафаель

Чудово оцінюється, дякую! ^^
Анураг Калія

Відповіді:


5

Ви чудово переходите до кроку 3 (DFA), але мінімізація невірна.

Зрозуміло, що мінімізований DFA не є правильним, тому що і введення, baі ab(які не є мовою оригіналу, або вони не прийняті DFA на кроці 3) призводять до остаточного стану E.

Дивлячись на ваші кроки мінімізації, здається, що ви уніфікували кінцеві та не завершальні стани; наприклад J (остаточний) -> F (не остаточний) і I (остаточний) -> E (не остаточний). Об'єднання кінцевого стану з некінцевим станом змінює мову, прийняту автоматом, що призводить до прийняття неправильних рядків, як зазначено вище.


1
Ой. Отже, ось що створює тут проблеми. Тепер, коли я пам’ятаю, останній раз, коли я використовував цей метод, у таблиці взагалі не було якихось конкретних приймаючих станів!
Анураг Калія
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.