- •2.3. Арифметичні операції в різних системах числення.
- •3.8. Розв'язати системи рівнянь з регулярними коефіцієнтами.
- •Має два виводи
- •1.4. Скінченний автомат а заданий графом:
- •4.2. Приклад. Побудувати дса, еквівалентний до нса
- •Лекція 5. Скінченні автомати і регулярні мови. Лема про роздування.
- •6.3. Приклад. Побудувати мп-автомат, який розпізнає мову
- •(Д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (р, Ьа, Ьа) ь (р, а, а) ь (р, е, е); (д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (д, а, ьЬа) ь (р, а, ьЬа);
- •Зліва записуються всі стани, крім кінцевого ду, з множини станів
- •Проаналізуйте роботу мт на наступних вхідних словах:
- •3.7. Приклад. Побудуємо машину Тюрінґа, яка переводить натуральні числа з унарної системи числення в десяткову.
- •Лекція 4. Частково рекурсивні та примітивно рекурсивні функції
- •Приклад. Застосувати кожну з підстановок з попереднього прикладу до слова аЬЬасЬа максимальну можливу кількісить разів.
- •5.3. Приклад. Застосувати кожен з нам
- •8.7. Оцінити часову та ємнісну складність мт, заданої графом:
4.2. Приклад. Побудувати дса, еквівалентний до нса
А = ({р,д,^}, {0,1},5,р, {^,^}), де функція переходів 5 задана таблицею:
5 |
0 |
1 |
Р |
{Р,Я} |
{р} |
Я |
— |
{г} |
г |
— |
— |
Зобразимо граф даного НСА:
Виконуючи процедуру аналогічно як і в попередньому прикладі, одержимо наступну таблицю функції переходів еквівалентного ДСА:
5' |
0 |
1 |
Яе = {р} |
{р,я} |
{р} = ^е |
^о = {Р, Я} |
{р д} = ^о |
{р,г} |
Яоі = {р,г} |
{р д} = ^о |
{р} = ^е |
Таким чином, шуканий ДСА задається як п'ятірка
А' = ({{р}, {р, Я, }, {р, г}}, {0,1}, 5', {р}, {{р, д}, {д, г}}), а його граф має вигляд:
1
З вищесказаного випливає, що для кожного НСА існує ДСА, який розпізнає ту ж мову, що і НСА. Крім того, оскільки кожен ДСА є частковим випадком НСА, то ми довели наступну теорему:
теорема. Формальна мова розпізнається НСА тоді і лише тоді, коли вона розпізнається ДСА.
Теорема 4.3 дає нам простий метод побудови ДСА, який розпізнає мову Ь: спершу ми будуємо НСА для Ь, а потім перетворюємо його в еквівалентний ДСА. Розглянемо наступний приклад.
0,1
5 |
0 |
і |
р |
и,з} |
{«} |
Я |
{г} |
{д,г} |
г |
{з} |
{р} |
з |
— |
{р} |
Побудувати НСА, який розпізнає мову Ь(А).
Побудувати шуканий НСА А' по заданому НСА А важко, оскільки раніше розглянутий для ДСА метод заміни некінцевих станів автомата А на кінцеві стани А', а кінцевих станів А на некінцеві в даному випадку незастосовний. Дійсно, можливий випадок, коли для деякого слова ш, Яш П Р = 0 і Яш П (Я \ Р) = 0, а, отже, слово ш буде розпізнаватися обома автоматами А та А'. (Наприклад, в даному випадку ^оі = {р, Я, г} і Р = {^,5}, а тому слово 01 розпізнається як А так і А'.) Таким чином, А' не розпізнає мови Ь(А).
Замість цього, ми можемо застосувати конструкцію підмножин для побудови шуканого НСА. Спершу знаходимо ДСА Ар, еквівалентний А, а потім замінюємо кінцеві стани Ар на некінцеві стани і некінцеві стани Ар на кінцеві стани нового автомата А'. Зрозуміло, що А' є детермінованим скінченним автоматом.
На першому кроці ми отримуємо, що Ар = (Яв, {0,1},5в, {р}, Рв), де множина станів Яв і функція переходів 5в задані в таблицею:
|
0 |
1 |
^е = {р} |
и,з} |
М |
Яо = и,8} |
{г} |
{р,ч,г} |
Яі = м |
{г} |
{Ч,г} |
Яоо = {г} |
{з} |
{р} |
Я оі = {р,Я,г} |
{Ч,г,з} |
{р,д,г} |
Яіі = {Ч,г} |
{г, з} |
{р,Я,г} |
Яооо = {«} |
0 |
{р} |
^ою = и,г,з} |
{г, з} |
{р,ч,г} |
Яііо = {г, з} |
{з} |
{р} |
^оооо = 0 |
0 |
0 |
Множина Рв кінцевих станів має вигляд:
Рв = {А с {р,д,т,з} | А П{д,з} = 0} = {и}, ^^ 4, ^}, {^, з}, {Р, ^ ^}, {(Ь Г з}}.
Таким чином, ДСА
А' = (Яв, {0,1},5в, {р},Яв \ Рв) розпізнає мову Ь(А), де Яв \ Рв = {{р}, {г}, 0}.
В параграфі 3 для регулярного виразу було означено його помічений граф С(т), таким чином, що для кожного слова ш, ш Є Ь(г) тоді і лише тоді, коли існує шлях в С(т) з початкової вершини в кінцеву вершину, позначки якого утворюють слово ш. Кожна стрілка графу С(т) помічена однією буквою з множини {е} ЦІ X. Легко бачити, що С(т) є графом НСА, з початковою вершиною, яка позначає початковий стан і кіцевою вершиною, що позначає кінцевий стан. Таким чином, одержуємо твердження:
твердження. Кожна регулярна мова розпізнається деяким недетермінованим скінченним автоматом.
Розглянемо деякі приклади.
Приклад. Побудувати ДСА, який розпізнає регулярну мову, задану регулярним виразом 10 + (0 + 11)0* 1.
Спершу, побудуємо НСА, який розпізнає дану мову, використовуючи метод описаний в парагафі 3:
Далі, перетворимо даний НСА в ДСА, використовуючи конструкцію підмножин. Граф шуканого ДСА має вигляд:
0,1
0,1
>
4.7. Приклад. Побудувати НСА, який розпізнає всі слова непарної довжини в бінарному алфавіті X = {0,1}, які містять підслово 00.
Слово ш, що містить підслово 00 може бути записане як ш = а00в для деяких слів а, в Є {0,1}*. Дане слово ш має непарну довжину, в тому випадку, коли довжина а є парною і довжина в непарною, або, коли |а| є непарною, а |в| - парною. Таким чином, Ь запишеться наступним регулярним виразом:
((0+1)(0+1))* 00((0+1)(0+1))* (0+1)+(0+1)((0+1)(0+1))* 00((0+1)(0+1))*.
Використовуючи метод, описаний в парагафі 3, побудуємо граф шуканого НСА:
>
Вправи до лекції 4.
4.1. Для кожного регулярного виразу г побудувати ДСА, який розпізнає регулярну мову £(г):
а) (0+10)*(1+01)*;
б) (0+1)*0(0+ 1)(0+1)0(0+1); в) 0(0+1)*0+1(0+1)* 1.