• Nie Znaleziono Wyników

ALGORYTM CYK

N/A
N/A
Protected

Academic year: 2021

Share "ALGORYTM CYK"

Copied!
4
0
0

Pełen tekst

(1)

ALGORYTM CYK

Dla gramatyki bezkontekstowej w postaci normalnej Chomsky’ego algorytm CYK rozstrzyga, czy dane słowo należy do języka generowanego przez tę gramatykę.

Dla każdej gramatyki bezkontekstowej można znaleźć gramatykę równoważną w postaci normalnej Chomsky’ego.

Opis algorytmu:

Przypuśćmy, że słowo wa1an jest długości n.

Tworzymy tabelę dwuwymiarową, która w j-tym wierszu i i-tej kolumnie (1inj1) zawiera te zmienne gramatyki G, które generują podsłowo a i aij1 (jest to podsłowo długości j zaczynające się od i-tej litery).

Niech Xij oznacza zbiór zmiennych wypisanych w j-tym wierszu i i-tej kolumnie.

Elementy tabeli budujemy indukcyjnie.

Podstawa indukcji: j 1, wypełniamy pierwszy wiersz tabeli.

Jeżeli A ai jest produkcją, to AXi1 (A zostaje zapisane w i-tej kolumnie).

Krok indukcyjny: zakładamy, że wiersze j 1,,m1 zostały wypełnione.

Wypełniamy wiersz o numerze m.

Jeżeli w zbiorze produkcji jest A BC oraz istnieje km takie, że Xik

B  CXik,mk, to A zapisujemy do Xim.

Jeżeli SX1n, to oznacza że wL

 

G . Złożoność algorytmu CYK jest ograniczona przez T

 

nn3. Uwaga!

We wszystkich poniższych zadaniach gramatyka bezkontekstowa G

,N,S,P

jest w postaci normalnej Chomsky’ego, tzn. reguły produkcji tej gramatyki mają postać

BC A  ,

a A  gdzie A,B,CN, a.

(2)

Zadanie 1

Dana jest gramatyka bezkontekstowa G

,N,S,P

, gdzie

 

a,b

N

S,A,B,C

P: SAB|BC ABA|a BCC|b CAB|a

a) Za pomocą algorytmu CYK sprawdzić, czy słowo x = baaba jest generowane przez tę gramatykę. Jeżeli tak, wyznaczyć co najmniej jedno wyprowadzenie tego słowa i

odpowiadające temu wyprowadzeniu drzewo wyprowadzeń.

b) Korzystając z tabeli dla algorytmu CYK dla słowa x wskaż podsłowa słowa x, które nie należą do L(G).

Rozwiązanie.

a)Aby zbadać, czy słowo x = baaba jest generowane przez gramatykę, stosujemy algorytm CYK i tworzymy tabelę:

j  i  1 2 3 4 5

x b a a b a

1 B A,C A,C B A,C

2 A,S B S,C A,S

3  B B

4  S,A,C

5 A,S,C

Zbiór X15

A,S,C

. Oznacza to, że słowo x = baaba można wyprowadzić w tej gramatyce ze zmiennej A lub S lub C. Język generowany przez gramatykę tworzą słowa, które można wyprowadzić z S. Jak widać SX15, zatem słowo xL

 

G .

Wyprowadzenie słowa x w G:

   

 

   

 

 

 

B C bC bA B baB baC C baC a

S 1,1 2,4 2,4 2,1 3,3 3,3 (3,2) (5,1) 3,2 baA

 

3,1B(4,1)abaaba

b) 1- literowe:

aL

 

G , bo a nie da się wyprowadzić z S bL

 

G , bo a nie da się wyprowadzić z S 2- literowe

ba,abL

 

G ; aaL

 

G

3- literowe

baa, aab, aba L

 

G 4 – literowe

baab L

 

G ; aabaL

 

G

(3)

Zadanie 2

Dana jest gramatyka bezkontekstowa G

,N,S,P

, gdzie

 

a,b

N

S,A,B

P: SSS|AB AAS|AA|a BSB|BB|b

