Научная статья на тему 'Ещё один метод минимизации конечных автоматов'

Ещё один метод минимизации конечных автоматов Текст научной статьи по специальности «Математика»

CC BY
1140
46
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
КОНЕЧНЫЙ АВТОМАТ / ДИАГРАММА СОСТОЯНИЙ / НЕРАЗЛИЧИМЫЕ СОСТОЯНИЯ / АЛГОРИТМ ДЖ. ХОПКРОФТА / FINITE AUTOMATON / STATE DIAGRAM / INDISTINGUISHABLE STATES / HOPKROFT'S ALGORITHM

Аннотация научной статьи по математике, автор научной работы — Мартыненко Борис Константинович

Описывается алгоритм минимизации приведённых детерминированных конечных автоматов, основанный на использовании классов эквивалентности по признаку неразличимости множеств цепочек, принимаемых в соответствующих состояниях. Проводится сравнение с алгоритмом Дж. Хопкрофта, в котором классы эквивалентных состояний строятся, исходя из отношения различимости состояний по допустимым входным цепочкам.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

One More Method for Minimization of Finite Automata

An algorithm for minimizing the number of states of the well-formed deterministic finite automaton is described. It is based on the use of equivalence classes on the relation of the indistinguishability of string sets accepted by the automaton. A comparison is made with the well-known algorithm of J.E. Hopcroft, which constructs the classes of equivalent states on the property of the distinguishability of input strings accepted in the corresponding states.

Текст научной работы на тему «Ещё один метод минимизации конечных автоматов»

Компьютерные инструменты в образовании, 2017 № 1: 5-14

УДК: 519.682.1 + 681.142.2 http://ipo.spb.ru/journal

ЕЩЕ ОДИН МЕТОД МИНИМИЗАЦИИ КОНЕЧНЫХ АВТОМАТОВ

Мартыненко Б.К.1 1 СПбГУ, Санкт-Петербург, Россия

Аннотация

Описывается алгоритм минимизации приведённых детерминированных конечных автоматов, основанный на использовании классов эквивалентности по признаку неразличимости множеств цепочек, принимаемых в соответствующих состояниях. Проводится сравнение с алгоритмом Дж. Хопкрофта, в котором классы эквивалентных состояний строятся, исходя из отношения различимости состояний по допустимым входным цепочкам.

Ключевые слова: конечный автомат, диаграмма состояний, неразличимые состояния, алгоритм Дж.Хопкрофта.

Цитирование: Мартыненко Б.К. Ещё один метод минимизации конечных автоматов // Компьютерные инструменты в образовании. 2017. № 1. С. 5-14.

Метод минимизации конечных автоматов, описываемый в данной статье, появился в процессе продолжения работ по совершенствованию этапа видонезависимого синтаксического анализа в проекте реализации алгоритмического языка Алгол 68 [1-3] в Ленинградском государственном университете в 1969-1975 годах.

Г.С. Цейтин, научный руководитель проекта, предложил модель синтаксического анализа, основанную на автоматных грамматиках и скобочных структурах. Отправной точкой при разработке метода послужила простая модель: регулярные выражения как средство описания языка и конечные автоматы в качестве адекватного средства его распознавания.

Конечные автоматы часто используют в качестве драйверов для преобразования регулярных языков [4], выполняемых во время сканирования входного текста. Логично было бы найти метод получения конечного автомата с минимальным числом состояний для языка, заданного регулярным выражением, не забывая, однако, что минимизация сужает семантический контекст вышеупомянутых преобразований.

Две теоремы из [5] дают ключ к решению проблемы минимизации конечных детерминированных автоматов.

Во-первых, Теорема 3.1 утверждает, что если отношение эквивалентности R, определённое через язык L я Z* следующим образом: (Vx, y е Z*): xRy о (Vz е Z*): (xz е L о yz е L) имеет конечный индекс1, то язык L принимается некоторым dfa2. Доказательство

1 Индекс отношения эквивалентности — это мощность множества классов эквивалентности.

2 Dererministic finite automata (детерминированный конечный автомат).

ВВЕДЕНИЕ

