✖

Обобщен недетерминиран краен автомат

Обобщен недетерминиран краен автомат, съкратено ОНКА, е недетерминиран автомат, в чиито преходи може да има не само символи от азбуката, но и регулярен израз.

Определение

ОНКА ще ни трябва по време на алгоритъма за преобразуване на краен автомат в регулярен израз. ОНКА е следователно НКА, който има преходи, зададени с регулярни изрази. Пример за такъв ОНКА:

Виждаме, че например от състоянието q2 води преход към състоянието qf и е означен с регулярния израз a∗ b. Допълнителни изисквания към ОНКА:

  • Началното състояние q0 трябва да има преход към всички останали състояния. На фигурата виждаме, че от състоянието q0 водят преходи към всички останали състояния.
  • В ОНКА съществува само едно крайно състояние и всички останали състояния имат преход към това състояние. Както се вижда на фигурата, всички състояния имат стрелка, сочеща към qf.
  • Началното състояние не може да съвпада с крайното състояние. ОНКА следователно може да има най-малко две състояния.
  • Всички останали състояния, освен началното и крайното, трябва да имат преходи към всички останали състояния, освен началното и крайното. Включително примки (преход от състоянието qi към състоянието qi).

Преобразуване на обикновен НКА в ОНКА

Ако имаме някакъв НКА, преобразуването в ОНКА е просто.

  1. Създаваме ново начално състояние qs и създаваме ε-преход към първоначалното начално състояние.
  2. Създаваме ново крайно състояние qf и от всички първоначални крайни състояния водим ε-преходи към състоянието qf. От първоначалните крайни състояния правим обикновени състояния.
  3. Ако някъде има няколко прехода между едни и същи състояния (т.е. ако от състоянието q1 стигаме до състоянието q2 както през символа 0, така и през символа 1), тези правила сливаме в един регулярен израз и всички първоначални символи свързваме с оператора обединение (т.е. означаваме стрелката с регулярния израз 0|1).
  4. Ако в автомата липсва някакъв преход, който по определение би трябвало да е там, създаваме го и го означаваме с регулярния израз ∅. Така не променяме езика, който автоматът приема, защото такъв преход никога не се извършва.

Този автомат можем да използваме за преобразуване на автомат в регулярен израз.

Глави: Регулярни изрази, Преобразуване на регулярен израз в автомат, Обобщен недетерминиран краен автомат, Преобразуване на автомат в регулярен израз