Генетический алгоритм для задачи вершинной минимизации недетерминированных конечных автоматов

На рисунке используются следующие обозначения концептов (узлов):

- концепты (узлы) карты социально-экономического развития Смоленской области: а - объем регионального промышленного производства; а2 -объем ВРП; а3 - поступление в бюджет; а4 - уровень занятости; а5 - уровень доходов населения; а6

- затраты на образование; а7 - уровень конкурентоспособности регионального продукта; а8 - показатели состояния окружающей среды; а9 - уровень инновационной активности; а10 - объем инвестиций; ап - рентабельность продукции/услуг; а12 -уровень налогов;

- концепты карты инновационной деятельности в РПК Смоленской области: Ь - объем выпуска наукоемкой продукции предприятиями РПК; Ь2

- объем инвестиций в инновации; Ь3 - доля инновационной продукции в общем объеме производства; Ь4 - инновационный потенциал РПК; Ь5 -степень реализации инновационного потенциала РПК; Ь6 - уровень конкурентоспособности инноваций РПК; Ь7 - занятость на предприятиях, которые осуществляют НИОКР и НИР; Ь8 - уровень подготовки инновационных кадров; Ь9 - меры бюджетного стимулирования инноваций; Ь10 -объем заимствованных инноваций.

Связи между концептами в приведенной на рисунке двухуровневой когнитивной модели управления инновационными процессами в РПК Смоленской области представлены в виде термов нечетких множеств: д, в, п - стационарные связи между концептами соответствующих карт; а, 1 -изменяющиеся связи между концептами соответствующих карт.

Анализ приведенной на рисунке когнитивной модели включает в первую очередь описание связей между концептами карт с помощью выражений (9) и (10). Это позволит определить степень комплексного влияния управляемых концептов на целевые концепты, а также на другие системные показатели, характеризующие влияние концепта на систему и влияние системы на концепт.

Очевидно, что целевые концепты рассматриваемой когнитивной модели должны коррелировать с показателями эффективности инновационной стратегии развития соответствующего региона. В этом случае основной задачей анализа когнитивной модели управления инновационными процессами в РПК субъекта РФ становится определение управляемых концептов, влияющих на целевые концепты, и подбор такого их значения, которое обеспечит наибольшую величину соответствующего целевого концепта. Это позволит разработать набор мероприятий с необходимой силой воздействия на целевые показатели инновационного развития региона и, соответственно, на показатели эффективности инновационной стратегии развития региона, а также рационально распределить бюджет между планируемыми мероприятиями.

Таким образом, использование изменяющихся связей между концептами когнитивной карты позволит расширить область применения аппарата когнитивного моделирования на системы управления инновационной деятельностью и повысить обоснованность положений инновационных стратегий и программ развития региона.

Литература

1. Круглов В.В., Дли М.И., Голунов Р.Ю. Нечеткая логика и искусственные нейронные сети. М.: Физматлит, 2001. 221 с.

2. Круглов В.В., Дли М.И. Интеллектуальные информационные системы: компьютерная поддержка систем нечеткой логики и нечеткого вывода. М.: Физматлит, 2002. 256 с.

3. Силов В.Б. Принятие стратегических решений в нечеткой обстановке. М.: ИНПРО-РЕС, 1995. 228 c.

References

1. Krnglov V.V., Dli M.I., Golunov R.Yu., Fuzzy logic and artiflcial neural networks, Moscow, Fizmatlit, 2001, 221 p.

2. Krnglov V.V., Dli M.I., Intelligent information systems: computer support systems of fuzzy logic and fuzzy inference, Moscow, Fizmatlit, 2002, 256 p.

3. Silow V.B., Strategic decision-making in a fuzzy environment, Moscow, INPRO-RES, 1995, 228 p.

УДК 519.713, 004.023

ГЕНЕТИЧЕСКИЙ АЛГОРИТМ ДЛЯ ЗАДАЧИ ВЕРШИННОЙ МИНИМИЗАЦИИ НЕДЕТЕРМИНИРОВАННЫХ КОНЕЧНЫХ АВТОМАТОВ

