BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 2/33 Převod NKA ndka BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 4/33 Automty grmtiky(bi-aag) 3. Operce s konečnými utomty Jn Holu Ktedr teoretické informtiky Fkult informčních technologií ČVUT v Prze c Jn Holu, 2011 Evropský sociální fond. Prh & EU: Investujeme do vší udoucnosti Algoritmus Převod NKA n DKA Vstup: Konečný utomt M = (Q, T, δ, q 0, F ). Výstup: Deterministický konečný utomt M = (Q, T, δ, q 0, F ) tkový, že L(M) = L(M ). Metod: 1. Q = {{q 0 }}, stv {q 0 } ude neoznčený. 2. Jestliže v Q všechny stvy oznčeny, pokrčuj krokem 4. 3. Vyereme z Q neoznčený stv q provedeme: () Určíme δ (q, ) = p q δ(p, ), T, () Q = Q {δ (q, )}, T, (c) stv q Q oznčíme, (d) pokrčujeme krokem 2. 4. q 0 = {q 0}. 5. F = {q : q Q, q F }. BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 1/33 VzthmeziDKA NKA Definice Konečné utomty M 1 M 2 nzýváme ekvivlentní, jestliže přijímjí stejný jzyk, tj. L(M 1 ) = L(M 2 ). Vět Kždý konečný nedeterministický utomt M může ýt převeden n ekvivlentní konečný deterministický utomt M. Příkld BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 3/33 Převod NKA ndka δ M 0 1 q {q, q 0 } {q, q 1 } q 0 {q 0, q f } {q 0 } q 1 {q 1 } {q 1, q f } q f δ M 0 1 [q] [q, q 0 ] [q, q 1 ] [q, q 0 ] [q, q 0, q f ] [q, q 0, q 1 ] [q, q 1 ] [q, q 0, q 1 ] [q, q 1, q f ] [q, q 0, q f ] [q, q 0, q f ] [q, q 0, q 1 ] [q, q 1, q f ] [q, q 0, q 1 ] [q, q 1, q f ] [q, q 0, q 1 ] [q, q 0, q 1, q f ] [q, q 0, q 1, q f ] [q, q 0, q 1, q f ] [q, q 0, q 1, q f ] [q, q 0, q 1, q f ]
Převod NKA ndka BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 6/33 Homogenní konečný utomt BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 8/33 Jk velký může ýt výsledný DKA? BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 5/33 Převod NKA ndka Příkld M = ({z, f}, {, }, δ, z, {f}), kde δ: δ z {z, f} f {f} DKA M = ({[z], [f], [z, f]}, {, }, δ, [z], {[f], [z, f]}), kde δ : δ [z] [z, f] [z, f] [z, f] [f] [f] [f] [z] [z,f] 0 [f] Definice (Množiny cílových stvů) M = (Q, T, δ, q 0, F ). Pro liovolné T definujeme množinu cílových stvů pro symol T Q() Q tkto: Q() = {q : q δ(p, ), T, p, q Q}. Definice (Homogenní konečný utomt) M = (Q, T, δ, q 0, F ) Q() jsou množiny cílových stvů T. Jestliže pro všechny dvojice symolů, T,, pltí Q() Q() =, pk se utomt M nzývá homogenní. Q() = {q, r} Q() = {s, t, u} p BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 7/33 Homogenní konečný utomt Pro homogenní konečný utomt je souor množin {Q() : T } rozkld množiny stvů Q n třídy, který může mít jeden z těchto dvou tvrů: 1. 2. Q = T Q() {q 0 } v přípdě, že q 0 δ(q, ) pro žádné q Q žádné T, Q = T Q() v přípdě, že q 0 δ(q, ) pro nějké q Q, T. V tomto přípdě q 0 Q(). q s r t u
Homogenní konečný utomt BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 10/33 Homogenní konečný utomt BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 12/33 Vět Necht M = (Q, T, δ, q 0, F ) je homogenní nedeterministický konečný utomt. Pk počet stvů ekvivlentního deterministického konečného utomtu M = (Q, T, δ, q 0, F ) získného stndrdním postupem je dán vzthem: Q T(2 Q() ) T + 1. BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 9/33 Homogenní konečný utomt Příkld (pokrčování) Q() = {q, r}, Q() = {s, t, u} Q() Q() = proto DKA pro M = (Q, T, δ, q 0, F ) Q 2 Q() +2 Q() T +1 = 2 2 +2 3 2+1 = 4+8 2+1 = 11 Ekvivlentní deterministický konečný utomt je M = ({p, q, qr, s, t, st, stu, u, su, t, tu}, {, }, δ, p, {r, qr, u, su, tu, stu}), kde δ: p q s q qr st s q u qr qr stu st qr su u t stu qr stu su q tu t r s tu r st r u p q s qr st stu su tu u r BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 11/33 KA sjednocení jzyků t Příkld Je dán homogenní nedeterministický konečný utomt M = ({p, q, r, s, t, u}, {, }, δ, p, {r, u}), kde δ: p q s q q, r s, t r u s q u t r s u t p q s r t u Algoritmus Konstrukce konečného utomtu pro sjednocení jzyků ε-přechody. Vstup: Dv konečné utomty M 1 M 2. Výstup: Konečný utomt M, L(M) = L(M 1 ) L(M 2 ). Metod: 1. M 1 = (Q 1, T, δ 1, q 01, F 1 ), M 2 = (Q 2, T, δ 2, q 02, F 2 ). 2. M = (Q, T, δ, q 0, F ): () Q = Q 1 Q 2 {q 0 }, q 0 Q 1 Q 2, () δ(q 0, ε) = {q 01, q 02 }, δ(q, ) = δ 1 (q, ), q Q 1, T, δ(q, ) = δ 2 (q, ), q Q 2, T. 3. F = F 1 F 2.
KA sjednocení jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 14/33 KA sjednocení jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 16/33 Příkld M 1 = ({1, 2, }, {, }, δ 1, 1, {2}), L(M 1 ) = { + } M 2 = ({1, 2, }, {, }, δ 2, 1, {2 }), L(M 2 ) = { + } Příkld M 1 = ({1, 2, }, {, }, δ 1, 1, {2}), L(M 1 ) = { + } M 2 = ({1, 2, }, {, }, δ 2, 1, {2 }), L(M 2 ) = { + } δ 1 1 2 2 2 δ 2 1 2 2 2 δ 1 1 2 2 2 δ 2 1 2 2 2 q 0 1 1' 2 2' 0/ 0' / L(M) = { + + } M = ({(1, 1 ), (2, ), (, 2 ), (, )}, {, }, δ, (1, 1 ), {(2, ), (, 2 )}) δ (1, 1 ) (2, ) (, 2 ) (2, ) (2, ) (, ) (, 2 ) (, ) (, 2 ) (, ) (, ) (, ) BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 13/33 KA sjednocení jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 15/33 KA sjednocení jzyků Algoritmus Konstrukce konečného utomtu pro sjednocení jzyků prlelní činnost. Vstup: Dv úplně určené konečné utomty M 1 M 2. Výstup: Konečný utomt M, který přijímá jzyk L(M) = L(M 1 ) L(M 2 ). Metod: Oznčíme M = (Q 1, T, δ 1, q 01, F 1 ), M 2 = (Q 2, T, δ 2, q 02, F 2 ). Automt M je definován tkto: M = (Q 1 Q 2, T, δ, (q 01, q 02 ), (F 1 Q 2 ) (Q 1 F 2 )), kde δ: δ((q 1, q 2 ), ) = (δ 1 (q 1, ), δ 2 (q 2, )) pro (q 1, q 2 ) Q 1 Q 2. Příkld (pokrčování) 1,1' 2,0' / 0,0' / / 0,2' /
KA průnik jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 18/33 KA průnik jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 20/33 Algoritmus Konstrukce konečného utomtu pro průnik jzyků prlelní činnost. Vstup: Dv konečné utomty M 1 M 2. Výstup: Automt M přijímjící jzyk L(M) = L(M 1 ) L(M 2 ) Metod: 1. M 1 = (Q 1, T, δ 1, q 01, F 1 ), M 2 = (Q 2, T, δ 2, q 02, F 2 ). 2. Výsledný utomt M: M = (Q 1 Q 2, T, δ, (q 01, q 02 ), F 1 F 2 ), kde δ: δ((q 1, q 2 ), ) = (δ 1 (q 1, ), δ 2 (q 2, )) (q 1, q 2 ) Q 1 Q 2. Příkld (pokrčování) M = ({(1, 1 ), (2, 1 ), (3, 2 ), (4, 1 ), (4, 2 ), (4, 3 ), (4, 4 ), (, 1 ), (, 2 ), (, 3 ), (, 4 )}, {, }, δ, (1, 1 ), {(4, 4 )}) δ (1, 1 ) (2, 1 ) (, 2 ) (2, 1 ) (, 1 ) (3, 2 ) (, 1 ) (, 1 ) (, 2 ) (, 2 ) (, 3 ) (, 2 ) (, 3 ) (, 1 ) (, 4 ) (, 4 ) (, 3 ) (, 2 ) (3, 2 ) (4, 3 ) (, 2 ) (4, 3 ) (4, 1 ) (4, 4 ) (4, 1 ) (4, 1 ) (4, 2 ) (4, 2 ) (4, 3 ) (4, 2 ) (4, 4 ) (4, 3 ) (4, 2 ) BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 17/33 KA průnik jzyků Příkld M: L(M) = {w : w {, }, předpon w, přípon w}. M 1 přijímá řetězce zčínjící předponou, M 1 = ({1, 2, 3, 4, }, {, }, δ 1, 1, {4}) M 2 přijímá řetězce končící příponou, M 2 = ({1, 2, 3, 4 }, {, }, δ 2, 1, {4 }) δ 1 1 2 2 3 3 4 4 4 4 δ 2 1 1 2 2 3 2 3 1 4 4 3 2 BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 19/33 KA průnik jzyků Algoritmus Konstrukce konečného utomtu pro průnik jzyků jen dosžitelné stvy. Vstup: M 1 = (Q 1, T, δ 1, q 01, F 1 ), M 2 = (Q 2, T, δ 2, q 02, F 2 ). Výstup: M = (Q, T, δ, q 0, F ), L(M) = L(M 1 ) L(M 2 ). Metod: 1. Q = {(q 01, q 02 )}, Q new = {(q 01, q 02 )}. 2. Jestliže Q new = {}, jdi n krok 4. 3. Vyereme q = (q n1, q m2 ) z Q new : () určíme δ((q n1, q m2 ), ) = (δ 1 (q n1, ), δ 2 (q m2, )), T, () jestliže o přechody δ 1 (q n1, ) δ 2 (q m2, ) definovány, nevedou do (δ 1 (q n1, ), δ 2 (q m2, )) Q, pk Q = Q (δ 1 (q n1, ), δ 2 ( m2, )) Q new = Q new (δ 1 (q n1, ), δ 2 ( m2, )) (c) Q new = Q new \ {(q n1, q m2 )} (d) pokrčujeme krokem 2.
KA průnik jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 22/33 KA součin jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 24/33 Algoritmus (pokrčování): 2. q 0 = (q 01, q 02 ). 3. F = {q : q Q, q = (q n1, q m2 ), q n1 F, q m2 F }. Algoritmus Konstrukce konečného utomtu pro součin jzyků ε-přechody. Vstup: Dv konečné utomty M 1 M 2. Výstup: Konečný utomt M, L(M) = L(M 1 ).L(M 2 ). Metod: 1. M 1 = (Q 1, T 1, δ 1, q 01, F 1 ), M 2 = (Q 2, T 2, δ 2, q 02, F 2 ). 2. Výsledný utomt M = (Q, T, δ, q 01, F 2 ) je zkonstruován tkto: () Q = Q 1 Q 2, () δ(q, ) = δ 1 (q, ) pro všechn q Q 1 T 1, δ(q, ) = δ 2 (q, ) pro všechn q Q 2 T 2, δ(q, ε) = q 02 pro všechn q F 1. BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 21/33 KA doplněk jzyk Konečný utomt, který přijímá doplněk jzyk do T : M = (Q, T, δ, q 0, F ) přijímá jzyk L. M = (Q, T, δ, q 0, Q \ F ) přijímá jzyk T \ L. BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 23/33 KA součin jzyků Příkld Sestrojíme konečný utomt pro součin jzyků + +. M = ({1, 2, 1, 2 }, {, }, δ, 1, {2 }) Automt M je úplně určený deterministický. 1 2 1 2
KA součin jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 26/33 KA součin jzyků BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 28/33 Algoritmus Konstrukce konečného utomtu pro součin jzyků prlelní činnost. Vstup: Dv konečné utomty M 1 M 2. Výstup: Konečný utomt M, L(M) = L(M 1 ).L(M 2 ). Metod: 1. M 1 = (Q 1, T 1, δ 1, q 01, F 1 ), M 2 = (Q 2, T 2, δ 2, q 02, F 2 ). 2. Sestrojíme { NKA M = (Q 1 Q 2 {q 0 }, T 1 T 2, δ, q 0, F ), q 01, jestliže q 01 F 1, q 0 = [q 01, q 02 ], jestliže q 01 F 1, () δ(q, x) = δ 1 (q, x), jestliže q Q 1, δ 1 (q, x) F 1, () δ(q, x) = δ 1 (q, x) {q 02 }, jestliže q Q 1, δ 1 (q, x) F 1, (c) δ(q, x) = δ 2 (q, x), jestliže q Q 2, (d) δ(q, x) = δ 1 (q 01, x) δ 2 (q 02, x), jestliže q = [q 01, q 02 ]. (e) Jestliže q 01 F 1, pk F = F 2. Jestliže q 01 F 1 q 02 F 2, pk F = F 2 {[q 01, q 02 ]}. BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 25/33 KA součin jzyků Algoritmus (pokrčování): 3. Sestrojíme deterministický konečný utomt M. Příkld Sestrojíme utomt, který přijímá jzyk + +. M 1 = ({1, 2, }, {, }, δ 1, 1, {2}), L(M 1 ) = { + } M 2 = ({1, 2, }, {, }, δ 2, 1, {2 }), L(M 2 ) = { + } δ 1 1 2 2 2 δ 2 1 2 2 2 M = ({1, 2,, 1, 2, }, {, }, δ, 1, {2 }). Získný NKA M převedeme n ekvivlentní DKA. δ 1 {2, 1 } 2 {2, 1 } 1 {2 } 2 {2 } BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 27/33 KA iterce jzyk Algoritmus Konstrukce konečného utomtu pro iterci jzyk s ε-přechody. Vstup: Konečný utomt M = (Q, T, δ, q 0, F ), který přijímá jzyk L. Výstup: Konečný utomt M, který přijímá jzyk L. Metod: Sestrojme konečný utomt M = (Q, T, δ, q 0, F {q 0 }), kde zorzení δ je definováno tkto: δ (q, x) = δ(q, x) pro všechn q Q všechn x T, δ (q, ε) = {q 0 } pro všechn q F, δ (q 0, ε) = {q 0}.
KA iterce jzyk BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 30/33 KA iterce jzyk BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 32/33 Příkld Sestrojíme konečný utomt, který přijímá iterci jzyk. Je dán utomt M, který přijímá všechny řetězce tvru. 0 1 Výsledný utomt má tvr M = ({0, 0, 1, 2}, {, }, δ, 1, {0, 2}): 0 ε 0 1 2 ε BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 29/33 KA iterce jzyk Algoritmus Konstrukce konečného utomtu pro iterci jzyk ez ε-přechodů. Vstup: Konečný utomt M = (Q, T, δ, q 0, F ), který přijímá jzyk L. Výstup: Konečný utomt M, který přijímá jzyk L. Metod: 1. Sestrojíme nedeterministický konečný utomt M = (Q, T, δ, q 0, F {q 0 }), kde zorzení δ je definováno tkto: δ (q 0, x) = δ(q 0, x). δ (q, x) = δ(q, x) jestliže q Q, δ(q, x) F =. δ (q, x) = δ(q, x) {q 0 } jestliže q Q, δ(q, x) F. 2. K utomtu M sestrojíme deterministický konečný utomt M. 2 Příkld Je dán utomt M, který přijímá všechny řetězce tvru. 0 1 Automt, který přijímá iterci jzyk, tj. jzyk ( ) : Deterministický konečný utomt: 0 0 0 1 2 1 2 BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 31/33 Minimlizce DKA Algoritmus Minimlizce DKA Vstup: DKA M = (Q, T, δ, q 0, F ), který přijímá jzyk L. Výstup: Minimální DKA M = (Q m, T, δ m, q 0m, F m ), který přijímá jzyk L. Metod: 1. Rozděl stvy Q n dvě skupiny Q I = Q \ F, Q II = F. 2. Vytvoř tulku δ, kde pro kždý stv q Q je jeden řádek δ (Q i, ) = Q j, q Q i, δ(q, ) Q j, T. (V tulce nhrd stvy skupinmi, do kterých náleží.) 3. Jestliže v nějké skupině Q i nejsou všechny řádky stejné, rozděl tuto skupinu tk, y kždá měl shodné řádky pro všechny své členy. 4. Pokrčuj odem 2 dokud se skupiny dělí. 5. Q m jsou všechny vytvořené skupiny, F m jsou všechny vytvořené skupiny koncových stvů, δ m je poslední tulk vzniklá v odě 2, q 0m je skupin oshující q 0. 2
Minimlizce DKA Příkld Minimlizujte následující DKA. stv vstupní symol δ q 0 q 5 q 1 q 1 q 4 q 3 q 2 q 2 q 5 q 3 q 3 q 0 q 4 q 1 q 2 q 5 q 0 q 4 BI-AAG (2011/2012) J. Holu: 3. Operce s konečnými utomty p. 33/33