Совмещенный С-автомат S={A, Z, W, U, a 1, , 1, 2}
Анализ конечных автоматов Требуется построить алгоритм, который позволял бы для любого КА Мили Мура А, заданного своими таблицами переходов и выходов или, соответственно, отмеченной таблицей переходов, и для любого множества N выходных сигналов автомата А находить регулярное выражение для события, представленного в автомате А множеством N выходных сигналов. Проблема анализа конечного автомата Мура заключается в следующем: дана таблица переходов или граф конечного автомата Мура А, дано начальное состояние a 1, автомата А и произвольное множество М его внутренних состояний. Требуется найти регулярное выражение для события, представленного в этом автомате множеством М.
Путем в автомате А с входным алфавитом (x 1, . . . , xn) и внутренними состояниями а 1, . . . , аm называется всякая конечная последовательность попарно l = aj 0 xi 1 aj 1 xi 2 aj 2…aj(k-1)xikajk (k>=0) при условии, что для любого p = 1, …, k состояние ajp-1, переводится входом xip в состояние аjp чередующихся букв aj и xi а именно: Путь называется простым, если все входящие в него состояния аj, за исключением, быть может, лишь первого aj 0 и последнего ajk, попарно различны. Если aj 0 = ajk, то путь называется замкнутым. Слово h=xi 1 xi 2, …, xik , получающееся в результате удаления из пути L символов внутренних состояний, называется (входным) словом, соответствующим этому пути. Легко видеть, что путь L однозначно определяется соответствующим ему входным словом h и начальным состоянием aj 0. Путь l входит в то или иное событие S , если соответствующее этому пути входное слово входит в S.
Типы путей Всякий путь в автомате А, имеющем внутренние состояния а 1, . . . , ат, начинающийся состоянием аi и кончающийся любым состоянием из любого множества внутренних состояний автомата М, будем называть путем типа аi М; пути типа аi аj мы будем называть просто путями типа аi. Если N — любое множество внутренних состояний, не содержащее состояния аi, то будем называть путем типа аi[N] всякий путь типа аi, не содержащий в своем составе ни одного состояния из множества N. Пути типа аi можно называть путями типа аi[N], выбирая в качестве множества N пустое множество внутренних состояний. Итак, далее будем рассматривать лишь два сорта типов путей: • тип аi М , который мы будем называть начальным, • тип аi[N] – циклическим. Если множество М состоит из единственного элемента аi, то начальный тип аi аi будет вместе с тем и циклическим. Всякий путь типа аi[N] будет вместе с тем и путём типа аi[N 1] (N 1 N)
Комплексы Пусть S – некоторое событие, представленное в автомате А с начальным состоянием а 1 множеством М внутренних состояний. Начальным комплексом события S называется дизъюнкция всех простых незамкнутых путей типа а 1 М. Этот комплекс мы будем обозначать через Кs или просто через К, если рассматривается лишь одно событие S. Если а 1 М, то в начальный комплекс мы будем включать путь а 1, состоящий лишь из одной буквы, который условимся считать незамкнутым. Комплексом типа аi[N] называется выражение, получаемое в результате вычеркивания в каждом из простых путей типа аi[N] символов аi, стоящих в начале и в конце пути, объединения всех полученных в результате такого вычеркивания «урезанных» путей знаками дизъюнкции и заключения полученного выражения в итерационные скобки. В комплексы типов аi и аi[N] не включаются пути, состоящие лишь из одной буквы. Если пути какого-либо типа Р в автомате отсутствуют, то соответствующий комплекс типа Р мы будем называть пустым и отождествлять с пустым словом е.
Пример: x y 1 2 2 3 3 2 1 Непосредственным перебором находим по таблице находим все простые незамкнутые пути типа 1>(1, 2): 1, 1 x 2 Начальный комплекс: 1 1 x 2 Простые пути типа 1: 1 y 1, 1 x 2 y 3 y 1 Простые пути типа 2: 2 x 2, 2 y 3 y 1 x 2 Простые пути типа 3: 3 x 2 y 3, 3 y 1 x 2 y 3 M = {1, 2} A 1 = 1 Найти комплексы всех типов для события S
Ранг комплексов. Будем приписывать всем комплексам типа аi[N] , для которых множество N состоит из к элементов, ранг к+1. Комплексы типа аi при этом будут иметь ранг 1. Начальному комплексу по определению, присваивается нулевой ранг.
Алгоритм анализа КА Алгоритм анализа конечных автоматов состоит в последовательном применении одной операции – операции расширения. Суть этой операции состоит в замене всех входящих в то или иное выражение символов внутренних состояний автомата символами комплексов; операция выполняется в соответствии с правилом, называемым правилом замены. Правило замены. Если путь a 1 xi 1 aj 1 … xikajk входит в начальный комплекс, то буква a 1 заменяется символом комплекса типа a 1, буква aj 1 – символом комплекса типа aj 1 [a 1], буква aj 2 – символом комплекса типа aj 2 [a 1, aj 1] и т. д. Если же урезанный путь (т. е. путь без начального и конечного состояний) xi 1 aj 1 xi 2 aj 2 … xir входит в комплекс типа aj[N], то буква аj 1 заменяется символом комплекса типа aj 1 [N, aj] буква аj 2 — символом комплекса типа aj 2 [N, aj 1 ] и т. д. Операция расширения может применяться к любому регулярному выражению (и даже к произвольной формуле) над алфавитом, содержащим все буквы входного алфавита автомата и символы всех его комплексов. Если f (х1, . . . , хn, К, Кр1, . . . , Кps) — произвольная формула указанного вида, то операция расширения состоит, во-первых, в замене всех символов комплексов их явными выражениями через пути, а, во-вторых, в подстановке вместо символов внутренних состояний аi в каждом из возникших таким образом путей символов комплексов высших рангов в соответствии со сформулированным выше правилом замены.
Поясним операцию расширения на примере: K=1 1 x 2 – начальный комплекс 1 -е расширение: K = 1 1 x 2 K 1 x K 2[1] = K 1 (e x K 2[1]) 2 -е расширение: K 1 (e x K 2[1]) = {y x 2 y 3 y}(e x{x y 3 x}) {y x. K 2[1]y. K 2[1, 2]y}(e x{x y. K 3[1, 2]x} ) 3 -е расширение: {у x. К 2[1]у. K 3[1, 2]y(е х{х у. К 3[1, 2]х}) = = {у х {х у3 х} уеу} (е х {х уех}) = {у х {х у3 x} yy}(e x{x yx}) {y x{x y К 3[1, 2]x} yy} (е х {х ух}). 4 -е расширение: {у х (х у. К 3[1, 2]x} уу} (е х {х ух}) = {у х (х уeх} уу} (е х {x yx }) = {у х {х ух} уу} (e x{x yx}).
Если событие S представлено множеством М внутренних состояний конечного автомата А, имеющего т внутренних состояний, то событие S регулярно, а регулярное выражение для этого события может быть получено в результате (m + 1)-кратного применения операции расширения к символу начального комплекса события S.
Алгоритм анализа КА типа Мили Алгоритм анализа для случая конечных автоматов Мили отличается от построенного алгоритма лишь одной деталью. А именно, поскольку рассматриваемое событие S представляется в данном автомате Мили А с начальным состоянием а 1 не множеством М внутренних состояний, а множеством N выходных сигналов, необходимо иначе строить начальный комплекс. Вместо комплекса типа а 1 М в этом алгоритме строится комплекс типа а 1 N. Комплекс К представляет собою дизъюнкцию всех простых путей с отброшенной последней буквой, которые оканчиваются всевозможными парами ajk-1 xik, дающими при подстановке их в функцию выходов автомата А выходные сигналы, принадлежащие представляющему множеству N. В остальном алгоритм анализа конечных автоматов Мили ничем не отличается от алгоритма анализа конечных автоматов Мура.
Если событие S представлено в конечном автомате Мили Мура с m состояниями множеством выходных сигналов (или множеством внутренних состоянии), то это событие регулярно и допускает регулярное выражение, циклическая глубина которого не превосходит m. Чтобы убедиться в справедливости этого предложения, достаточно заметить, что регулярное выражение для события S, получаемое в результате применения алгоритма анализа, конструируется с помощью m+1 расширения регулярного выражения K, циклическая глубина которого равна нулю. При этом после первого расширения циклическая глубина выражения остается равной нулю, а после» каждого следующего увеличивается не более чем на единицу. Однако, число m+1 представляет собою лишь верхнюю грань числа необходимых расширений. В отдельных случаях эта грань может и не достигаться.
x Y 1 2 3 2 3 1 3 K = 1 1 x 2 K 1 = {y x 2 x 3 x} K 2 = {y x 3 x 1 x} K 3 = {y x 1 x 2 x} 1 -е расширение: K = 1 1 x 2 K 1 x. K 2[1] = K 1(ex. K 2[1]) 2 -е расширение: 3 -е расширение:
Пример 3: Таблица переходов Таблица выходов x 1 2 2 1 x Y 1 z z 2 v v Y Найти регулярное выражение для события S, представленного в автомате S выходным сигналом v (при начальном состоянии 1) Начальный комплекс: K = 1 x 2 x 1 x 2 y Комплекс типа 1: K 1 = {y x 2 y} Комплекс типа 2: K 2 = {x y 1 x} K = 1 x 2 x 1 x 2 y K 1 x. K 2[1]x K 1 x. K 2[1]y = K 1 x. K 2[1](x y) = {y x 2 y}x{x}{x y} {y x. K 2[1]y}x{x}(x y) = {y x{x}y}x{x}(x y} S = {y x{x}y}x{x}(x y}


