Języki, automaty i obliczenia
Cocke-Younger-Kasami’s algorithm
Rzeszów 2012
Sprawdzić algorytmem Cocke’a – Younger’a – Kasami’ego czy dane słowo należy do języka.
Dane:
Gramatyka G=<{S, Z, X, Y, x ,y}, {x, y}, P, S > o następujących regułach produkcji:
S → Yy | Xy
Y → yX | yx | Zx
X → Xy | yx
Z → y | x
Gramatyka w postaci Chomsky’ego G’=<{S,Y,X,Z,A,B,x,y},{x,y},P’,S>
o następujących regułach produkcji:
S → YA | XA
Y → AX | AB | ZB
X → XA | AB
Z → y | x
A→y
B→x
Wybrane słowo 5-cio literowe należące do języka:
x = yxyyy
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | |||||
3 | |||||
4 | |||||
5 |
Postępowanie wg algorytmu:
V11 = {X | X → y} = {A, Z}
V21 = {X | X → x} = {B,Z}
V31 = {X | X → y} = {A,Z}
V41 = {X | X → y} = {A,Z}
V51 = {X | X → y} = {A,Z}
j = 2; i = 1,2,3,4; k=1
i = 1, k = 1
V12 = {X | X → YZ; Y є V11, Z є V21}
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | ||||
3 | |||||
4 | |||||
5 |
V11 × V21
{A, Z} × { B, Z }
X,Y → AB
(-) → AZ
(-) → ZB
(-) →ZZ V12 = { X,Y}
i = 2, k = 1
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | |||
3 | |||||
4 | |||||
5 |
V22 = {X | X → YZ; Y є V21, Z є V31}
V21 × V31
{B,Z} × {A,Z}
(-) →BA
(-) →BZ
(-) →ZA
(-) →ZZ
V22 = {∅}
i = 3, k = 1
V32 = {X | X → YZ; Y є V31, Z є V41}
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | ||
3 | |||||
4 | |||||
5 |
V31 × V41
{ A,Z } × { A,Z }
(-) →AA
(-) →AZ
(-) →ZA
(-) →ZZ
V32 = {∅}
i = 4, k = 1
V42 = {X | X → YZ; Y є V41, Z є V51}
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | |||||
4 | |||||
5 |
V41 × V51
{A,Z} × {A,Z}
(-) →AA
(-) →AZ
(-) →ZA
(-) →ZZ
V42 = {∅}
j = 3; i = 1,2,3; k=1,2
i = 1
V13 = {X | X → YZ; Y є V11, Z є V22 ; k = 1
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | S,X | ||||
4 | |||||
5 |
X | X → YZ; Y є V12, Z є V31} k = 2
V11 × V22 v V12 × V31
{A, Z} × {∅} v {X,Y} × {A,Z}
(S,X) → XA
(-) → XZ
(S) → YA
(-) → YZ
V13 = {S,X}
i = 2
V23 = {X | X → YZ; Y є V21, Z є V32; k = 1
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | S,X | - | |||
4 | |||||
5 |
X | X → YZ; Y є V22, Z є V41} k = 2
V21 × V32 v V22 × V41
{B,Z} × {∅} v {∅} × {A,Z}
(-) → {∅}
V23 = {∅}
i = 3
V33 = {X | X → YZ; Y є V31, Z є V42; k = 1
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | S,X | - | - | ||
4 | |||||
5 |
X | X → YZ; Y є V32, Z є V51} k = 2
V31 × V42 v V32 × V51
{A,Z} × {∅} v {∅} × {A,Z}
(-) → {∅}
V33 = {∅}
j = 4 ; i = 1,2; k=1,2,3
i = 1
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | S,X | - | - | ||
4 | S,X | ||||
5 |
V14 = {X | X → YZ; Y є V11, Z є V23; k = 1
X | X → YZ; Y є V12, Z є V32; k = 2
X | X → YZ; Y є V13, Z є V41} k = 3
V11 × V23 v V12 × V32 v V13 × V41
{A, Z} × {∅} v {X,Y } × {∅} v {S,X} × {A,Z}
(-)→ SA
(-) → SZ
S,X → XA
(-) → XZ
V14 = {S,X}
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | S,X | - | - | ||
4 | S,X | - | |||
5 |
i = 2
V24 = {X | X → YZ; Y є V21, Z є V33; k = 1
X | X → YZ; Y є V22, Z є V42 ; k= 2
X | X → YZ; Y є V23, Z є V51} k = 3
V21 × V33 v V22 × V42 v V23 × V51
{B,Z} × {∅} v {∅} × {∅} v {∅} × {A,Z}
(-) →{∅}
V24 = {∅}
j = 4 ; i = 1; k=1,2,3,4
j/i | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
1 | A, Z | B, Z | A, Z | A, Z | A, Z |
2 | X,Y | - | - | - | |
3 | S,X | - | - | ||
4 | S,X | - | |||
5 | S,X |
i = 1
V15 = {X | X → YZ; Y є V11, Z є V24; k = 1
V15 = X | X → YZ; Y є V12, Z є V33; k = 2
V15 = X | X → YZ; Y є V13, Z є V42; k = 3
V15 = X | X → YZ; Y є V14, Z є V51} k = 4
V11 × V24 v V12 × V33 v V13 × V42 v V14 × V51
{A, Z} × {∅} v {X,Y} × {∅} v {S,X} × {∅} v {S,X} × {A,Z}
(-) →SA
(-) →SZ
(S,X) →XA
(-) →XZ
V15 = {S,X}
*
V15 → x15
*
S → yxyyy
Odp. Słowo „yxyyy” należy do języka i można go wygenerować z symbolu początkowego S, ponieważ symbol S znajduje się w ostatniej komórce tabeli utworzonej podczas działania algorytmu.