CYK算法

✍ dations ◷ 2025-05-19 20:59:19 #算法,形式语言,分析算法

CYK算法(英语:Cocke–Younger–Kasami algorithm,缩写为CYK algorithm)是由约翰·科克,Younger和嵩忠雄(日语:嵩忠雄)共同研究出来大约发表于1965年的一个算法,它是一个用来判定任意给定的字符串   w Σ {\displaystyle ~w\in \Sigma ^{*}} i:= 1 n V i , i := { X V   |   X σ i   i n   P } {\displaystyle V_{i,i}:=\{X\in V~|~X\rightarrow \sigma _{i}~in~P\}} l:= 1 n-1 i:= 1 n-l   V i , i + l := {\displaystyle ~V_{i,i+l}:=\varnothing } k:= i i+l-1   V i , i + l := V i , i + l { X   |   X Y Z , Y V i , k , Z V k + 1 , i + l } {\displaystyle ~V_{i,i+l}:=V_{i,i+l}\cup \{X~|~X\rightarrow YZ,Y\in V_{i,k},Z\in V_{k+1,i+l}\}} S V 1 , n {\displaystyle S\in V_{1,n}} accept reject

扩展CYK算法

简介

对于上述CYK算法作一个小改动,也就是说记住每次的k,就可以自动产生一个由该上下文无关语言的推导树。

 i:= 1  n                                V                      i            ,            i                          :=        {        X                V                           |                         X                          σ                      i                                   i        n                 P        }              {\displaystyle V_{i,i}:=\{X\in V~|~X\rightarrow \sigma _{i}~in~P\}}   l:= 1  n-1     i:= 1  n-l                                                V                      i            ,            i            +            l                          :=                      {\displaystyle ~V_{i,i+l}:=\varnothing }   k:= i  i+l-1                                                    V                      i            ,            i            +            l                          :=                  V                      i            ,            i            +            l                                  {        (        X        ,        k        )                           |                         X                Y        Z        ,        Y                          V                      i            ,            k                          ,        Z                          V                      k            +            1            ,            i            +            l                          }              {\displaystyle ~V_{i,i+l}:=V_{i,i+l}\cup \{(X,k)~|~X\rightarrow YZ,Y\in V_{i,k},Z\in V_{k+1,i+l}\}}                               k        :        (        S        ,        k        )                          V                      1            ,            n                                {\displaystyle \exists k:(S,k)\in V_{1,n}}   accept  reject

通过对下面的方法递归运行就可以生成推导树。

Tree(X,i,j):    i=j  RETURN                                        σ                      i                                {\displaystyle ~\sigma _{i}}     选择一个 k 使                     (        X        ,        k        )                          V                      i            ,            j                                {\displaystyle (X,k)\in V_{i,j}}      选择 Y 和 Z 使                     X                Y        Z        ,        Y                          V                      i            ,            k                          ,        Z                          V                      k            +            1            ,            j                                {\displaystyle X\rightarrow YZ,Y\in V_{i,k},Z\in V_{k+1,j}}      RETURN Tree(X,Tree(Y,i,k),Tree(Z,k+1,j))

例子

给定一个乔姆斯基范式的上下文无关文法   G = ( { S , A , B , C } , { a , b } , S , P ) {\displaystyle ~G=(\lbrace S,A,B,C\rbrace ,\lbrace a,b\rbrace ,S,P)} ,其中规则 P 如下:

问:字符串 bbabaa 能不能通过该文法产生?

CYK算法可以通过一个表格来运算,表中 i 列 j 行表示由哪几个非终结符可以产生字字符串 σ i σ j {\displaystyle \sigma _{i}\dots \sigma _{j}}

如果在表格的最左下角一格中有文法的开始非终结符 S ,那么字符串 bbabaa 就能由上面给出文法 G 产生。

相关

  • 港口港口是可以停泊船只和运输货物、人员的地方,位于洋、海、河流、湖泊等水体上,通常也兼具口岸的功能。港口依照其机能、用途、规模、营运单位、相关法规会区分为不同用途。以下
  • 梭织梭织(英语:Weaving)指将纱线经纬交错织成布料的方法。(台湾则称平织布或平行织品)织物(英语:Woven fabric),指通过经线与纬线交错织成的材料,如布、丝绸等,又合称为布。在某些场合下,
  • 辣椒碱辣椒素(英语:Capsaicin)又名辣素,辣椒碱,即反式-8-甲基-N-香草基-6-壬烯酰胺,分子结构式为(CH3)2CHCH=CH(CH2)4CONHCH2C6H3-4-(OH)-3-(OCH3,是辣椒属植物红辣椒的活性成分。它对包
  • 白俄罗斯语白俄罗斯语(白俄罗斯语:беларуская мова,罗马化:biełaruskaja mova),简称白俄语,是白俄罗斯的两种官方语言之一。是斯拉夫语族东斯拉夫语支的语言,音韵、文法以及词
  • 崔子忠崔子忠(?-1644年),明末画家。初名丹,字开予,后改名子忠,字道毋,号青蚓。北海(今山东莱阳)人,居顺天府。生员,曾游董其昌之门,李自成农民军攻克北京,他匿居土室饿死。他擅画人物、仕女,规摹晋
  • 尼泊尔共产党(火炬) (1999年)尼泊尔共产党(火炬)(尼泊尔语:नेपाल कम्युनिष्ट पार्टी (मसाल))是尼泊尔的一个已不存在的共产主义政党。该党成立于1999年4月6日,从尼泊尔共产党(火炬) (1
  • 开封师范高等专科学校开封师范高等专科学校位于开封市中山路北段114号,座落在潘杨湖畔,是一所专门培养初中师资的全日制师范高等学校。学校于2000年6月并入河南大学。1908年4月,在北宋紫禁城南信陵
  • 迪米特尔·多布雷夫迪米特尔·季米特洛夫·多布雷夫(保加利亚语:Димитър Димитров Добрев,转写:Dimitar Dimitrov Dobrev,1931年4月14日-2019年4月1日),保加利亚古典式摔跤运动员
  • 徐孚远《松江邦彦图》之徐孚远像徐孚远(1600年1月10日-1665年7月11日),字闇公,号复斋,直隶华亭(今上海市松江区)人,明末诗人、政治人物,举人出身。与沈光文与张煌言并称东宁三子。南京刑部右
  • 十齿花科十齿花科(学名:Dipentodontaceae),又名十萼花科,只有2属十余种,,只生长在中国西南的广西、云南、贵州和相邻的缅甸北部及印度东北。本科植物是乔木,高达11米;单叶互生,有托叶;花小,白色,