А.В. Цыганов, к.ф-м.н., доцент

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

можно применить даже для сравнительно небольших автоматов. В статье рассматривается новый эвристический алгоритм для задачи вершинной минимизации недетерминированных конечных автоматов, основанный на сочетании классического алгоритма Камеды-Вейнера и генетического алгоритма. Основной особенностью предлагаемого метода является замена наиболее трудоемкой переборной части алгоритма, а именно поиска легитимных покрытий матрицы RAM (Reduced Automaton Matrix), на более быстрый, но неполный перебор покрытий с помощью генетического алгоритма. Приводятся описание реализации предлагаемого метода с использованием технологий параллельного программирования и результаты численных экспериментов.

Ключевые слова: недетерминированные автоматы, вершинная минимизация, алгоритм Камеды-Вейнера, генетический алгоритм, параллельные вычисления, OpenMP, MPI.

GENETIC ALGORITHM FOR NFA STATE MINIMIZATION PROBLEM

Tsyganov A V., Ph.D., Associate Professor (UlyanovskState Pedagogical University, 4, 100-letiya so dnya rozhdeniya V.I. Lenina Sq., Ulyanovsk, 432 700, Russia,

andrew. tsyganov@gmail. com) Аbstract. The state minimization problem for nondeterministic finite automata is a well-known computationally hard combinatorial optimization problem. A lot of exact and approximate methods were proposed for it. All known exact algorithms for this problem are exhaustive and often become impractical even for relatively small automata. In the present paper we discuss a new heuristic algorithm for NFA state minimization problem which is based on the classical Kameda-Weiner algorithm and genetic algorithm. The main idea of the proposed method is to replace the exhaustive search for legitimate covers of the RAM (Reduced Automaton Matrix) with the fast but incomplete search for covers by the means of genetic algorithm. The implementation of the proposed method with the usage of parallel computing techniques is described and the results of computational experiments are provided.

Keywords: nondeterministic finite automata, state minimization, Kameda-Weiner algorithm, genetic algorithm, parallel computing, OpenMP, MPI.

Конечные автоматы (КА) находят самое широкое применение в различных областях науки и техники. Приведем основные определения из теории КА (подробнее см. в [1]).

Пусть Е - алфавит, а ^=а.\а2..,ап, где V/: а,еЕ -слово. Множество слов Ь£Е называется языком.

Недетерминированным конечным автоматом (НКА) называется пятерка А=^, Е, Д, I, Р), где Q

- конечное множество состояний; Е - конечный алфавит; Д£QxЕxQ - множество переходов; I £Q и FQQ - множества начальных и конечных состояний соответственно. Переходы автомата А часто описывают с помощью функции переходов

НКА называется детерминированным (ДКА) тогда и только тогда, когда |1|=1 и VqeQ, VaeЕ:|S(q, а)|=1 (или 15(д, а)|<1).

КА часто используются для описания или распознавания языков. Два автомата называются эквивалентными, если они задают один и тот же язык. Для каждого НКА с помощью процедуры детерминизации может быть построен эквивалентный ему ДКА (каждое состояние такого ДКА

- это подмножество состояний исходного НКА).

Для слова ^=а1а2...а„ слово ^ = апап-1 ...а1 называется зеркальным, а для языка Ь зеркальным будет язык Ь = | w е Ь]. Наконец, для автомата А=^, Е, Д, I, Р) зеркальным автоматом будем называть автомат А = Е, А, ^, I), для которого (д, а, д.) еД тогда и только тогда, когда а, qI)eД.

Для данного языка Ь каноническим автоматом называется ДКА, распознающий этот язык и имеющий минимально возможное число состояний, а зеркальным каноническим автоматом назы-

вается ДКА, распознающий язык L и имеющий минимально возможное число состояний (данные автоматы единственны для языка L с точностью до изоморфизма).

Задача вершинной минимизации НКА формулируется следующим образом: для данного НКА A найти автомат, эквивалентный данному и имеющий минимально возможное число состояний. Заметим, что решение этой задачи может быть не единственным. Как показано в [2], задача вершинной минимизации НКА является PSPACE-полной, в то время как аналогичная задача для ДКА имеет сложность в худшем случае O( | Q |-|е| -log | Q |).