этой теоремы конструктивно: строится dfa M, в роли состояний которого используются классы эквивалентности отношения R.

Во-вторых, в Теореме 3.2 утверждается, что этот конечный автомат M является минимальным по числу состояний.

Идея состоит в том, чтобы перенести отношение эквивалентности R, определённое на цепочках в алфавите регулярного языка L, на аналогичное отношение эквивалентности К, определённое на состояниях автомата, а затем использовать классы эквивалентности К вместо состояний исходного автомата. Именно, два состояния p и q эквивалентны в отношении К, если множества цепочек во входном алфавите автомата, принимаемых в этих состояниях, одинаковы (см. опр. 5, разд. 1).

Итак, как следствие вышеупомянутых теорем, заключаем, что конечный автомат с минимальным числом состояний может быть получен в три этапа:

1) построение отношения эквивалентности К на множестве состояний данного автомата, исходя из неразличимости цепочек, принимаемых в соответствующих состояниях,

2) построение классов эквивалентности в отношении К,

3) использование классов эквивалентности отношения К взамен состояний данного автомата.

В Разделе 1 описывается алгоритм построения отношения К и классов эквивалентности в этом отношении. Он реконструирован из программы ТК SYNTAX, написанной в конце 70-х на языке Алгол 68, в частности, с целью тестирования первой версии компилятора.

В Разделе 2 описывается метод Хопкрофта, в котором классы эквивалентных состояний строятся, исходя из другого отношения =, основанного на различимости множеств цепочек, принимаемых в соответствующих состояниях.

В Разделе 3 оба метода сравниваются на примере регулярного языка, распознаваемого конечным автоматом, позаимствованным из [6, ch. 2, p. 45-46]. Этот язык определяется регулярным выражением. По нему строится конечный автомат. Он, как оказывается, не является минимальным по числу состояний. Однако оба метода минимизации этого автомата при использовании этих двух разных отношений дают один и тот же результат.

1. АЛЬТЕРНАТИВНЫЙ МЕТОД МИНИМИЗАЦИИ ЧИСЛА СОСТОЯНИЙ

Считая, что основные понятия теории формальных языков и автоматов известны, определим только необходимые.

Определение 1. Детерминированный конечный автомат (dfa) есть формальная система M = (Q, 1, 6, q0, F), где Q — конечное множество состояний, 1 — входной алфавит, 6 : Q ^ 1 х Q — функция переходов, q0 — начальное состояние, F я Q — множество конечных состояний.

Когда функция переходов всюду определена, говорят, что автомат полный.

Слово (цепочка) есть любая конечная последовательность символов a е 1.

Пусть 1* обозначает множество слов над алфавитом 1, а е — пустое слово.

Определим расширенную функцию переходов 6: Q ^ 1* х Q следующим образом:

6(q, е) = q, 6(q, xa) = 6(6(q, x), a).

Определение 2. Язык T(M), допускаемый (принимаемый, распознаваемый) конечным автоматомM, есть множество слов w е 1*, таких что 6(q0, w) е F.

Определение 3. Dfa M будем называть приведённым, если

(1) Vq е Q: Эх е Z* : ö(q0, x) = q, (2) Vp е F: 3y е Z* : ö(q0, y) = p.

Термин «приведённый» в применении к автомату аналогичен этому термину в применении к грамматикам Н. Хомского, в том смысле, что все нетерминальные и терминальные символы используются при порождении языка и только они. В применении к конечному автомату это означает, что всё множество цепочек, принимаемых автоматом, задействует все его состояния и входные символы и только их.

Однако это не значит, что не может существовать другая грамматика типа 3 с меньшим числом нетерминалов, порождающая тот же самый язык. Аналогично не исключено, что данный регулярный язык может приниматься другим автоматом с меньшим числом состояний.

Определение 4. Пусть M = (Q, Z, ö, q0, F) — приведённый dfa. Состояния p, q e Q будем называть подобными и писать p ~ q, если

((p е F л q е F) v (p i F л q i F)) л (D(p) = D(q)),

