Cocke-Younger-Kasami algoritme

I teoretisk datalogi og sprogteori er algoritmen Cocke-Younger-Kasami ( CYK ) en algoritme til analyse af kontekstfri grammatik , udgivet af Itiroo Sakai i 1961 for at afgøre, om et ord genereres af en grammatik, og i bekræftende fald at give et syntaks træ . Algoritmen er opkaldt efter de tre personer, der uafhængigt genopdagede den, J. Cocke, hvis artikel aldrig blev offentliggjort, DH Younger og T. Kasami, der offentliggjorde en intern rapport hos US-AirForce.

Algoritmen fungerer ved bottom-up-analyse og anvender dynamisk programmering . Algoritmen antager, at grammatikken er i Chomsky normal form . Denne begrænsning er ikke et problem, da enhver ikke-kontekstuel grammatik indrømmer en ækvivalent Chomsky normal form grammatik. Den beregning tid af denne algoritme er i , hvor er længden af ordet , der skal analyseres, og er på størrelse med grammatikken.

Princip

Uden tab af generalitet antager vi, at grammatikken ikke genererer det tomme ord . Vi kan således antage, at grammatikken er i Chomsky-normalform, og at den ikke indeholder nogen formregler (vi taler om korrekt grammatik, se ikke-kontekstuel grammatik ).

Eller et ord uden ord at analysere. Algoritmen anvender dynamisk programmering. Delproblemerne er: er det sæt ikke-terminaler, der genererer ordet for alle sådan, hvor hvor længden af ​​ordet er .

Vi kan beregne sætene ved induktion på .

Figuren til højre viser basissagen og den rekursive sag.

Vi udleder en dynamisk programmeringsalgoritme, der beregner alle sætene . Ordet genereres af grammatikken, hvis og kun hvis det er i, hvor grammatikens aksiom er og er længden af ​​ordet .


Eksempel

Overvej følgende grammatik i Chomsky normal form:


hvor sættet af ikke-terminaler er og sættet af terminaler (bogstaver) er . Her kaldes "hun" et bogstav (selvom det er et ord), og en sætning som "hun spiser fisk med en gaffel" kaldes et ord.

Lad os nu analysere ordet, som er sætningen "hun spiser fisk med en gaffel" med CYK-algoritmen. I den følgende tabel angiver vi værdierne for  :

P [1, 7] = {S}
P [1, 6] = ø P [2, 7] = {GV}
P [1, 5] = ø P [2, 6] = ø P [3, 7] = ø
P [1, 4] = S P [2, 5] = ø P [3, 6] = ø P [4, 7] = ø
P [1, 3] = ø P [2, 4] = {GV} P [3, 5] = ø P [4, 6] = ø P [5, 7] = {C}
P [1, 2] = {S} P [2, 3] = ø P [3, 4] = {GN} P [4, 5] = ø P [5, 6] = ø P [6, 7] = {GN}
P [1, 1] = {GN} P [2, 2] = {V, GV} P [3, 3] = {Det} P [4, 4] = {N} P [5, 5] = {P} P [6, 6] = {Det} P [7, 7] = {N}
det spise af fisk med -en gaffel

Ordet "hun spiser fisk med en gaffel" genkendes, fordi aksiomet er i .

Pseudokode

Her er en pseudokode inspireret af analysen i det foregående afsnit:

Pour i = 1 à  := ensemble des non-terminaux tel que est une règle de la grammaire Pour d = 1 à Pour i = 1 à -d j := i+d  := ensemble des non-terminaux tels qu'il existe une règle et un entier tels que est dans et est dans Retourne oui si est dans  ; non sinon.

Vi kan give en pseudokode, der viser den kubiske kompleksitet ved at  :

Pour i = 1 à  := ensemble des non-terminaux tel que est une règle de la grammaire Pour d = 1 à Pour i = 1 à -d j := i+d  := ensemble vide Pour tout k = i à j-1 Pour tout est dans et est dans Pour tout non-terminal tel que est une règle Ajouter à Retourne oui si est dans  ; non sinon.

Diskussioner

Vægtede grammatikker

Hvis grammatikken vægtes , gør CYK-algoritmen det muligt at generere det tungeste træ, der genererer sætningen.

Interesse for Chomskys normale formatering