Следует отметить, что все известные точные методы минимизации НКА являются переборными, поэтому часто на практике их невозможно применить даже для сравнительно небольших автоматов. Это одна из причин того, что они не реализованы в таких известных пакетах для работы с НКА и родственными структурами, как AMoRE, FSM, Grail, Vaucanson, JFlap и др. [3-7]. Более того, в большинстве таких пакетов отсутствуют даже приближенные методы минимизации НКА.

В данной работе предлагается новый эвристический алгоритм минимизации НКА, основанный на сочетании классического алгоритма Камеды-Вейнера [8] и генетического алгоритма (ГА). Основная идея предлагаемого метода состоит в том, что наиболее трудоемкая переборная часть алгоритма заменяется неполным поиском с использованием ГА, что позволяет существенно сократить время вычислений.

Алгоритм Камеды-Вейнера

Приведем краткое описание алгоритма. Пусть дан НКА A. Поиск минимальных автоматов, экви-

валентных A, осуществляется с помощью бинарной матрицы RAM (Reduced Automaton Matrix), которая строится следующим образом. Сначала для автомата A строятся канонический автомат B и зеркальный канонический автомат C. Каждое состояние этих автоматов является подмножеством состояний автомата A. Затем для всех непустых состоянийpi автомата B 0=1, ..., m) и q автомата C (/=1, ..., n) определяется элемент r^ матрицы RAM:

= |0, p оqj = 0,

Г = [1, Р о qj Ф0.

Пусть X - подмножество строк, а Y - подмножество столбцов матрицы RAM. Тогда декартово

произведение XxY называется гридом (блоком), если оно удовлетворяет следующим двум условиям: 1) на пересечениях всех его строк и столбцов располагаются единицы; 2) множества X и Y нельзя расширить без нарушения первого условия.

Множество гридов покрывает матрицу RAM, если каждая единица в ней принадлежит по крайней мере одному из гридов данного множества. Минимальным покрытием матрицы RAM называется покрытие, содержащее наименьшее возможное количество гридов.

Рассмотрим НКА A с таблицей переходов, приведенной в таблице 1 [8].

Таблица 1

a b

^ 1 {1, 3} {2}

^ 2 {1} {2, 3}

^ 3 {1} {3}

В таблицах 2 и 3 для автомата A приведены матрицы переходов канонического автомата B и зеркального канонического автомата C соответственно, а в таблице 4 - матрица RAM автомата A.

Таблица 2

a b

^ bi={2, 3} b2 bi

^ b2={1} Ьз bi

^ Вз={1, 3} Ьз bi

Таблица 3

a b

^ ci={1} C2 C4

^ c2={1, 2, 3} C2 C2

^ сз={2, 3} Cl C2

c4=0 C4 C4

Таблица 4

{1} {1, 2, 3} {2, 3}

{2, 3} 0 1 1

{1} 1 1 0

{1, 3} 1 1 1

В матрице RAM четыре грида: {1, 3}*{2, 3}; {2, 3}х{1, 2}; {3}х{1, 2, 3}; {1, 2, 3}х{2}. Легко

убедиться, что первые два грида образуют минимальное покрытие матрицы RAM.

По данному покрытию матрицы RAM с помощью так называемого правила пересечений можно построить НКА, который может оказаться эквивалентным исходному НКА A (в этом случае покрытие называется легитимным). Число состояний в построенном НКА совпадает с числом гридов в покрытии. В рассматриваемом примере минимальное покрытие является легитимным, и в результате получается минимальный автомат с двумя состояниями (табл. 5).

Таблица 5

a b

^ pi p2} {p2}

^ P2 {pi} W

Общая схема алгоритма Камеды-Вейнера может быть описана алгоритмом 1. Заметим, что шаги 1, 3 и 4 алгоритма теоретически имеют экспоненциальную сложность, однако на практике построение канонических автоматов обычно выполняется достаточно быстро и самыми трудоемкими являются шаги 3 и 4 (поиск гридов и минимальных легитимных покрытий).

