Kleenes algoritmi - Kleenes algorithm - Wikipedia

Yilda nazariy informatika, xususan rasmiy til nazariyasi, Klaynning algoritmi berilganni o'zgartiradi nondeterministik cheklangan avtomat (NFA) ga a doimiy ifoda. Boshqa konvertatsiya algoritmlari bilan birgalikda u bir nechta tavsiflash formatlarining ekvivalentligini o'rnatadi oddiy tillar. Xuddi shu usulning alternativ prezentatsiyalariga tegishli bo'lgan "yo'q qilish usuli" kiradi Brzozovskiy va Makkluski, ning algoritmi McNaughton va Yamada,[1] va foydalanish Arden lemmasi.

Algoritm tavsifi

Gross va Yellen (2004) ma'lumotlariga ko'ra,[2] algoritmni orqaga qaytarish mumkin Kleen (1956).[3] Holda algoritm taqdimoti aniqlangan cheklangan avtomatlar (DFAs) Hopcroft va Ullman (1979) da berilgan.[4] Quyida NFA uchun algoritm taqdimoti Gross va Yellen (2004) dan keyin keltirilgan.[2]

Berilgan nondeterministik cheklangan avtomat M = (Q, Σ, δ, q0, F) bilan Q = { q0,...,qn } uning to'plami davlatlar, algoritm hisoblaydi

to'plamlar Rk
ij
oladigan barcha satrlarning M shtatdan qmen ga qj dan yuqori raqamlangan har qanday davlatdan o'tmasdan k.

Bu erda "holatdan o'tish" kirish degan ma'noni anglatadi va uni tark etish, shuning uchun ham men va j dan yuqori bo'lishi mumkin k, lekin hech qanday oraliq holat bo'lishi mumkin emas.Har bir to'plam Rk
ij
doimiy ibora bilan ifodalanadi; algoritm ularni bosqichma-bosqich hisoblab chiqadi k = -1, 0, ..., n. Chunki bundan yuqori raqamlangan davlat yo'q n, doimiy ifoda Rn
0j
oladigan barcha satrlar to'plamini ifodalaydi M undan boshlang'ich holati q0 ga qj. Agar F = { q1,...,qf } - bu to'plam davlatlarni qabul qilish, doimiy ifoda Rn
01
| ... | Rn
0f
tilni ifodalaydi qabul qilindi tomonidan M.

Uchun dastlabki doimiy iboralar k = -1, quyidagicha hisoblanadi menj:

R−1
ij
= a1 | ... | am qayerda qj Δ (qmen,a1), ..., qj Δ (qmen,am)

va quyidagicha men=j:

R−1
II
= a1 | ... | am | ε qaerda qmen Δ (qmen,a1), ..., qmen Δ (qmen,am)

Boshqa so'zlar bilan aytganda, R−1
ij
dan o'tishni belgilaydigan barcha harflarni eslatib o'tadi men ga j, va biz qaerda bo'lsa, biz ham ε ni kiritamiz men=j.

Shundan so'ng, har bir qadamda iboralar Rk
ij
oldingi tomonidan hisoblab chiqilgan

Rk
ij
= Rk-1
ik
(Rk-1
kk
)* Rk-1
kj
| Rk-1
ij

Algoritmning ishlashini tushunishning yana bir usuli - bu "yo'q qilish usuli", bu erda holatlar 0 dan n ketma-ket olib tashlanadi: qachon davlat k olib tashlanadi, doimiy ifoda Rk-1
ij
, holatdan yo'lni belgilaydigan so'zlarni tavsiflaydi men>k bayon qilish j>k, ichiga qayta yozilgan Rk
ij
"yo'q qilingan" holatdan o'tish imkoniyatini hisobga olish uchun k.

Induksiya bo'yicha k, bu uzunligi ko'rsatilishi mumkin[5] har bir ifodaning Rk
ij
ko'pi bilan 1/3(4k+1(6s+7) - 4) belgilar, qaerda s in dagi belgilar sonini bildiradi, shuning uchun qabul qilingan tilni ifodalovchi doimiy ifodaning uzunligi M ko'pi bilan 1/3(4n+1(6s+7)f - f - 3) belgilar, qaerda f yakuniy holatlar sonini bildiradi.Bu eksponent zarba muqarrar, chunki DFA oilalari mavjud bo'lib, ular uchun har qanday ekvivalent doimiy ifoda eksponent o'lchovga ega bo'lishi kerak.[6]