Za pomocą algorytmu CYK sprawdzić, czy słowo x = aabbab jest generowane przez tę gramatykę. Jeżeli tak, wyznaczyć co najmniej jedno wyprowadzenie tego słowa i odpowiadające temu wyprowadzeniu drzewo wyprowadzeń.

Rozwiązanie.

Aby zbadać, czy słowo x = aabbab jest generowane przez gramatykę, stosujemy algorytm CYK i tworzymy tabelę:

j  i

1 2 3 4 5 6

x a a b b a b

1 A A B B A B

2 A S B  S

3 A,S S,B  

4 A,S,B  

5 A S

6 A,S

Zbiór X16

 

A,S . Oznacza to, że słowo x = aabbab można wyprowadzić w tej gramatyce ze zmiennej A lub S . Język generowany przez gramatykę tworzą słowa, które można

wyprowadzić z S. Jak widać SX16, zatem słowo xL

 

G . Wyprowadzenie słowa x w G:

A B A b A A b A ab A S ab aS ab S (1,5) (6,1) (1,5) (1,4) (5,1) (1,4) (1,1) (2,3) (2,3)

aabbab ab

B aaB ab

aaB ab

B

aA   

 (2,1) (3,2) (3,2) (3,1) (4,1)

(4)

Zadanie 3

Dana jest gramatyka bezkontekstowa G

,N,S,P

, gdzie

 

a,b

N

S,A,B

P: SSS|BB ASA|BS|a BBA|AA|b

Za pomocą algorytmu CYK sprawdzić, czy słowo x = aabbaba jest generowane przez tę gramatykę. Jeżeli tak, wyznaczyć co najmniej jedno wyprowadzenie tego słowa i odpowiadające temu wyprowadzeniu drzewo wyprowadzeń.

Rozwiązanie.

Aby zbadać, czy słowo x = aabbaba jest generowane przez gramatykę, stosujemy algorytm CYK i tworzymy tabelę:

j  i

1 2 3 4 5 6 7

x

a a b b a b a

1 A A B B A B A

2 B  S B  B

3 S  S,A S 

4 A B A S,A

5 A,B B,S A,B

6 B,S B,S,A

7 B,S,A

Zbiór X17

B,A,S

. Oznacza to, że słowo x = aabbaba można wyprowadzić w tej gramatyce ze zmiennej B lub A lub S . Język generowany przez gramatykę tworzą słowa, które można wyprowadzić z S. Jak widać SX17, zatem słowo xL

 

G .

Wyprowadzenie słowa x w G:

) 1 , 7 ( ) 3 , 4 ( )

4 , 4 ( )

4 , 4 ( ) 1 , 3 ( )

5 , 3 ( )

5 , 3 ( ) 1 , 2 ( ) 1 , 1 ( ) 5 , 3 ( ) 2 , 1

( B A A B aaB aaB A aabA aabS a

B

S     

aabS(4,3)aaabB(4,2)B(6,1)aaabB(4,2)baaabB(4,1)A(5,1)baaabbaba

Cytaty

Powiązane dokumenty

podłoża w procesie sputteringu magnetronowego o częstotliwości radiowej [37]. Z drugiej strony udowodniono [38] , iż wygrzewanie uzyskanych warstw ITO w temperaturach

[r]

E.E., Ham I.: A heuristic algorithm for the m-machine, n-job flow-shop

Zadanie dostępne są to zadania, które już dotarły do maszyny i jeszcze nie

Dodatkowe szybkie LB dla powstających węzłów Zachłanna strategia przeglądania

The paper is organized as follow: Section II describes the manufactured photoconductive antenna prototypes; Section III describes the measurement setups used for the power

Proces Markowa jest ciągły, jeśli prawdopodobieństwo oddalenia się od punktu początkowego na skończoną odległość nie rośnie zbyt szybko w czasie (czyli w przebiegu czasowym

Der Tugendbegriff, der hier verwendet wird, steht nicht nur im Zusammenhang mit Kants Morallehre, sondern auch mit der christlichen Religiosität, in der die Moral, die Näch-