Алгоритм 1.

Вход: НКА A

1. Построить канонические автоматы В и C

2. Построить матрицу RAM

3. Найти все гриды RAM

4. Найти минимальные легитимные покрытия RAM и построить минимальные НКА с помощью правила пересечений

Выход: Минимальные НКА, эквивалентные A

Генетический алгоритм

Популярной разновидностью эволюционных алгоритмов оптимизации, основанных на имитации процессов естественного отбора, происходящих в живой природе, является ГА. Эволюционные алгоритмы относятся к так называемым популяционным, поскольку они работают не с одним решением, а с их группой (популяцией). Такие решения в эволюционных алгоритмах часто называются особями, хромосомами и т.п. Общая схема ГА может быть описана алгоритмом 2.

Алгоритм 2.

Population := InitialPopulation() for all aiEPopulation do

EvaluateFitness(a,) end for

while not StopCondition() do Parents := Select(Population) Offspring := Crossover(Parents) Offspring := Mutation(Ofspring) for all в ^Offspring do EvaluateFitness(S,) end for

Population:=UpdatePopulation

1. 2.

3

4

5

6

7

8

9

10 11 12

13. end while

14. Solution := ChooseBestOf(Population) Выход: Solution

На первом шаге работы алгоритма формируется начальная популяция (строка 1) и для каждой ее особи вычисляется значение функции приспособленности (строки 2-4). Функция приспособленности - это функция, позволяющая сравнивать между собой качество получаемых решений. Основная идея эволюционных алгоритмов состоит в том, что в процессе эволюции выживают решения с лучшими значениями функции приспособленности. На каждом шаге искусственной эволюции популяция решений изменяется следующим образом: сначала из популяции по некоторому алгоритму отбираются несколько особей-родителей (строка 6), затем эти особи скрещиваются между собой, давая потомство (строка 7), после чего полученное потомство подвергается мутации (строка 8) и для него вычисляются значения функции приспособленности (строки 9-11). Затем на основе старой популяции и полученных потомков формируется новая популяция (происходит естественный отбор). Процесс продолжается до наступления критерия остановки (в самом простом случае таким критерием является число итераций алгоритма). В качестве ответа обычно выдается особь с наилучшим значением функции приспособленности (или вся популяция, или ее часть).

Очень часто решения в ГА кодируются двоичными векторами. В этом случае операция скрещивания (кроссовера) двух особей обычно выполняется так: сначала случайным образом определяется место скрещивания, то есть индекс в векторе, а затем особи обмениваются значениями координат (битов), начиная с данного индекса (значения координат до этого индекса остаются неизменными). В результате две особи-родителя дают двух потомков. Такой тип скрещивания называется одноточечным кроссовером. Существуют и другие варианты скрещивания. Операция мутации для двоичных векторов обычно заключается в случайном инвертировании битов [9].

Комбинирование алгоритма Камеды-Вейнера и ГА

Рассмотрим более подробно последний шаг алгоритма Камеды-Вейнера, то есть поиск минимальных легитимных покрытий (алгоритм 3). Здесь M - множество минимальных НКА; Gridsi -множество всевозможных сочетаний гридов по i элементов; IsLegitimateCover() - функция, проверяющая, является ли множество гридов легитимным покрытием; IntersectionRule() - функция построения НКА по покрытию с помощью правила пересечений. Границы imin и imax внешнего цикла могут быть вычислены следующим образом: imin= l~log2NBl, где NB - число состояний в каноническом

автомате B; imAX = min( NG, NA -1, NB -1), где NG -число гридов в матрице RAM, NA - число состояний в A, NB - число состояний в B. Алгоритм 3.

I. Вычислить imin и imax 2 M := 0

3. for i from imin to imax do

4. found := false

5. for all Comb e Gridsi do

6. if IsLegitimateCover(Comb) then

7. M := M U {IntersectionRule(Comb)}

8. found := true

9. end if

10. end for

II. if found = true then

12. break

13. end if

14. end for

