Опубликован: 17.02.2011 | Доступ: свободный | Студентов: 367 / 35 | Оценка: 5.00 / 5.00 | Длительность: 25:24:00
ISBN: 978-5-9963-0268-0
Специальности: Математик
Лекция 5:

Преобразования автоматов в автоматы без потери информации

< Лекция 4 || Лекция 5: 123 || Лекция 6 >
Аннотация: Исследуется задача преобразования произвольного автомата в автомат без потери информации на заданном регулярном множестве входных слов. Предложен метод решения, основанный на расширении выходного алфавита автомата. Описывается процедура построения проверочного графа для заданного автомата и заданного регулярного события. В терминах этого графа дается критерий того, что автомат является автоматом БПИ на словах этого события. Приводится процедура построения по исходному автомату автомата БПИ на заданном регулярном множестве слов за счет выведения дополнительных контрольных точек.

Отсутствие потери информации в автомате является полезным свойством при решении ряда задач. В качестве примера рассмотрим задачу контроля правильности функционирования сети автоматов, изображенной на рис.5.1. В этой сети A_i (i=1, \dots, 7) - автоматы Мили. Задачу контроля сети автоматов можно свести к задаче контроля одного автомата A, являющегося математической моделью этой сети, и решить ее известными методами. Однако при этом исследуемый автомат A может иметь столь значительную размерность, что известные методы окажутся практически неприемлемыми из-за большого объема вычислений. Другой возможный способ состоит в сведении контроля сети к последовательному контролю каждого из автоматов-компонентов.


Рис. 5.1.

Второй подход более перспективен с точки зрения практической реализации, но применим он не ко всякой сети. При контроле сети, изображенной на рис.5.1, доступным для наблюдения выходом является только выход автомата A_7. Поскольку выходы автоматов A_5 и A_6 являются входами автомата A_7, для контроля каждого из них в отдельности необходимо распознавать входные слова A_7 по наблюдаемой реакции сети. Аналогичным образом обстоит дело и с входными словами автоматов A_5, A_6. Таким образом, одно из условий, упрощающих решение задачи контроля рассматриваемой сети, состоит в том, чтобы ее компоненты A_5, A_6, A_7 были БПИ-автоматами. Поскольку в конечных автоматах представлены регулярные события и только они, на входы указанных компонентов сети могут поступать только слова, принадлежащие регулярным событиям. С этой точки зрения нам достаточно потребовать, чтобы компоненты A_5, A_6, A_7 были БПИ-автоматами лишь на регулярных множествах входных слов (ниже мы уточним это понятие).

В связи с изложенным возникает задача преобразования заданного автомата в БПИ-автомат на регулярном множестве входных слов, которая и будет исследована ниже.

Заметим, что эта задача представляет и самостоятельный интерес, один из возможных ее вариантов рассмотрен в [80].

Обратим внимание, что сформулированная задача будет рассматриваться в предположении, что исходный произвольный автомат будет преобразовываться в БПИ-автомат, восстановление неизвестного входного слова по наблюдаемой реакции которого требует также знания начального состояния. Указанное преобразование будет осуществляться путем выведения из автомата дополнительных контрольных точек, что не влияет на его функционирование, т. е. не изменяет его таблицу переходов, но расширяет выходной алфавит и тем самым модифицирует его таблицу выходов.

Перейдем к подробному рассмотрению упомянутой задачи. Пусть P - регулярное множество непустых слов в алфавите X автомата A=(S, X, Y, \delta, \lambda). Обозначим через Q следующее множество непустых выходных слов автомата A:

Q=\bigcup_{s \in S} \lambda_s (P)

где

\lambda_s (P)=\bigcup_{p \in X*} \lambda (s,p)

Автомат A назовем P -БПИ-автоматом, если и только если

\forall_{s \in S} \forall_{p,q \in P} \lambda (s,q)= \lambda (s,q) & \delta (s,q) \to p=q ( 5.1)

Рассмотрим следующую задачу. Пусть задан автомат A и некоторое регулярное множество P непустых слов в алфавите X. Требуется вывести контрольные точки в автомате A таким образом, чтобы полученный в результате автомат был Р -БПИ-автоматом.

