logo

DFA (детерминистични крайни автомати)

  • DFA се отнася до детерминистични крайни автомати. Детерминистичното се отнася до уникалността на изчислението. Крайните автомати се наричат ​​детерминистични крайни автомати, ако машината чете входен низ символ по символ.
  • В DFA има само един път за конкретен вход от текущото състояние към следващото състояние.
  • DFA не приема нулевия ход, т.е. DFA не може да промени състоянието без въведен знак.
  • DFA може да съдържа множество крайни състояния. Използва се в лексикален анализ в компилатора.

В следващата диаграма можем да видим, че от състояние q0 за вход a има само един път, който отива до q1. По същия начин, от q0, има само един път за вход b, отиващ до q2.

Детерминирани крайни автомати

Официално определение на DFA

DFA е колекция от 5-кортежи, както описахме в дефиницията на FA.

 Q: finite set of states ∑: finite set of the input symbol q0: initial state F: final state δ: Transition function 

Преходната функция може да се дефинира като:

java listnode
 δ: Q x ∑→Q 

Графично представяне на DFA

DFA може да бъде представен чрез диграфи, наречени диаграма на състоянието. В който:

  1. Състоянието е представено от върхове.
  2. Дъгата, обозначена с въведен знак, показва преходите.
  3. Първоначалното състояние е отбелязано със стрелка.
  4. Крайното състояние е означено с двойно кръгче.

Пример 1:

 Q = {q0, q1, q2} ∑ = {0, 1} q0 = {q0} F = {q2} 

Решение:

Диаграма на прехода:

Детерминирани крайни автомати

Преходна таблица:

Настоящо състояние Следващо състояние за вход 0 Следващо състояние на вход 1
→q0 q0 q1
q1 q2 q1
*q2 q2 q2

Пример 2:

DFA с ∑ = {0, 1} приема всички, започващи с 0.

Решение:

Детерминирани крайни автомати

Обяснение:

  • В горната диаграма можем да видим, че при даден 0 като вход към DFA в състояние q0, DFA променя състоянието на q1 и винаги преминава към крайно състояние q1 при стартиране на вход 0. Може да приеме 00, 01, 000, 001... .и т.н. Той не може да приеме нито един низ, който започва с 1, защото никога няма да премине в крайно състояние на низ, започващ с 1.

Пример 3:

DFA с ∑ = {0, 1} приема всички, завършващи на 0.

Решение:

Детерминирани крайни автомати

Обяснение:

java свързан списък

В горната диаграма можем да видим, че при даден 0 като вход към DFA в състояние q0, DFA променя състоянието на q1. Може да приеме всеки низ, който завършва с 0 като 00, 10, 110, 100....и т.н. Той не може да приеме нито един низ, който завършва с 1, защото никога няма да премине в крайното състояние q1 при 1 вход, така че низът, завършващ с 1, няма да бъде приет или ще бъде отхвърлен.