На каждом шаге внешнего цикла в строках 5-10 анализируются все возможные сочетания гридов по i элементов. Следует заметить, что на практике очень часто даже для небольших автоматов число гридов в матрице RAM может достигать нескольких сотен и даже тысяч элементов, а это приводит к необходимости перебора большого числа вариантов. Идея предлагаемого алгоритма состоит в том, чтобы заменить полный перебор более быстрой процедурой поиска, то есть ГА (разумеется, алгоритм при этом перестает быть точным и получаемые автоматы могут оказаться не минимальными, а редуцированными). Эвристический поиск минимальных легитимных покрытий можно реализовать с помощью алгоритма 4. Алгоритм 4.

1. Вычислить imin и imax

2. Найти минимальные покрытия RAM с помощью ГА

3. if найдены покрытия, размером не больше imax then

4. Выбрать минимальные легитимные покрытия и построить минимальные НКА с помощью правила пересечений

5. end if

Таким образом, в предлагаемом методе ГА используется в алгоритме Камеды-Вейнера для нахождения минимальных покрытий матрицы RAM, после чего производится проверка их легитимности.

Рассмотрим основные моменты, касающиеся ГА. Решением в ГА является покрытие, которое кодируется с помощью двоичного вектора. В этом векторе 1 в i-й позиции означает, что i-й грид включается в покрытие, а 0, что грид не включается в него. В рассматриваемом примере вектор (1, 1, 0, 0) означает, что в покрытие включаются только первые два грида из четырех. Для начала работы ГА необходимо сформировать начальную популяцию. Самым простым способом является поиск тривиальных решений, у которых все биты установлены в 1. Для получения нетривиальных решений может использоваться алгоритм 5.

Алгоритм 5.

1. Пометить все единицы RAM как непокрытые

2. repeat

3. Взять следующую непокрытую 1 в RAM

4. Случайно выбрать один из гридов, покрывающий эту 1

5. Установить соответствующий бит начального решения в 1

6. Пометить все единицы, покрываемые выбранным гридом, как покрытые

7. until нет непокрытых единиц в RAM

Функция Fitness() возвращает число 1 в векторе. Оператор мутации инвертирует несколько случайно выбранных битов, а в качестве оператора кроссовера могут использоваться любые стандартные операторы для двоичных векторов (например одноточечный или двухточечный кроссовер). После применения генетических операторов решение может стать недопустимым, то есть получившийся набор гридов может не являться покрытием, поэтому потребуется его корректировка, которая выполняется с помощью алгоритма, аналогичного 5. Так, в рассматриваемом примере решение (1, 0, 0, 0) не является допустимым и должно быть скорректировано. Программно корректировка решения может осуществляться либо внутри каждого генетического оператора, либо в виде отдельного оператора.

В заключение заметим: если минимальные легитимные покрытия не найдены, точный и приближенный алгоритмы возвращают канонический автомат B, когда число состояний в нем меньше, чем в автомате A.

Численные эксперименты

