Upload
vonhi
View
239
Download
0
Embed Size (px)
Citation preview
126 Вектор науки ТГУ. № 4 (22), 2012
математикаЦыганов А.В.ПОСТРОЕНИЕ БАЗИСНЫХ И ПОЛНЫХ АВТОМАТОВ...
УДК 519.713
ПОСТРОЕНИЕ БАЗИСНЫХ И ПОЛНЫХ АВТОМАТОВ В ПРОГРАММЕ ReFaM
© 2012А.В. Цыганов, кандидат физико-математических наук, доцент
Ульяновский государственный педагогический университет имени И. Н. Ульянова, Ульяновск (Россия)
Ключевые слова: недетерминированные конечные автоматы; вершинная минимизация; базисный автомат; полный автомат; параллелизм; OpenMP; MPI.
Аннотация: Базисный и полный автоматы являются инвариантами регулярного языка, применяющимися в алгоритмах минимизации недетерминированных конечных автоматов. В данной статье рассматриваются алгоритмы построения базисных и полных автоматов, реализованные в программе для минимизации недетерминированных конечных автоматов ReFaM. Приводятся описания алгоритмов и результаты численных экспериментов.
ВВЕДЕНИЕПриведем основные определения из теории конеч-
ных автоматов и формальных языков, которые нам по-надобятся в дальнейшем (более подробную информа-цию можно найти, например, в [1]).
Недетерминированным конечным автоматом (НКА) называется пятерка
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
, где Q — это ко-нечное множество состояний (вершин),
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
— конечный алфавит,
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
— функция переходов (дуг),
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
и
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
— множества начальных и конечных состояний соответственно. НКА называется детерми-нированным (ДКА) тогда и только тогда, когда | I | = 1
и
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
(или
217
519.713
ReFaM
© 2012 . . , - ,
. . , ( )
: ; -; ; ; ; OpenMP; MPI.
:,
.,
ReFaM. -.
-, (
, , [1]). ( )
),,,,(= FIQA δΣ , Q — ( ), Σ — , QQ 2: →Σ×δ — ( ), QI ⊆ QF ⊆
— . - ( ) , 1|=| I
1|=),(:|, aqaQq δΣ∈∀∈∀ ( 1|),(| ≤aqδ ).
( , ),, - , , -
, . ,. -
., “ -
” ( “ ”), -, -
, -. -
.,
, ( ). -, -
).В теории формальных языков КА часто применяются
для распознавания языков (множеств строк, состоящих из символов заданного алфавита), в связи с чем, их на-зывают автоматами-распознавателями, а языки, распоз-наваемые такими автоматами, называют регулярными. Два КА называют эквивалентными, если они распознают один и тот же язык. Для любого НКА с помощью проце-дуры детерминизации можно построить эквивалентный ему ДКА. Для данного языка зеркальным языком назы-вают язык, который состоит из всех “зеркальных” строк исходного языка (то есть записанных “задом наперед”), а для данного КА зеркальным автоматом будем называть такой автомат, который получается из него изменением направления дуг, при этом входные состояния стано-вятся выходными и наоборот. КА обычно изображают в виде ориентированного графа или таблицы переходов.
Одной из важнейших задач теории КА является зада-ча их минимизации, например, по числу состояний (вер-шинная минимизация). В алгоритмах минимизации НКА важную роль играют автоматы, являющиеся инварианта-ми регулярных языков. Самым известным инвариантом регулярного языка является так называемый каноничес-кий автомат — минимальный (по числу состояний) ДКА, распознающий данный язык. В качестве примера другого инварианта можно привести универсальный автомат [2].
Как правило, в программном обеспечении для ра-боты с КА и родственными структурами, например, в AMORE [3], FSM [4], Grail [5], VAUCANSON [6], JFLAP [7] точные алгоритмы минимизации НКА не реализуются из-за их невысокой практической
применимости, однако в них имеются процедуры для построения тех или иных инвариантов регулярных язы-ков. В данной работе будут рассмотрены алгоритмы и программная реализация, построения, так называемых базисного и полного автомата, описанных в [3], которые используются в некоторых алгоритмах минимизации НКА, реализованных в программе ReFaM.
ОПРЕДЕЛЕНИЕ БАЗИСНОГО И ПОЛНОГО АВТОМАТОВ
В статье [3] базисный и полный автомат для данного языка, заданного некоторым автоматом A определяются с помощью специального бинарного отношения #, ко-торое может быть записано в виде бинарной таблицы, однако строгое определение и описание алгоритма пост-роения этого отношения достаточно громоздки, поэтому мы рассмотрим лишь общую схему его построения.
Пусть дан некоторый автомат A. Обозначим через
218
. — ( ) ,
. [2].
, -, , AMORE [3], FSM [4], Grail [5], VAUCANSON
[6], JFLAP [7] -,
. -, , -
, [3], ,
ReFaM.
[3] , -A -
#, ,-
, .A . A -
. ( -),
),,,,( XXXX FIQX δΣ= ),,,,( YYYY FIQY δΣ= , - (Y
). , --
,A A . # -
-. # -
, — . i
j, #
( “ ” -).
, A },{ ba=Σ , - 1. -
X Y 2 3 . # A 4 (
, -).
зеркальный ему автомат. Эти автоматы задают в об-щем случае разные языки (исходный и зеркальный), для которых мы построим канонические автоматы
218
. — ( ) ,
. [2].
, -, , AMORE [3], FSM [4], Grail [5], VAUCANSON
[6], JFLAP [7] -,
. -, , -
, [3], ,
ReFaM.
[3] , -A -
#, ,-
, .A . A -
. ( -),
),,,,( XXXX FIQX δΣ= ),,,,( YYYY FIQY δΣ= , - (Y
). , --
,A A . # -
-. # -
, — . i
j, #
( “ ” -).
, A },{ ba=Σ , - 1. -
X Y 2 3 . # A 4 (
, -).
и
218
. — ( ) ,
. [2].
, -, , AMORE [3], FSM [4], Grail [5], VAUCANSON
[6], JFLAP [7] -,
. -, , -
, [3], ,
ReFaM.
[3] , -A -
#, ,-
, .A . A -
. ( -),
),,,,( XXXX FIQX δΣ= ),,,,( YYYY FIQY δΣ= , - (Y
). , --
,A A . # -
-. # -
, — . i
j, #
( “ ” -).
, A },{ ba=Σ , - 1. -
X Y 2 3 . # A 4 (
, -).
со-ответственно, то есть подвергнем их последовательно процедурам детерминизации и минимизации (Y при этом называют зеркальным каноническим автоматом). Заметим, что после выполнения процедур канонизации состояниями канонических автоматов являются подмно-жества состояний детерминированных автоматов, полу-ченных из автоматов A и
218
. — ( ) ,
. [2].
, -, , AMORE [3], FSM [4], Grail [5], VAUCANSON
[6], JFLAP [7] -,
. -, , -
, [3], ,
ReFaM.
[3] , -A -
#, ,-
, .A . A -
. ( -),
),,,,( XXXX FIQX δΣ= ),,,,( YYYY FIQY δΣ= , - (Y
). , --
,A A . # -
-. # -
, — . i
j, #
( “ ” -).
, A },{ ba=Σ , - 1. -
X Y 2 3 . # A 4 (
, -).
с помощью процедуры детер-минизации. Отношение # устанавливает соответствие между состояниями канонического автомата и зеркаль-ного канонического автомата. При этом строки таблицы отношения # соответствуют непустым состояниям кано-нического автомата, а столбцы — непустым состояниям зеркального канонического автомата. Если для какой либо строки i и столбца j пересечение соответствующих подмножеств является непустым множеством, то соот-ветствующей элемент таблицы помечается символом # (при этом рассматриваются только “непустые” состоя-ния канонических автоматов).
В качестве примера, рассмотрим автомат A над ал-фавитом
218
. — ( ) ,
. [2].
, -, , AMORE [3], FSM [4], Grail [5], VAUCANSON
[6], JFLAP [7] -,
. -, , -
, [3], ,
ReFaM.
[3] , -A -
#, ,-
, .A . A -
. ( -),
),,,,( XXXX FIQX δΣ= ),,,,( YYYY FIQY δΣ= , - (Y
). , --
,A A . # -
-. # -
, — . i
j, #
( “ ” -).
, A },{ ba=Σ , - 1. -
X Y 2 3 . # A 4 (
, -).
, заданный таблицей переходов таб-лице 1. Канонический и зеркальный канонический автоматы X и Y приведены для него в таблицах 2 и 3 со-
Вектор науки ТГУ. № 4 (22), 2012 127
математика Цыганов А.В.ПОСТРОЕНИЕ БАЗИСНЫХ И ПОЛНЫХ АВТОМАТОВ...
ответственно. Таблица бинарного отношения # для авто-мата A приведена в таблице 4 (детали построения опуще-ны, вместо полных названий состояний канонических автоматов для нумерации строк и столбцов таблицы ис-пользуются их индексы).
Таблица 1. Таблица переходов автомата A.
a b
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
0 {0,1} {2}
1 {0}
2 {0}
Таблица 2. Таблица переходов канонического автомата X.
a b
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
x0
x1
x2
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
x1
x1
x0
x2
x0
Таблица 3. Таблица переходов зеркального канони-ческого автомата Y.
a b
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
y0
y1
y2
219
1.A.ab
↔ 0}1, 0{}2{1}0{2}0{
2.X.ab
↔0x1x2 x→1x1x0x
2 x0x
3.Y.ab
↔0 y1y2 y←1y1y0 y
2 y0 y
4. #. 01 2
0# # 1# # # 2 #
A) , , , , ( ) (BA BA BA BAF I Q A BAδ Σ = ) , , , , ( ) (COM COM COM COMF I Q A COMδ Σ =-
. #
. ) (A BA ) , (j iy x T,X iQ x∈,Y jQ y∈j iy x# (i-j-
# #). ) row(T xi=,) col(T yj=.BA δ-
.1 T2 T — Σ ∈a,- ) , (1 2a T TBA δ ∈,:
) row( ) ), (row(2 1T a T X= δ) col( ) ), (col(2 2T a T Y= δ.(1)BA I T∈,I T∈) row(,
) row(T ()X.,,BA F T∈,YI T∈) col(,
) col(T ()Y.
y1
y1
y0
y2
y0
Таблица 4. Таблица бинарного отношения #.
0 1 20 # #1 # # #2 #
Для автомата A его базисный и полный автоматы будем обозначать через
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
и
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
соответственно.Базисный автомат строится на основе таблицы от-
ношения # следующим образом. Множество состоя-ний автомата BA(A) состоит из всех пар T(x
i , y
i ) таких,
что
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
и
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
(то есть на пересечении i-й строки и j-го столбца таблицы отношения # стоит #). При этом будем писать x
i = row(T), y
i = col(T).
Функция
перехода
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
базисного автомата определяется следую-щим образом. Пусть T
1 и T
2 — два состояния базисного
автомата и
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
, положим
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
тогда и только тогда, когда:
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
и
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
(1)
Положим T
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
IBA
тогда и только тогда, когда row(T)
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
IX ,
то есть когда row(T) является (единственным) стартовым состоянием X. Аналогично, будем считать, что T
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
FBA
тог-да и только тогда, когда col(T)
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
IY
, то есть когда col(T) является (единственным) стартовым состоянием Y.
В таблице 5 приведена таблица переходов базисного автомата для рассматриваемого примера.
Таблица 5. Таблица переходов BA(A).
a b
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
b0 = (0,0) {b
4} {b
5}
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
b1 = (0,1) {b
2 ,b
3}
219
1.A.ab
↔ 0}1, 0{}2{1}0{2}0{
2.X.ab
↔0x1x2 x→1x1x0x
2 x0x
3.Y.ab
↔0 y1y2 y←1y1y0 y
2 y0 y
4. #. 01 2
0# # 1# # # 2 #
A) , , , , ( ) (BA BA BA BAF I Q A BAδ Σ = ) , , , , ( ) (COM COM COM COMF I Q A COMδ Σ =-
. #
. ) (A BA ) , (j iy x T,X iQ x∈,Y jQ y∈j iy x# (i-j-
# #). ) row(T xi=,) col(T yj=.BA δ-
.1 T2 T — Σ ∈a,- ) , (1 2a T TBA δ ∈,:
) row( ) ), (row(2 1T a T X= δ) col( ) ), (col(2 2T a T Y= δ.(1)BA I T∈,I T∈) row(,
) row(T ()X.,,BA F T∈,YI T∈) col(,
) col(T ()Y.
b2 = (1,0) {b
4} {b
1}
b3 = (1,1) {b
2 ,b
3}
b4 = (1,2) {b
0}
b5 = (2,1) {b
0 ,b
1}
Следующим важным понятием, которое требуется для определения полного автомата, является понятие грида (блока) таблицы отношения #. Пусть R — подмножество строк, а C — подмножество столбцов таблицы отношения #. Тогда декартово произведение R
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
C называется гри-дом (блоком), если оно удовлетворяет следующим двум условиям: 1) на пересечениях всех его строк и столбцов располагаются #; 2) множества R и C нельзя расширить без нарушения первого условия. Для рассматриваемого нами примера в табл. 4 имеется 3 грида: {1}
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
{0,1,2}, {0,1}
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
{0,1} и {0,1,2}
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
{1}.Состояниями полного автомата являются блоки таб-
лицы отношения #, а алфавитом — алфавит исходного автомата (языка). Для того чтобы полностью описать пол-ный автомат требуется определить его функцию переходов
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
, а также множества входных и выходных состояний. Пусть B — блок таблицы отношения #. Через row(B)
будем обозначать множество строк данного блока (неко-торое подмножество состояний канонического автомата X), а через col(B) — множество его столбцов (некоторое подмножество состояний канонического автомата Y). Функция переходов полного автомата определяется сле-дующим образом. Пусть B
1 и B
2 — два состояния (блока)
полного автомата, тогда
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
при одновре-менном выполнении следующих двух условий:
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
(2) и
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
Множества начальных и конечных состояний полно-го автомата определяются следующим образом: состоя-ние B является начальным, если row(B) содержит (единс-твенное) начальное состояние автомата X и конечным, если col(B) содержит (единственное) начальное состоя-ние автомата Y.
В таблице 6 приведена таблица переходов полного автомата для рассматриваемого примера.
Таблица 6. Таблица переходов COM(A).
a b
219
1.A.ab
↔ 0}1, 0{}2{1}0{2}0{
2.X.ab
↔0x1x2 x→1x1x0x
2 x0x
3.Y.ab
↔0 y1y2 y←1y1y0 y
2 y0 y
4. #. 01 2
0# # 1# # # 2 #
A) , , , , ( ) (BA BA BA BAF I Q A BAδ Σ = ) , , , , ( ) (COM COM COM COMF I Q A COMδ Σ =-
. #
. ) (A BA ) , (j iy x T,X iQ x∈,Y jQ y∈j iy x# (i-j-
# #). ) row(T xi=,) col(T yj=.BA δ-
.1 T2 T — Σ ∈a,- ) , (1 2a T TBA δ ∈,:
) row( ) ), (row(2 1T a T X= δ) col( ) ), (col(2 2T a T Y= δ.(1)BA I T∈,I T∈) row(,
) row(T ()X.,,BA F T∈,YI T∈) col(,
) col(T ()Y.
c0 = {1}
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
{0,1,2} {c0 ,c
1 ,c
2} {c
1 ,c
2}
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
c1 = {0,1}
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
{0,1} {c0 ,c
1 ,c
2} {c
2}
219
1. A .a b
↔ 0 }1,0{ }2{1 }0{2 }0{
2. X .a b
↔ 0x 1x 2x→ 1x 1x 0x
2x 0x
3. Y .a b
↔ 0y 1y 2y← 1y 1y 0y
2y 0y
4. #. 0 1 2
0 # # 1 # # # 2 #
A),,,,()( BABABABA FIQABA δΣ= ),,,,()( COMCOMCOMCOM FIQACOM δΣ= -
. #
. )(ABA ),( ji yxT, Xi Qx ∈ , Yj Qy ∈ ji yx # ( i - j -
# #). )row(Txi = ,)col(Ty j = . BAδ -
. 1T 2T — Σ∈a , - ),( 12 aTT BAδ∈ , :
)row()),(row( 21 TaTX =δ )col()),(col( 22 TaTY =δ . (1)BAIT ∈ , IT ∈)row( ,
)row(T ( ) X . ,, BAFT ∈ , YIT ∈)col( ,
)col(T ( ) Y .
c2 = {0,1,2}
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
{1} {c1 ,c
2}
Заметим, что нами рассмотрено одно из определений полного автомата. Построенный таким образом полный автомат может применяться в задачах вершинной мини-мизации НКА. В другом возможном определении состо-яния полного автомата соответствуют не блокам, а псев-доблокам таблицы отношения #, для которых отсутствует требование максимальности (второе условие в определе-нии блока).
АЛГОРИТМЫ ПОСТРОЕНИЯ БАЗИСНОГО И ПОЛНОГО АВТОМАТОВ
Рассмотрим теперь алгоритмы построения базисных и полных автоматов и некоторые аспекты их програм-мной реализации в программе ReFaM.
ReFaM (Rational Expressions and Finite Automata Minimization) — кросс-платформенная программа с от-крытым исходным кодом, написанная на языке C++, и предназначенная для минимизации НКА. ReFaM яв-ляется частью библиотеки параллельных метаэвристик HeO [10].
НКА в программе ReFaM описываются в формате XML. Например, автомату A из рассматриваемого при-мера соответствует описание, приведенное на рис. 1. Для работы с файлами XML в программе ReFaM используется XML-парсер RapidXml (http://rapidxml.sourceforge.net/).
128 Вектор науки ТГУ. № 4 (22), 2012
математикаЦыганов А.В.ПОСТРОЕНИЕ БАЗИСНЫХ И ПОЛНЫХ АВТОМАТОВ...
<fa name=”A” symbols_num=”2” states_num=”3”> <symbols> <symbol id=”0”>a</symbol> <symbol id=”1”>b</symbol> </symbols> <states> <state id=”0”>0</state> <state id=”1”>1</state> <state id=”2”>2</state> </states> <initial>0</initial> <final>0</final> <delta> <transition src=”0” sym=”0” dst=”0”/> <transition src=”0” sym=”0” dst=”1”/> <transition src=”0” sym=”1” dst=”2”/> <transition src=”1” sym=”1” dst=”0”/> <transition src=”2” sym=”0” dst=”0”/> </delta> </fa>
Рис. 1. Описание автомата A на языке XML в программе ReFaM.
В программе ReFaM построение базисного и полно-го автоматов осуществляется на основе рассмотренных выше определений, поскольку эти определения одновре-менно являются и алгоритмами их построения. Сформу-лируем данные алгоритмы.
Алгоритм 1. Алгоритм построения базисного автомата.1. Построить канонические автоматы X и Y.2. Построить таблицу отношения #.3. Построить функцию переходов, используя условия (1).4. Разметить начальные и конечные состояния.Алгоритм 2. Алгоритм построения полного автомата.1. Построить канонические автоматы X и Y.2. Построить таблицу отношения #.3. Найти все гриды таблицы отношения #.4. Построить функцию переходов, используя условия (2).5. Разметить начальные и конечные состояния.В обоих алгоритмах шаг 1 имеет теоретически экс-
поненциальную сложность, но на практике канониза-ция НКА обычно выполняется достаточно быстро. Как показано далее, шаг 3 Алгоритма 2 всегда имеет экспо-ненциальную сложность, так как связан с полным пе-ребором всех подмножеств строк или столбцов таблицы отношения #, остальные шаги алгоритмов не приводят к комбинаторному взрыву, но их трудоемкость зависит от результатов выполнения шагов 1 (для обоих алгорит-мов) и 3 (для Алгоритма 2).
Построение канонического автомата X заключается в применении процедуры детерминизации к автомату A и последующей минимизации полученного ДКА, пост-роение зеркального канонического автомата Y выпол-няется аналогично, но для автомата A предварительно строится зеркальный автомат. Все эти операции явля-ются классическими. Для минимизация детермини-рованных автоматов в программе ReFaM используется алгоритм Хопкрофта.
Рассмотрим теперь третий шаг Алгоритма 2 — поиск всех гридов таблицы отношения # (см. Алгоритм 3).
Алгоритм 3. Поиск гридов.Для каждого k = 1,2,...,n, где n — число столбцов таблицы:1. Сгенерировать все возможные подмножества
столбцов таблицы из k элементов.2. Для каждого сгенерированного подмножества
столбцов C выбрать такое подмножество строк R, чтобы пересечения всех строк и столбцов содержали знак #.
3. Проверить, может ли подмножество C быть рас-ширено без нарушения предыдущего условия и, если нет, то добавить грид R
220
5 -.
5. )(ABA .a b
↔ )0,0(0 =b }{ 4b }{ 5b→ )1,0(1 =b },{ 32 bb← )0,1(2 =b }{ 4b }{ 1b
)1,1(3 =b },{ 32 bb)2,1(4 =b }{ 0b)1,2(5 =b },{ 10 bb
, -, ( ) #. R
— , C — #. CR × ( ),
: 1) #; 2) R C -
. . 4 3 : 2},1,{0{1}× , {0,1}1},{0 × {1}1,2},{0 × .
#, — ( ).
COMδ ,.
B — #. )row(B ( -
X ), )col(B — ( -Y ).
. 1B 2B — ( ) , ),( 12 aBB COMδ∈ -
:))row(),(())row(( 21 BaxBx X ⊆∈∀ δ ))col(),(())col(( 12 BayBy Y ⊆∈∀ δ . (2)
-: B , )row(B
( ) X ,)col(B ( ) Y .
6 -.
6. )(ACOM .a b
C к множеству найденных гридов.
Из приведенного алгоритма видно, что для нахожде-ния всех гридов требуется полный перебор всех непустых подмножеств столбцов таблицы отношения #. Кроме того, заметим, что шаги 2 и 3 этого алгоритма являются достаточно трудоемкими для больших таблиц. С целью уменьшения объема вычислений данный алгоритм на-хождения гридов “по столбцам” применяется в програм-ме, если число столбцов в таблице не превышает числа строк, в противном случае применяется аналогичный алгоритм «по строкам».
Приведем теперь верхнюю оценку числа состояний в базисном и полном автоматах. Если исходный автомат A имеет N состояний, то после процедуры канонизации число строк/столбцов, соответствующих непустым со-стояниям канонических автоматов, теоретически может равняться 2N-1 (на практике это число обычно значитель-но меньше). Отсюда легко получается верхняя оценка для числа состояний базисного автомата (числа знаков # в таблице) — (2N-1)2 и числа состояний полного автома-та (числа гридов таблицы) — 22N-1 -1. Несмотря на то, что приведенные теоретические оценки на практике обычно не достигаются, они дают представление о вычислитель-ной сложности рассматриваемых алгоритмов.
Учитывая вычислительную трудность построения полного автомата, в программе ReFaM с помощью техно-логий OpenMP и MPI распараллелена самая трудоемкая его часть — поиск гридов (шаг 3). Для генерации подмно-жеств строк (столбцов) в Алгоритме 3 применяется алго-ритм Чейза [11]. В OpenMP-версии программы также рас-параллелены основные циклы шагов 4 и 5 Алгоритма 2.
ЧИСЛЕННЫЕ ЭКСПЕРИМЕНТЫДля построения базисных и полных автоматов в про-
грамме ReFaM предусмотрены команды build_ba и build_com соответственно. Каждая команда имеет следующий формат: command in_dir out_dir. Программа сканирует все найденные в каталоге in_dir файлы с описаниями ав-томатов (в формате XML), обрабатывает их и записывает результаты в каталог out_dir.
Рассмотрим результаты построения базисных и пол-ного автоматов для случайной выборки из 1000 попарно неэквивалентных НКА без недостижимых и бесполезных состояний со следующими параметрами: число состоя-ний
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
, размер алфавита
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
, число начальных
состояний
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
, число конечных состояний
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
,
плотность переходов
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
, где
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
— чис-
ло переходов в автомате. Эксперименты проводились с использованием следующей программно-аппаратной конфигурации: Intel Core 2 Quad Q6600 @ 2.40 GHz, 4 Gb RAM, Microsoft Windows 7 Максимальная.
В таблице 7 представлены результаты статистичес-кой обработки характеристик построенных базисных и полных автоматов (
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ — среднее значение,
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ — сред-неквадратическое отклонение). Среднее время построе-ния обоих автоматов с использованием четырех потоков составило 0,5 сек.
Таблица 7. Статистические характеристики базисных и полных автоматов.
min max
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ B(A) COM(A) B(A) COM(A) B(A) COM(A) B(A) COM(A)
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
1 1 525 1329 100,73 76,87 84,58 116,94
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
1 1 22 667 8,11 34,39 3,74 49,58
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
1 1 21 774 7,96 33,75 3,69 48,58
223
, --
#. , , 2 3 -. -
“ ” -, ,
« ».
. A N ,/ ,
, 12 −N ().
( # ) — 2)12( −N
( ) — 12 12 −−N. -
,, -
.,
ReFaM OpenMP MPI — ( 3).
( ) 3 [11]. OpenMP- 4 5 -
2.
ReFaM - build_ba build_com .
: command in_dir out_dir. in_dir ( XML),
out_dir.
1000 :
5|| =Q , 3|| =Σ , 2|| =I , -
2|| =F , 3,0||||
||2 =
Σ=
QTD , ||T —
.- : Intel Core 2 Quad Q6600 @
2.40 GHz, 4 Gb RAM, Microsoft Windows 7 . 7 -
( μ — , σ
3 3 1680 1702035 316,26 20391,43 265,25 94326,42D 0,002 0,25 1,00 1,00 0,03 0,47 0,06 0,12
Вектор науки ТГУ. № 4 (22), 2012 129
математика Цыганов А.В.ПОСТРОЕНИЕ БАЗИСНЫХ И ПОЛНЫХ АВТОМАТОВ...
ВЫВОДЫВ данной работе были рассмотрены определения и
алгоритмы построения двух инвариантов регулярных языков — базисных и полных автоматов, применяю-щихся в некоторых алгоритмах минимизации НКА. Кроме того, были рассмотрены некоторые аспекты ре-ализации алгоритмов в программе ReFaM. Из приве-денных результатов численных экспериментов видно, что даже для небольших исходных автоматов получа-емые базисные и полные автоматы могут иметь очень большое число состояний и переходов, поэтому акту-альным является вопрос их эффективного построения, в частности, широкое применение технологий парал-лельного программирования.
Работа выполнена в рамках Государственных заданий Министерства образования и науки РФ (шифры 1.919.2011 и 6.3072.2011).
СПИСОК ЛИТЕРАТУРЫ1. Мельников Б.Ф. Недетерминированные конечные
автоматы. Тольятти: Изд-во ТГУ, 2009. 160 с.2. Polák L., Minimalizations of NFA using the universal
automaton // Int. J. Found. Comput. Sci., vol. 16, no. 5, pp. 999–1010, 2005.
3. Kell V., Maier A., Potthoff A. et al. AMORE: a system for computing automata, monoids and regular expressions // Proceedings of the 6th Annual Symposium on Theo-retical Aspects of Computer Science on STACS 89. New York, 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 Uni-versity of Science and Technology, 1996.
6. Lombardy S., Poss R., Régis-Gianas Y., Sakarovitch J. In-troducing VAUCANSON // Implementation and Appli-cation of Automata, 8th International Conference, CIAA 2003, Santa Barbara, California, USA, July 16-18, 2003, Proceedings / Ed. by O. H. Ibarra, Z. Dang. 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 Publish-ers, Inc., 2006. ISBN: 0763738344.
8. Гергель В.П. Высокопроизводительные вычисле-ния дл многоядерных многопроцессорных систем. Учебное пособие. Нижний Новгород: Изд-во ННГУ им. Н. И. Лобачевского, 2010.
9. Гергель В.П. Теория и практика параллельных вы-числений. Изд-во Бином. Лаборатория знаний, Ин-тернет-университет информационных технологий, 2007. 424 с.
10. Цыганов А.В., Булычов О.И. HeO: библиотека ме-таэвристик для задач дискретной оптимизации // Программные продукты и системы. 2009. № 4. С. 148–151.
11. Chase P.J. Algorithm 382: Combinations of M out of N Objects [G6] // Communications of the Association for Computing Machinery 13:6:368, 1970.
CONSTRUCTION OF BASIS AND COMPLETE AUTOMATA USING ReFaM
© 2012A.V. Tsyganov, Candidate of Physical and Mathematical Sciences, Assistant ProfessorUlyanovsk State Pedagogical University Named After I. N. Ulyanov, Ulyanovsk (Russia)
Keywords: nondeterministic finite automata; state minimization; basis automaton; complete automaton; parallel-ism; OpenMP; MPI.
Annotation: Basis and complete automata are invariants of a regular language which are used in nondetermin-istic finite automata minimization algorithms. In the present paper we consider algorithms for constructing basis and complete automata which are implemented in a software tool for minimizing nondeterministic finite automata called ReFaM. We provide the description of the algorithms as well as the results of the nu-merical experiments.