Begrænsningen af ​​at have en grammatik i Chomskys normale form er primært æstetisk, og Lange og Leiß diskuterer en variant af CYK-algoritmen med svagere begrænsninger.

Forbindelse med matrixmultiplikation

CYK-algoritmen er i , hvor er længden af ​​ordet, der skal analyseres, og er størrelsen på Chomskys normale formgrammatik. Valiant giver en udvidelse af CYK algoritme ved at tilpasse Strassen 's algoritme til de matricer .

Ved hjælp af Coppersmith-Winograd-algoritmen til at multiplicere matricerne når vi en asymptotisk kompleksitet af . Men konstanten skjult i den store O-notation betyder, at algoritmen ikke har nogen interesse i praksis. Afhængigheden af ​​en effektiv algoritme til at multiplicere matricer kan ikke undgås i følgende forstand: Lee viste, at man kan opbygge en algoritme til at multiplicere 0-1 matricer af størrelse i tid fra en analysator til ikke-kontekstuelle grammatikker i .

Demonstrationer

Noter og referencer

  1. (i) Itiroo Sakai, "Syntaks i universel oversættelse" i 1961 International Conference on maskinoversættelse af sprog og Anvendt Sprog Analyse, Teddington, England , vol.  II, London, Hendes Majestæts Papir,1962, s.  593-608.
  2. (i) Dick Grune, teknisk Parsing: en praktisk vejledning , New York, Springer,2008, 2 nd  ed. ( ISBN  978-0-387-20248-8 ) , s.  579.
  3. Ifølge Hopcroft, Motwani og Ullman er J. Cockes arbejde, selvom det er blevet cirkuleret privat, aldrig blevet offentliggjort.
  4. DH Yngre, “  Anerkendelse og parsing af kontekstfrie sprog i tid n 3  ”, Information and Control , bind.  10, nr .  21967, s.  189-208.
  5. T. Kasami, “  En effektiv algoritme til anerkendelse og syntaksanalyse for kontekstfrie sprog  ”, Science Report AFCRL-65-758 , Bedford, Mass., Air Force Cambridge Research Laboratory,1965.
  6. (in) Sipser, Michael, Introduction to Theory of Computation (1. udgave) ,1997( ISBN  978-0-534-94728-6 ).
  7. Víctor M. Jiménez og Andrés Marzal, ”  Beregning af de N bedste parse-træer til vægtede og stokastiske kontekstfrie grammatikker  ”, fremskridt inden for mønstergenkendelse , Springer Science + Business Media,2000, s.  183-192 ( ISBN  978-3-540-67946-2 , ISSN  0302-9743 , DOI  10.1007 / 3-540-44522-6_19 , læs online ).
  8. Xian Chen, "  Vægtet-CYK-probabilistisk-kontekst-fri-grammatik,  "GitHub ,marts 2015.
  9. Martin Lange, Hans Leiss, ”  At CNF eller ikke at CNF? En effektiv og alligevel præsentabel version af CYK-algoritmen  ”, Informatica Didactica 8, 2009.
  10. “  Generel kontekstfri anerkendelse på mindre end kubisk tid  ”www.sciencedirect.com ( DOI  10.1016 / S0022-0000 (75) 80046-8 , adgang 29. december 2015 ) .
  11. Don Coppersmith og Shmuel Winograd . Matrixmultiplikation via aritmetiske progressioner. Proceedings of the Nineteenth Annual ACM Symposium on Theory of Computing , side 1–6, 1987.
  12. (i) Donald Knuth, The Art of Computer Programming Bind 2: Seminumerical Algoritmer (3rd ed.). Addison-Wesley Professional. s. 501. , Reading (Mass.), Addison-Wesley, 762  s. ( ISBN  978-0-201-89684-8 , note BNF n o  FRBNF37532795 ).
  13. Lillian Lee , "  Hurtig kontekstfri grammatik-parsing kræver hurtig boolsk matrixmultiplikation,  " J. ACM , bind.  49,1 st januar 2002, s.  1–15 ( ISSN  0004-5411 , DOI  10.1145 / 505241.505242 , læst online , adgang 29. december 2015 ).

Bibliografi

Algoritmen eksponeres i de teoretiske værker om formelle sprog.

Se også

<img src="https://fr.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1" alt="" title="" width="1" height="1" style="border: none; position: absolute;">