Amalda algoritmni ishga tushirish natijasida olingan doimiy ifodaning hajmi holatlar protsedura tomonidan ko'rib chiqilish tartibiga, ya'ni ularni 0 dan raqamlash tartibiga qarab juda xilma-xil bo'lishi mumkin. n.

Misol

Kleen algoritmiga berilgan DFA misoli

Rasmda ko'rsatilgan avtomat quyidagicha tavsiflanishi mumkin M = (Q, Σ, δ, q0, F) bilan

  • davlatlar to'plami Q = { q0, q1, q2 },
  • kirish alifbosi Σ = { a, b },
  • function bilan o'tish funktsiyasi δ (bilan)q0,a)=q0δ (q0,b)=q1δ (q1,a)=q2δ (q1,b)=q1δ (q2,a)=q1va δ (q2,b)=q1,
  • boshlang'ich holati q0va
  • qabul qilingan holatlar to'plami F = { q1 }.

Kleen algoritmi dastlabki doimiy ifodalarni quyidagicha hisoblab chiqadi

R−1
00
   
= a | ε
R−1
01
= b
R−1
02
= ∅
R−1
10
= ∅
R−1
11
= b | ε
R−1
12
= a
R−1
20
= ∅
R−1
21
= a | b
R−1
22
= ε

Shundan so'ng, Rk
ij
dan hisoblanadi Rk-1
ij
uchun bosqichma-bosqich k = 0, 1, 2.Kleen algebra doimiyliklarni iloji boricha soddalashtirish uchun tengliklardan foydalaniladi.

0-qadam
R0
00
   
= R−1
00
(R−1
00
)* R−1
00
| R−1
00
   
= (a | ε)(a | ε)*(a | ε)| a | ε= a*
R0
01
= R−1
00
(R−1
00
)* R−1
01
| R−1
01
= (a | ε)(a | ε)*b| b= a* b
R0
02
= R−1
00
(R−1
00
)* R−1
02
| R−1
02
= (a | ε)(a | ε)*| ∅= ∅
R0
10
= R−1
10
(R−1
00
)* R−1
00
| R−1
10
= ∅(a | ε)*(a | ε)| ∅= ∅
R0
11
= R−1
10
(R−1
00
)* R−1
01
| R−1
11
= ∅(a | ε)*b| b | ε= b | ε
R0
12
= R−1
10
(R−1
00
)* R−1
02
| R−1
12
= ∅(a | ε)*| a= a
R0
20
= R−1
20
(R−1
00
)* R−1
00
| R−1
20
= ∅(a | ε)*(a | ε)| ∅= ∅
R0
21
= R−1
20
(R−1
00
)* R−1
01
| R−1
21
= ∅(a | ε)*b| a | b= a | b
R0
22
= R−1
20
(R−1
00
)* R−1
02
| R−1
22
= ∅(a | ε)*| ε= ε
1-qadam
R1
00
   
= R0
01
(R0
11
)* R0
10
| R0
00
   
= a*b(b | ε)*| a*        = a*
R1
01
= R0
01
(R0
11
)* R0
11
| R0
01
= a*b(b | ε)*(b | ε)| a* b= a* b* b
R1
02
= R0
01
(R0
11
)* R0
12
| R0
02
= a*b(b | ε)*a| ∅= a* b* ba
R1
10
= R0
11
(R0
11
)* R0
10
| R0
10
= (b | ε)(b | ε)*| ∅= ∅
R1
11
= R0
11
(R0
11
)* R0
11
| R0
11
= (b | ε)(b | ε)*(b | ε)| b | ε= b*
R1
12
= R0
11
(R0
11
)* R0
12
| R0
12
= (b | ε)(b | ε)*a| a= b* a
R1
20
= R0
21
(R0
11
)* R0
10
| R0
20
= (a | b)(b | ε)*| ∅= ∅
R1
21
= R0
21
(R0
11
)* R0
11
| R0
21
= (a | b)(b | ε)*(b | ε)| a | b= (a | b) b*
R1
22
= R0
21
(R0
11
)* R0
12
| R0
22
= (a | b)(b | ε)*a| ε= (a | b) b* a | ε
2-qadam
R2
00
   