По аналогии с [23] задачу нахождения минимального числа контрольных точек можно сформулировать следующим образом. Для автомата A и заданного P найти такое разбиение \Pi = \{K_1, \dots, K_r\} множества Z=S \times X, чтобы выполнялись следующие условия:

  • для любого состояния s автомата B=(S, X, Y, \times \Pi, \delta, \Lambda) и любой пары слов p и q из P имеет место соотношение

    \Lambda (s,p)= \Lambda (s,p) & \delta (s,p)=\delta (s,p) \to p=q

    где \Lambda (s,x)=(\lambda (s,x), K(s,x)), K(s,x), - код класса разбиения \Pi, содержащего пару (s,x), в некотором стандартном алфавите;

  • у всех разбиений \Pi', удовлетворяющих пункте 1 и не равных \Pi, число классов k таково, что верно неравенство

    E(\log_t k) \ge E(\log_t r) ( 5.2)

    где E(x)=n при n-1<x \le n; n - целое положительное число; t - мощность стандартного алфавита; E(\log_t r) - число дополнительных выходных каналов (контрольных точек).

Сформулированная задача относится к числу NP -полных проблем, т. е. методы ее решения содержат перебор. Ниже описан способ вывода контрольных точек в автомате, не содержащий перебора, но в общем случае не минимизирующий их количество.

Пусть R - регулярное выражение события Q. Используя известную технику, описанную, например, в работе [77], преобразуем R таким образом, чтобы оно представляло собой объединение событий, не содержащих итерации. При этом воспользуемся следующими известными соотношениями:

R_1*(R_2YR_3)=R_1*R_2YR_1*R_3,(R_1YR_2)*R_3=R_1*R_3YR_2*R_3,

операции объединения и произведения событий, а вхождение итерации события R, обозначаемой через R*, заменяется выражением eYRYR^2Y \dots YR^m. Здесь m - целое положительное число, R^i=R*R*\dots * R - i раз, e - пустое слово.

Вопрос о выборе m должен решаться особо в каждом конкретном случае. На этом мы остановимся ниже. Далее будет использоваться преобразованное указанным способом регулярное выражение R, обозначаемое R'.

Предположим, что R'=r_1Yr_2Y \dots Yr_i, где r_i=y_1^{(i)}*y_2^{(i)}* \dots y_{m_i}^{(i)} (1 \le I \le t) и y_j^{(i)} \in Y. Для каждого r_i и каждого s \in S построим ориентированный граф G_s^A(r_i).