где D(p), D(q) — множества допустимых входных символов a е Z в состоянии p и q соответственно.

Определение 5. Пусть M = (Q, Z,ö, q0, F) — приведённый dfa, и T(M) = L. Определим отношение эквивалентности К на множестве состояний Q следующим образом:

pKq о (D(p) = D(q)) л (Va е D(p): ö(p, a) К ö(q, a)).

Далее даётся описание алгоритма построения отношения эквивалентности на множестве состояний конечного автомата (этап I) и классов эквивалентных состояний в этом отношении (этап II) в стиле программы на языке типа Алгол 68 с комментариями. Подразумевается, что в алгоритме используются операции над множествами, предста-вимыми статическими массивами из целых, пар целых, то есть элементов вида index = struct (int p, q) или элементов вида class = [ ] int, то есть одномерных массивов целых с разным числом элементов, но не больше, чем число состояний автомата. Над значениями вида index определена операция выборки поля (см. строчки 47-49 в описании Алгоритма 1).

Для пополнения таких множеств новыми элементами используются операции и соответствующего вида. При пополнении массивов новыми элементами с помощью присваивания предполагается, что значение правого операнда присваивается левому только в том случае, когда он не равен ни одному элементу массива, представляющего множество соответствующего вида (см. строчки 10, 21, 30, 53 в Алгоритме 1).

Формулы вида HS, где S обозначает множество (массив), дают число S элементов, значения которых определены.

В Алгоритме 1 используются следующие обозначения и представления:

1. Конечный автомат представляется матрицей переходов, строчки которой индексируются номерами состояний, а столбцы — входными символами a е Z.

2. Состояние автомата представляется его номером 1 ^ i ^ n, где n = HQ — число состояний, причём состояние 1 считается начальным.

3. Принимая во внимание рефлексивность и симметричность отношения эквивалентности К, оно ради экономии памяти представляется статическим массивом E[1 : ejhipo, элементами которого являются пары номеров состояний (p, q), где

p < q, называемые гипотезами. Гипотеза представляется как значение вида hipo. Число элементов в массиве E оценивается по формуле e = (n(n + 1)) - 2.

4. Понятие подобности состояний переносится также на гипотезы h = (p, q) с помощью формулы ~ h, которая реализует проверку подобности состояний, составляющих гипотезу h.

5. H[1: HZ] — массив гипотез, относящихся к парам подобных состояний.

6. k — индекс текущей (опорной) гипотезы в массиве H. Оператор H[к + := 1] := h пополняет множество гипотез в том случае, когда h ещё не находится в массиве H.

7. CLASS[1: n]int — элементы текущего класса состояний.

8. CLASS INDEX[1: n] class — индекс классов. Элемент этого массива есть множество состояний исходного автомата, составляющих один класс эквивалентности.

9. B[1: n]int — множество базовых элементов класса.

10. A[1: n]int — множество состояний, включённых во все классы эквивалентности.

Алгоритм 1. Построение классов эквивалентности в отношении К. Вход: Приведённый dfa M = (Q, Z,6, q0,F).

Выход: CLASS INDEX — множество классов эквивалентности в отношении К.

Метод:

1. begin

{ЭТАП I: построение отношения эквивалентности на множестве состояний}

2. m := 0; { Множество пар эквивалентных состояний (p, q), где p < q }

3. for i to n-1 {1 < i < n, где n = HQ }

4. do { i }

5. for j from i + 1 to n {j < i + 1 < n}

6. do { j } h := (i, j); { Очередная пара состояний: i < j }

7. к := 0; {Число элементов в массиве H }

8. if (h <t E) л (и h) {Состояния i и j подобны}

9. then { Гипотезы h в E нет. Инициализация массива гипотез: }

10. H[к + := 1] := h; {В Hтеперь только одна гипотеза}

11. Continue := true;

12. { Цикл проверки гипотез }

13. for I while (I < к) л Continue

14. do h := H[I] { Перебор гипотез}

15. for V e D(h) { Цикл пополнения гипотез }

16.

17.

18. 20. 21. 22.

23.

24.

25.

26.

27.

28.

do h' := (6( p of h, a), 6(q of h, a));

if ~ h' { Гипотеза касается состояний }

then { c одинаковыми областями действия } if h't H [1: k]

then H[k + := 1] := h' { H пополняется h' } fi