Для проверки эффективности предложенный алгоритм и алгоритм Камеды-Вейнера были реализованы в проекте ReFaM (Rational Expressions and Finite Automata Minimization), который является частью кросс-платформенной библиотеки HeO (Heuristic Optimization) [10]. Библиотека написана на языке программирования C++ и содержит несколько параллельных эвристических (метаэвристических) методов оптимизации: ГА (GA - Genetic Algorithm), метод имитации отжига (SA - Simulated Annealing), метод стохастического восхождения на холм (SHC - Stochastic Hill Climbing), метод ветвей и границ (BnB - Branch and Bound). Данные методы реализованы в виде алгоритмических каркасов с использованием метапро-граммирования, шаблонов проектирования и двух технологий параллельного программирования (OpenMP and MPI). Последнюю версию библиотеки можно скачать через SVN (домашняя страница: http://code.google.eom/p/heo/).

В алгоритме Камеды-Вейнера с помощью технологий OpenMP и MPI были распараллелены поиск гридов в матрице RAM и поиск минимальных легитимных покрытий. В эвристической версии

алгоритма использован параллельный вариант ГА библиотеки HeO, реализующий островную модель. Каждая версия алгоритма (точная и приближенная) реализованы в виде отдельного солвера.

Рассмотрим результаты работы точного и приближенного алгоритмов для случайной выборки из 100 попарно неэквивалентных НКА без недостижимых и бесполезных состояний, сгенерированных со следующими параметрами: число состояний I QI =6, число начальных состояний I / I =1, число конечных состояний |F|=2, размер алфавита

T

I £ I =2, плотность переходов D =--— = 0,3 , где

löfl^l

T - число переходов в автомате. Вычислительные эксперименты проводились на системе с общей памятью со следующими характеристиками: Intel Core 2 Quad Q6600 2.4Ghz, 4 Gb RAM, MS Windows XP Professionsl SP 3.

Результаты работы точного алгоритма представлены в таблице 6. Здесь m и n - соответственно число строк и столбцов матрицы RAM; d -плотность единиц в RAM; NG - число гридов в RAM; NM - число минимальных автоматов NFAs;

| QM| - число состояний в минимальных автоматах; min и max - минимальное и максимальное значения; ц - среднее значение; ст - среднеквадратиче-ское отклонение. Среднее время минимизации с использованием четырех потоков составило 1,1 секунды, а общее число найденных минимальных автоматов для всей выборки - 268, при этом у 9 автоматов не оказалось эквивалентных минимальных НКА. Как видно из таблицы, у некоторых автоматов имеется несколько минимальных НКА (среднее значение - 2,95), а среднее число состояний в минимальных автоматах равно 3,52.

Таблица 6

m n d Ng Nm IqmI

min 1 1 0,63 1 0 1

max 16 14 1,00 92 32 5

ц 5,70 6,00 0,73 15,40 2,95 3,52

ct 2,83 2,85 0,05 17,74 5,21 0,95

Проанализируем результаты работы приближенного алгоритма, полученные с разным числом потоков (N=1, 2, 4, 8, 16, 32, 64), представленные в таблице 7. Вычисления проводились со следующими параметрами ГА: число особей в популяции - 10; вероятность кроссовера - 0,8; вероятность мутации - 0,2; число итераций - 50. Поскольку ГА используется только на последнем шаге алгоритма Камеды-Вейнера, первые 4 столбца таблицы 6 для приближенного алгоритма будут теми же, что и для точного алгоритма, поэтому в таблице 7 они заменены следующими столбцами: ЫТ - общее число минимальных (редуцированных) автоматов для выборки; Аи - число неминимизированных автоматов в выборке; Т - среднее время миними-

зации в секундах. Для столбцов Мм и I <2М\ приведены средние значения.

Таблица 7

N NT NU Nm IQmI T

1 84 16 0,84 3,43 0,0109

2 92 15 0,92 3,42 0,0115

4 96 15 0,96 3,41 0,0136

8 101 12 1,01 3,47 0,0246

16 105 14 1,05 3,43 0,0445

32 113 12 1,13 3,47 0,0843

64 128 12 1,28 3,47 0,1602

Из таблицы 7 видно, что с увеличением числа потоков число найденных минимальных (редуцированных) автоматов увеличивается, а число не-минимизированных автоматов уменьшается. Среднее время минимизации по сравнению с точным алгоритмом мало и остается практически постоянным при числе потоков от 1 до 4, а затем увеличивается пропорционально числу потоков из-за ограничений аппаратной платформы, поддерживающей одновременное исполнение лишь четырех потоков.

Проведенные численные эксперименты показали, что предложенный метод позволяет получать приемлемые результаты намного быстрее точного метода. Заметим, что полный перебор при поиске минимальных легитимных покрытий в алгоритме Камеды-Вейнера может быть заменен не только ГА, но и другими эвристическими алгоритмами, в частности алгоритмами локального поиска, что позволяет получить на основе классического алгоритма минимизации НКА новые эвристические алгоритмы вершинной минимизации.

Литература

1. Мельников Б.Ф. Недетерминированные конечные автоматы. Тольятти: Изд-во ТГУ, 2009. 160 с.

2. Jiang T., Ravikumar B. Minimal NFA problems are hard // SIAM J. Comput. 1993. December. Vol. 22, pp. 1117-1141.

3. Kell V., Maier A., Potthoff A. et al. AMORE: a system for computing automata, monoids and regular expressions // Proc. of the 6th Annual Symposium on Theoretical Aspects of Computer

Science on STACS 89. NY, USA: Springer-Verlag New York, Inc., 1989, pp. 537-538.

4. Mohri M., Pereira F., Riley M. AT&T General-purpose finite-state machine software tools.

5. Raymond D., Wood D. Grail: Engineering Automata in C++: Tech. Rep. HKUST-CS96-24: Hong Kong University of Science and Technology, 1996.

6. Lombardy S., Poss R., Régis-Gianas Y., Sakarovitch J. Introducing VAUCANSON // Implementation and Application of Automata, Proc. Of the 8th Intern. Conf., CIAA 2003, Santa Barbara, California, USA, July 16-18, 2003, Vol. 2759 of Lecture Notes in Computer Science. Springer, 2003, pp. 96-107.

7. Rodger S.H. JFLAP: An Interactive Formal Languages and Automata Package. USA: Jones and Bartlett Publishers, Inc., 2006.

8. Kameda T., Weiner P. On the State Minimization of Nondeterministic Finite Automata // IEEE Transactions on Computers. 1970. Vol. 19, pp. 617-627.

9. Панченко Т.В. Генетические алгоритмы: учеб.-метод. пособ. Астрахань: Издат. дом «Астраханский университет», 2007. 87 с.

10. Цыганов А.В., Булычов О.И. HeO: библиотека метаэв-ристик для задач дискретной оптимизации // Программные продукты и системы. 2009. № 4. С. 148-151.

References

1. Melnikov B.F., Nedeterminirovannye konechnye avtomaty, Tolyatti, Tolyattinsky Gos. Univ., 2009, 160 p.

2. Jiang T., Ravikumar B., SLAM J. Comput, 1993, December, Vol. 22, pp. 1117-1141.

3. Kell V., Maier A., Potthoff A., Thomas W., Wermuth U., Proc. of the STACS 89, NY, USA: Springer-Verlag New York, Inc., 1989, pp. 537-538.

4. Mohri M., Pereira F., Riley M., AT&T General-purpose finite-state machine software tools, 2001.

5. Raymond D., Wood D., Grail: Engineering Automata in C++: Tech. Rep. HKUST-CS96-24, Hong Kong Univ. of Science and Technology, 1996.

6. Lombardy S., Poss R., Régis-Gianas Y., Sakarovitch J., Proc. of the Lntern. Conf., CLAA 2003, Santa Barbara, California, USA, July 16-18, 2003, Vol. 2759, LNCS, Springer, 2003, pp. 96107.

7. Rodger S.H., JFLAP: An Interactive Formal Languages and Automata Package, USA: Jones and Bartlett Publishers, Inc., 2006.

8. Kameda T., Weiner P., LEEE Transactions on Computers, 1970, Vol. 19, pp. 617-627.

9. Panchenko T.V., Geneticheskie algoritmy, Astrakhan, «Astrahansky universitet», 2007, 87 p.

10. Tsyganov A.V., Bulychov O.I., Programmnye produkty i sistemy, 2009, no. 4, pp. 148-151.

УДК 519.713

ИССЛЕДОВАНИЕ СТАТИСТИЧЕСКИХ СВОЙСТВ АЛГОРИТМОВ МИНИМИЗАЦИИ НЕДЕТЕРМИНИРОВАННЫХ КОНЕЧНЫХ АВТОМАТОВ С ИСПОЛЬЗОВАНИЕМ ПРОГРАММЫ REFAM

А.В. Цыганов, к.ф.-м.н., доцент; С.Д. Винокуров, студент; А.А. Ведин, студент (Ульяновский государственный педагогический университет им. И.Н. Ульянова,

площ. 100-летия со днярожд. В.И. Ленина, 4, г. Ульяновск, 432700, Россия, andrew.tsyganov@gmail.com, PhoenixDragonViSta@yandex.ru, alexlumen@rambler.ru)