Множество вершин этого графа обозначим через T, а построение G_s^A(r_i) будем выполнять следующим образом:

  1. Полагаем множество T равным паре \{s,s\}, а значение индекса j равным 1. Переходим к пункту 2.
  2. По выходному сигналу y_j^{(i)} для каждого элемента \{s_1,s_2\} множества T строим множество M_{\{s_1, s_2\}} всех различных неупорядоченных пар \{s_1', s_2'\}, где s_1', s_2 \in S, удовлетворяющих следующему условию: в алфавите X существует два таких символа x и x' (необязательно различных), что

    \delta (s_1, x)=s_1', \delta (s_2, x')=s_2', \lambda (s_1.x)=\lambda (s_2,x')=y_j^{(i)} ( 5.3)

    Если (5.3) не выполняется ни для каких пар символов из X, то построение заканчивается. В этом случае полагаем, что граф G_s^A(r_i) имеет пустое множество дуг и вершин.

  3. К множеству T добавляем все множества M_{\{s_1, s_2\}}, построенные на предыдущем этапе. Соединим вершины \{s_1, s_2\} и \{s_1', s_2'\}, удовлетворяющие условию (5.3), дугой, началом которой служит вершина \{s_1, s_2\}, а концом \{s_1', s_2'\}. Этой дуге присваивается отметка (x, x', y_j^{(i)}). Переходим к пункту 4.
  4. Если j<i, то i:=i+1 и переходим к пункту 2, в противном случае построение графа G_s^A(r_i) заканчивается.

Если в графе G_s^A(r_i) есть дуга с отметкой (x,x', y_j^{(i)}), где x \ne x', то такую дугу назовем выделенной.

Используя графы G_s^A(r_i), 1 \le i \le r, построим теперь граф G_s^A(R') по следующим правилам:

  1. Множество вершин графа G_s^A(R') является объединением множеств вершин графов G_s^A(r_i) для всех i=1, \dots , l.
  2. Из вершины g_1 в вершину g_2 графа G_s^A(R') ведет дуга, если существует такое i_0, 1 \le i_0 \le l, что в графе G_s^A(r_{i_0}) вершины g_1 и g_2 также соединены дугой. Полагаем, что отметка названной дуги в графе G_s^A(R') совпадает с отметкой той же дуги в графе G_s^A(r_{i_0}).

Проверочный граф G^A(R'), который является конечной целью построений, определим следующим образом:

  1. Множество вершин G^A(R') является объединением множеств вершин графов G_s^A(R') для всех s \in S.
  2. Из вершины g_1 в вершину g_2 графа G^A(R') ведет дуга, если существует такое s_0, принадлежащее S, что в графе G_{s_0}^A(R') вершины g_1 и g_2 также соединены дугой. Полагаем, что отметка названной дуги в графе G^A(R') совпадает с отметкой той же дуги в графе G_{s_0}^A(R').
  3. Начальными вершинами графа G^A(R') считаются все его вершины типа \{s,s\}.

Дугу графа G^A(R'), исходящую из вершины \{s,t\} с отметкой (x,x',y), обозначим (s,t,(x,x',y)).

Преобразование исходного регулярного выражения R в выражение R' описанным выше способом не является эквивалентным. Покажем, что, несмотря на это, проверочные графы G^A(R) и G^A(R') совпадают.

Рассмотрим событие Q* и предположим, что Q не содержит итераций. Пусть Q_j=eYQYQ^2Y \dots YQ^j. Покажем при этих предположениях, что если событие Q* в алфавите Y представимо в автомате A=(S,X,Y, \delta, \lambda), |S|=n, то проверочные графы G^A(Q*) и G^A(Q_m) совпадают, где m=n(n+1)/2.

Пусть S_1=\{s_1, \dots, s_k\}, k \le n, есть множество всех состояний автомата A, из которых представимо событие Q*. Выберем произвольным образом состояние s из S_1 и обозначим \bar {F_s^i} множество неупорядоченных пар состояний из S, появляющихся на последнем этапе построения C_s^A(Q^i). Элементы \bar {F_s^i} будем называть финальными.

Графу G_s^A(Q_i), i=1,2, \dots, m, естественным образом поставим в соответствие автомат Рабина - Скотта A_i'=(\sum_i, Y, \delta_i, (s,s), f_s^i), где \sum_i \subseteq S \times S, (s,s) - начальное состояние, F_s^i=Y_{\nu = 1}^I \bar {F_s^{\nu}} - множество финальных состояний, а функция переходов определена следующим образом: \delta_i'(\{s,t\}, y)=\{\bar s, \bar t\}, если в графе G_s^A(Q^i) из вершины \{s,t\} в вершину \{\bar s, \bar t\} ведет дуга с отметкой (x,x',y). Легко видеть, что автомат A_i', вообще говоря, представляет событие P, такое, что Y_{j=1}^I Q^j \subseteq P и имеет место следующее соотношение:

F_s^1 \subseteq F_s^2 \subseteq \dots \subseteq F_s^I \subseteq \dots ( 5.4)

Поскольку автомат A имеет n состояний, то число различных неупорядоченных пар \{s,t\},s,t, \in S, являющихся состояниями автомата A_i', не превышает величины n(n+1)/2. Тогда из (5.4) вытекает

|F_s^1| \le |F_s^2| \le \dots \le |F_s^i| \le \dots \le n(n-1)/2

и, следовательно, существует такое i_0 \le n(n+1)/2, что |F_s^{i_0}|=|F_s^{i_0+k}| при любом целом положительном k. Но тогда на основании (5.4) можно сделать вывод, что F_s^{i_0}=F_s^{i_0+1}=F_s^{i_0+k}= \dots Последнее соотношение означает, что автоматы A_{i_0}', A_{i_0+1}, \dots представляют одно и то же событие, следовательно, графы G_s^A(Q^m), m=n(n+1)/2, и G_s^A(Q*) совпадают. Вследствие произвольности выбора s из S и способа построения проверочного графа это же утверждение справедливо для графов G^A(Q^m) и G^A(Q*).

Рассуждения, аналогичные приведенным, показывают, что если Q содержит итерации некоторых событий, то эти итерации также можно заменить объединением конечного числа степеней событий и при этом такая замена не приводит к изменению проверочного графа автомата.

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

Теорема 5.1. Если событие Q в алфавите Y, регулярное выражение которого есть R, представимо в автомате A=(S, X, Y, \delta, \lambda), |S|=n, то проверочные графы G^A(R) и G^A(R'), где R' получено из R путем замены каждого вхождения итерации события T на Y_{i=1}^{n(n+1)/2} T^i, совпадают.

Из доказательства этой теоремы следует, что если R' является объединением всех возможных слов, принадлежащих R, длина которых не превосходит величины n(n+1)/2, то графы G^A(R') и G^A(R) для автомата A совпадают. Это замечание позволяет упростить практическое построение графа G^A(R).

Сформулированная ниже теорема будет служить критерием, используемым при преобразовании произвольного автомата в P -БПИ-автомат. Ее доказательство аналогично доказательству теоремы 2 из [74].

Пусть R - регулярное выражение события Q=Y_{s \in S} \lambda_s (P).

Теорема 5.2. Для того чтобы автомат A был P -БПИ-автоматом, необходимо и достаточно, чтобы в его проверочном графе G^A(R) для любого слова p \in P каждый соответствующий ему путь не содержал выделенной дуги, исходящей из вершины \{s,s\}, а также дуги, заходящей в вершину такого же типа.

Рассматриваемую задачу отыскания множества выходных контрольных точек можно разбить на две следующие.

Задача 1. В проверочном графе G^A(R) найти такое множество L его дуг, чтобы полученный в результате их удаления новый граф удовлетворял условиям теоремы 5.2.

Задача 2. По заданному множеству L дуг построить такое максимальное разбиение \Pi множества Z=S \times Y, чтобы выполнялись условия:

  • если дуга (s,t,(x_i, x_j, y)) графа G^A(R) принадлежит множеству L, то (s, x_i) и (t, x_j) находятся в разных классах разбиения;
  • для всех \Pi', удовлетворяющих условию (a), выполняется условие (5.2).

Обе сформулированные задачи принадлежат к числу сложных комбинаторных задач, методы решения которых, отличные от перебора, пока не известны. В работе [23] предложены методы решения задач, подобных задачам 1 и 2, не гарантирующие минимальности, но не содержащие перебора.

Решение задачи 2 можно получить по алгоритму A1 из [23], если положить в нем Z=N, а симметричное бинарное отношение \varphi \subset Z \times Z определить следующим образом: ((s,x_i), (t, x_j)) \in \varphi, если и только если существует такое y \in Y, что \lambda (s, x_i)= \lambda (t, x_j)= y, (s,t,(x_i, x_j, y)) \ne L.

Перейдем к рассмотрению первой задачи. По графу G^A(R') построим множество C всех простых путей длины большей 1, удовлетворяющих следующим условиям:

  • путь начинается выделенной дугой, исходящей из вершины типа \{s,s\}, и заканчивается дугой, заходящей в вершину такого же типа;
  • ни один путь из C не должен являться отрезком никакого другого пути из C ;
  • каждый путь в C должен соответствовать некоторому отрезку выходного слова, принадлежащего событию Q ;
  • каждый путь в C не содержит выделенной дуги, соединяющей вершины типа \{s,s\}.

Каждой дуге графа G^A(R'), входящей в состав путей из C, присвоим вес, равный числу путей в C, содержащих эту дугу.

Пусть F - множество выделенных дуг графа G^A(R'), каждая из которых соединяет вершины типа \{s,s\}.

< Лекция 4 || Лекция 5: 123 || Лекция 6 >