fi

od { Конец цикла пополнения гипотез} od; { Конец цикла проверки гипотез } йг I ^ k 11<)

h := H[I] ;

29.

30.

31.

32.

if h t E [1 : m ]

then E[m+ := 1] := h

fi

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

od;

33. { Текущий этап пополнения массива E проверенными гипотезами закончен }

35.

36. od {;'}

37. od {i};

{ ЭТАП II: построение классов эквивалентности состояний }

39. if m > 0 { E Ф 0 }

40. then

41. A := 0; { Множество задействованных состояний в классах эквивалентности }

42. B := {1}; { Инициализация начального класса }

43. i := 0; { Инициализация индекса классов }

44. next: { Цикл построения очередного класса }

45. for Vh :(h е E)

46. do

47. if (p of h) е B

48. then B := B и (q of h)

49. elif q of h е B then B : = B и (p of h)

50. fi

51. od;

52. CLASS := B; { Очередной класс }

53. CLASS INDEX[i + := 1] := CLASS; { Фиксация класса в индексе классов }

54. A := A и B; { Фиксация состояний, включённых в классы эквивалентности }

55. if ft A < HQ

56. then { Не все состояния распределены по классам }

57. Continue = true;

58. for Vb :(b е Q) while Continue

59. do { Цикл нахождения базового элемента следующего класса }

60. if b i A

61. then B := b; Continue := false

62. fi

63. od;

64. goto next { Возврат на построение следующего класса }

Аналог отношения эквивалентности К представлен массивом E. Если при окончании этапа I оказывается, что m = 0, то исходный автомат уже минимальный: каждый класс эквивалентности содержит по одному состоянию исходного автомата. В противном случае массив CLASS INDEX представляет классы состояний в отношении эквивалентности К. Подставляя эти классы вместо состояний исходного автомата, мы получаем минимальный автомат, принимающий тот же самый язык.

34.

Continue := false

65. fi

66. fi 67. end

2. МЕТОД ХОПКРОФТА ПОСТРОЕНИЯ КАНОНИЧЕСКОГО КОНЕВОГО АВТОМАТА

Напомним несколько определений и фактов из [7], необходимых для сравнения метода Дж. Хопкрофта и метода, предлагаемого в данной статье, применительно к минимизации детерминированных конечных автоматов.

Определение 6. Пусть М = (Я, 1,6, д0, Р) — конечный автомат, д2 е (?, и д 1 Ф д2. Считается, что х е 1* различает ^ и д2, если (д1;х) Н* (д3,е),(д2,х) Н* (д4,е) и только одно из д3 и д4 принадлежит Г.

Говорят, что д1 и д2 ^неразличимы, и пишут д2 =к д2, если и только если не существует никакого х е 1*, такого что | х |< к, который бы различал д1 и д2.

Говорят, что состояния д1 и д2 неразличимы по Хопкрофту, и пишут д1 = д2, если и только если они ^неразличимы для всех к > 0.

Определение 7. Конечный автомат М будем считать приведённым по Хопкрофту, если все состояния достижимы по п. (1) определения 3 и никакие два состояния д1 Ф д2 не различаются по Хопкрофту.

Поскольку отношение неразличимости состояний по Хопкрофту = равнозначно отношению эквивалентности К по определению 5, то приведённость конечного автомата по Хопкрофту равнозначна тому, что он минимален по числу состояний.

Алгоритм Хопкрофта [7] (см. Алгоритм 2.2 ниже) построения такого автомата с минимальным числом состояний опирается на следующую лемму:

Лемма 2.11. Пусть М = (Я, 1,6, д0, Р) — конечный автомат с п состояниями. Состояния д1 и д2 неразличимы тогда и только тогда, когда они (п-2)-неразличимы.

При её доказательстве отмечается, что д1 =к д2 при двух следующих условиях:

(1) д1 =0 д2 тогда и только тогда, когда д1 и д2 оба либо принадлежат, либо не принадлежат Г,

и

(2) д1 =к д2 тогда и только тогда, когда д1 =к-1 д2 и 6(дь а) =к-1 6(д2, а) для всех а е 1, из чего следует, что = з =п-2 = з =п-3 ... з =2 з = з =0.

Очевидно, что приведённость конечного автомата по Хопкрофту равнозначна тому, что он минимален по числу состояний.

Алгоритм 2.2. (Хопкрофт). Построение канонического конечного автомата.

Вход: Конечный автомат М = (Я, 1,6, д0,Р).

Выход: М' — приведённый по Хопкрофту (см. опр. 7) конечный автомат, эквивалентный автомату М.

Метод:

Шаг 1: Исключить из автомата М все состояния, не достижимые из д0.

Шаг 2: Строить отношения эквивалентности =0, =1, ..., как описано в лемме 2.11, до тех пор, пока не совпадут =к+1 = =к при некотором k. Взять в качестве = отношение =к.

Шаг 3: Построить конечный автомат М' = (Я1,6', д0,Р'), где

3.1 Я' — множество классов эквивалентности отношения =, где [р] — класс эквивалентности отношения =, содержащий состояние р;

3.2 6'([р], а) = [д], если 6(р, а) = д;

3.3 д0 = М;

3.4 Р' = {[д]|д е Р}. □

Можно непосредственно доказать, что шаг 3.2 непротиворечив, то есть какой элемент класса [р] ни взять, значение 6'([р], а) будет одним и тем же классом.

Доказательство равенства L(M) = L(M') просто. Его можно найти во многих учебниках3. Остаётся убедиться в том, что автомат с меньшим числом состояний, чем у Mне может допускать L(M). Теорема 2.6 из [7] даёт убедительный ответ на справедливость этого утверждения.

Теорема 2.6. Автомат M', который строится алгоритмом 2.2, имеет наименьшее число состояний среди всех конечных автоматов, допускающих язык L(M).

Доказательство

Предположим, что M" имеет меньше состояний, чем M', и что L(M") = L(M). В силу шага 1 алгоритма 2.2 каждое состояние M' достижимо. Так как M" имеет меньше состояний, чем M', то найдутся цепочки w и x, переводящие состояние q'0 в разные состояния, а q' (начальное состояние автомата M") в одно и то же:

(qо, w) h*M„ (q, е) и (q'J, x) Ь*м„ (q, е).

Следовательно, w и x переводят автомат M в различные состояния, скажем, p и r. Это значит, что существует цепочка y, такая что только одна из цепочек wy и xy принадлежит L(M). Но wy и xy должны переводить M" в одно и то же состояние s, для которого (q,y) Ь* (s,е). Таким образом, точно одна из цепочек wy и xy не может принадлежать L(M"), а это противоречит предположению о том, что L(M") = L(M). □

3. ПРИМЕР: СРАВНЕНИЕ С МЕТОДОМ ХОПКРОФТА

С целью сравнения Алгоритма 1 (см. раздел 1) с Алгоритмом 2.2 Хопкрофта [7], выполним его на примере языка, распознаваемого автоматом A0, позаимствованного из [6, ch. 2, p. 45-46] (см. рис. 1 ниже).

Автомат A0 читает цепочки символов 0 и l и распознаёт их как двоичные числа, конгруэнтные 2 (по модулю 3). Обозначение вида v3(x) представляет бинарную цепочку x как целое неотрицательное значение по модулю 3.

Например, v3(100) = 1 и v3(1011) = 2.

Рассмотрим произвольную входную цепочку w = a1... an на входе A0, где каждый at (1 < i < n) есть или 0 или 1. Ясно, что для каждого i цепочка a1... at попадает в один из этих трёх случаев:

(0) V3(a\... at) = 0,

(1) V3(ax... щ) = 1,

(2) V3(ax... щ) = 2.

Никакие другие случаи невозможны. Так что A0 нуждается только в трёх состояниях, которые соответствуют вышеупомянутым трём случаям. Обозначим эти три состояния p0, p1 и p2 соответственно. Состояние p0, соответствующее случаю (0), является стартовым, состояние p1 соответствует случаю (1), состояние p2, соответствующее случаю (2), является конечным. Правила, которые управляют изменениями состояний, должны быть определены соответственно.

Заметим, что v3(a1... щ+i) = 2 х v3(a\... ai) + ai+i (mod 3). Так, если текущее состояние есть p1 и текущий входной символ есть 1, то следующее состояние есть p0, поскольку 2 * 1 + 1 = 0 (mod 3). Ясно, что каждый шаг изменения состояния единственным образом определён текущим состоянием и текущим входным символом. Мы выделяем состояние

3 См., например, [5].

р2 как конечное состояние и определяем, что А0 принимает вход и>, если он находится в состоянии р2 после чтения последнего символа и>. Очевидно, что dfa А0 является минимальным по числу состояний. Он представлен на рис. 1.

Рис. 1. Минимальный dfa A0

Теперь мы проделаем следующий эксперимент в три этапа. 1. Построим регулярное выражение для языка, распознаваемого dfa A0:

(0 | 11)* 1 0 (1 | 0 (1 0* 1)* 0)*

(1)

2. По этому регулярному выражению построим dfa А1 (см. табл. 1), который имеет большее число состояний, чем dfa А2 (см. табл. 2).

3. Используя вышеописанный алгоритм 1 (этап 1) получения отношения К на состояниях А1, построим dfa А2, заменяя состояния А1 на классы эквивалентности этого отношения. Получаем dfa А2, который, как видим, равен автомату dfa А0.

Таблица 1. Матрица переходов dfa A1

Состояние 0 1

1 2 3

2 2 3

3 4 5

4 - конечное 6 7

5 2 3

6 8 9

7 - конечное 6 7

8 - конечное 6 7

9 10 11

10 10 11

11 8 9

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Таблица 2. Матрица переходов dfa A2 = A0

Класс эквив. состояний 0 1

[1] = {1, 2, 5, 9,10 } [1] [2]

[2] = {3, 6,11} [3] [1]

[3] = {4, 7, 8} - конечное [2] [3]

Начальное состояние автомата A1 имеет номер 1.

Обратимся к Алгоритму 2.2 из [7] и продемонстрируем его выполнение на автомате А1, построенном из регулярного выражения (1) (см. табл. 1).

Сначала вычислим отношение =, строя последовательность приближений =к , начиная с к = 0. Следуя Алгоритму 2.2, разобъём всё множество состояний данного автомата на два подмножества в соответствии с Леммой 2.11: {4, 7, 8} и {1, 2, 3, 5, 6, 9,10,11}. В первое включены все конечные состояния, во второе — все остальные. Они представляют начальное приближение классов эквивалентности отношения =. Ход разбиения множества состояний автомата А1 на подмножества приближений к классам эквивалентности в отношении = представлен в табл. 3.

Таблица 3

Степень уточнения Уточнённые классы неразлчимых состояний

= 0 {4, 7, 8}, {1, 2, 3, 5, 6, 9,10,11}

= i {4, 7, 8}, {1, 2, 3, 5, 9,10}, {3, 6,11}

= 2 {4, 7, 8}, {1, 2, 3, 5, 9,10}, {3, 6,11}

Итак, =1==2==, и процесс нахождения классов эквивалентности в отношении = автомата Л1 закончен. Заметим, что множество классов эквивалентных состояний автомата A1, полученное в отношении = при помощи Алгоритма 2.2, равно такому же множеству в отношении К = {(1, 5), (1, 9), (1,10), (2, 5), (2, 9), (2,10), (3, 6), (3,11), (4, 7), (5,10), (6,11), (7, 8), (9,10)}, полученному посредством Алгоритма 1.

Замена состояний в матрице переходов автомата Л1 (табл. 1) на классы эквивалентности отношения = или К даёт матрицу переходов автомата Л2 (табл. 2), равную матрице переходов автомата Л0 с минимальным числом состояний априори.

4. ЗАКЛЮЧЕНИЕ

Алгоритм 1 и Алгоритм 2.2 Дж. Хопкрофта [7] базируются на использовании классов эквивалентности по признаку неразличимости множеств цепочек, принимаемых в соответствующих состояниях соответственно.

Первый из этих алгоритмов непосредственно строит отношение как множество пар неразличимых состояний по движениям автомата, а классы эквивалентности получаются в результате транзитивного замыкания этого отношения.

Второй алгоритм, начиная с грубого разделения состояний на два подмножества, первое из которых включает все конечные состояния, а второе — все остальные состояния, и затем уточняет это разбиение путём перераспределения состояний по признаку различения соответствующих переходных состояний.

Иначе говоря, эти алгоритмы основываются на двойственных методах и могут иметь разные предпочтения при их реализации. Например, в случае, когда автомат минимальный или близкий к минимальному, то есть основание полагать, что Алгоритм 1 даст ответ быстрее Алгоритма 2.2, поскольку он получит результат уже по признаку подобия (~), который аналогичен признаку различия степени 0 (=0). Реализация этих двух алгоритмов имеет схожую оценку сложности порядка kn log n, где k — некоторая константа, линейно зависимая от размера входного алфавита, а n — число состояний конечного автомата [8].

Список литературы

1. Пересмотренное сообщение об Алголе 68. / Ред. А. Ван Вейнгаарден. М.: Мир, 1979.

2. Алгол 68. Методы реализации / Ред. Г.С. Цейтин. Л.: Изд-во Ленингр. ун-та, 1976.

3. Мартыненко Б.К. Синтаксически управляемая обработка данных. СПб.: Изд-во СПб ун-та, 2004.

4. Мартыненко Б.К. Челночные трансляции в SYNTAX-технологии // Компьютерные инструменты в образовании. 2014. № 5. С. 3-15.

5. Hopcroft J.E., Ullman J.D. Formal languages and their relation to automata. Reading, MA: Addison-Wesley Pub. Co., Inc., 1969.

6. Rozenberg G., SalomaaA. Handbook of Formal Languages. Vol. 1: Word, Language, Grammar. Berlin, Heidelberg: Springer-Verlag, 1997.

7. Ахо АУльман Дж. Теория синтаксического анализа, перевода и компиляции. Т. 1. М.: Мир, 1978.

8. Hopcroft J.E. An n log n algorithm for minimizing ststes in a finite automaton. Technical Report CS-71-190, Stanford University, January 1971.

Поступила в редакцию 10.01.2017, окончательный вариант — 12.02.2017.

Computer tools in education, 2017 № 1: 5-14

http://ipo.spb.ru/journal

ONE MORE METHOD FOR MINIMIZATION OF FINITE AUTOMATA

Martynenko B.K.1 1SPBSU, Saint-Petersburg, Russia

Abstract

An algorithm for minimizing the number of states of the well-formed deterministic finite automaton is described. It is based on the use of equivalence classes on the relation of the indistinguishability of string sets accepted by the automaton. A comparison is made with the well-known algorithm of J.E. Hopcroft, which constructs the classes of equivalent states on the property of the distinguishability of input strings accepted in the corresponding states.

Keywords: finite automaton, state diagram, indistinguishable states, Hopkroft's algorithm.

Citation: Martynenko, B., 2017. "Eshche odin metod minimizatsii konechnykh avtomatov" ["One more method for minimization of finite automata"], Computer tools in education, no. 1, pp. 5-14.

Received 10.01.2017, the final version — 12.02.2017.

Boris K. Martynenko, Professor of Computer Sciences at Math.-Math. department of SPbSU, Universitetsky prospekt, 28,198504, Saint Petersburg, Russia [email protected]

Мартыненко Борис Константинович, доктор физико-математических наук, профессор кафедры информатики математико-механического факультета СПбГУ; 198504, Россия, Санкт-Петербург, Старый Петергоф, Университетский пр., д. 28, математико-механический факультет, кафедра информатики, [email protected]

© Наши авторы, 2017. Our authors, 2017.

i Надоели баннеры? Вы всегда можете отключить рекламу.