= R1
02
(R1
22
)* R1
20
| R1
00
   
= a*b*ba((a|b)b*a | ε)*| a*= a*
R2
01
= R1
02
(R1
22
)* R1
21
| R1
01
= a*b*ba((a|b)b*a | ε)*(a|b)b*| a* b* b= a* b (a (a | b) | b)*
R2
02
= R1
02
(R1
22
)* R1
22
| R1
02
= a*b*ba((a|b)b*a | ε)*((a|b)b*a | ε)| a* b* ba= a* b* b (a (a | b) b*)* a
R2
10
= R1
12
(R1
22
)* R1
20
| R1
10
= b* a((a|b)b*a | ε)*| ∅= ∅
R2
11
= R1
12
(R1
22
)* R1
21
| R1
11
= b* a((a|b)b*a | ε)*(a|b)b*| b*= (a (a | b) | b)*
R2
12
= R1
12
(R1
22
)* R1
22
| R1
12
= b* a((a|b)b*a | ε)*((a|b)b*a | ε)| b* a= (a (a | b) | b)* a
R2
20
= R1
22
(R1
22
)* R1
20
| R1
20
= ((a|b)b*a | ε)((a|b)b*a | ε)*| ∅= ∅
R2
21
= R1
22
(R1
22
)* R1
21
| R1
21
= ((a|b)b*a | ε)((a|b)b*a | ε)*(a|b)b*| (a | b) b*= (a | b) (a (a | b) | b)*
R2
22
= R1
22
(R1
22
)* R1
22
| R1
22
= ((a|b)b*a | ε)((a|b)b*a | ε)*((a|b)b*a | ε)| (a | b) b* a | ε= ((a | b) b* a)*

Beri q0 boshlang'ich holati va q1 yagona qabul qilish holati, doimiy ifoda R2
01
avtomat tomonidan qabul qilingan barcha satrlar to'plamini bildiradi.

Shuningdek qarang

Adabiyotlar

  1. ^ McNaughton, R .; Yamada, H. (1960 yil mart). "Avtomatika uchun muntazam ifodalar va holat grafikalari". Elektron kompyuterlarda IRE operatsiyalari. EC-9 (1): 39–47. doi:10.1109 / TEC.1960.5221603. ISSN  0367-9950.
  2. ^ a b Jonathan L. Gross va Jey Yellen, tahrir. (2004). Grafika nazariyasi qo'llanmasi. Diskret matematika va uning qo'llanilishi. CRC Press. ISBN  1-58488-090-2. Bu erda :.2.1-sektsiya, 65-betdagi R13 izohi
  3. ^ Kleen, Stiven S (1956). "Hodisalarni asab tarmoqlarida aks ettirish va cheklangan avtomatlashtirish" (PDF). Avtomatika tadqiqotlari, matematika yilnomalari. Tadqiqotlar. Princeton Univ. Matbuot. 34. Bu erda: mazhab.9, s.37-40
  4. ^ John E. Hopcroft, Jeffrey D. Ullman (1979). Avtomatika nazariyasi, tillar va hisoblash bilan tanishish. Addison-Uesli. ISBN  0-201-02988-X. Bu erda: 3.2.1-bo'lim 91-96 betlar
  5. ^ Aniqrog'i, oddiy ifodali belgilar soni "amen"," ε "," | ","*"," · "; Qavslarni hisobga olmaganda.
  6. ^ Gruber, German; Xolzer, Markus (2008). Aseto, Luka; Damgard, Ivan; Goldberg, Lesli Ann; Xoldorsson, Magnus M.; Ingolfsdóttir, Anna; Walukievich, Igor (tahr.). "Sonlu avtomatika, Digraf ulanishi va muntazam ifoda hajmi". Avtomatika, tillar va dasturlash. Kompyuter fanidan ma'ruza matnlari. Springer Berlin Heidelberg. 5126: 39–50. doi:10.1007/978-3-540-70583-3_4. ISBN  9783540705833.. Teorema 16.