CYK算法

✍ dations ◷ 2025-11-29 14:14:45 #算法,形式语言,分析算法

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 产生。

相关

  • 神经毒剂神经性毒剂(Nerve agent)是一类含磷的有机化学物质(有机磷酸盐),可以破坏生物神经将信息传递到器官的机制。神经性毒剂借由阻断乙酰胆碱酯酶,乙酰胆碱酯酶是降解(通过其水解活性)神
  • 月相月相,是由地球上所观看之月光形态。月球本身不发光,月球直接被太阳照射之部分反射太阳光,才可见发亮,其阴影部分是月球自己之阴暗面。根据天文学,月球环绕地球公转时,地球、月球、
  • 三峡大瀑布三峡大瀑布,又名白果树瀑布,位于湖北省宜昌市夷陵区黄花乡新坪村,高102米、宽80米,为国家4A级旅游景区。
  • 尤比克争取更好的匈牙利运动尤比克争取更好的匈牙利运动(匈牙利语:Jobbik Magyarországért Mozgalom),简称尤比克,是匈牙利民族主义政党。该党自称为“有原则、保守的和彻底爱国的基督教政党”,其“根本目
  • 姜丹书姜丹书(1885年-1962年6月8日),字敬庐,号赤石道人,斋号丹枫红叶楼,江苏溧阳人,中国画家、美术教育家。潘天寿、丰子恺、郑午昌等著名画家均出自其门下。《金濑札记续集》
  • 德氏六线风鸟 Rothschild, 1900德氏六线风鸟(英文:Duivenbode's six-wired bird of paradise)是一种极乐鸟,是阿法六线风鸟(英语:Parotia sefilata)()与华美风鸟()的属间混种。其名字是为了纪念Maar
  • 有毒涡鞭毛藻有毒涡鞭毛藻(toxic dinoflagellate)是一类会产生毒素的涡鞭毛藻(甲藻门),日本的长崎,美国的华盛顿皆有繁殖。现存的海洋藻类约有19,000-25,000种,其中有30-40种涡鞭毛藻含有毒性成
  • 名物学依据扬州大学王强的定义:名物学是研究与探讨名物得名由来、异名别称、名实关系、客体渊源流变及其文化涵义的学科。名物最早出现在一词在《周礼》,其中至少十三个职务提及此词
  • 内坑路内坑路(Neikeng Rd.)是高雄市大寮区的东西向主要道路,本道路行经大寮区内坑、拷潭连结大寮市区。为台88线高架桥下平面侧车道,编号市道188号。起端衔接六和路,末端于保福路口续接
  • 股本股本(英语:Share capital,或capital stock),又称股份,指股票投资人用现金购买到的公司股东权益。在会计上,股本等于股票面额乘上股票发行总额。发行上市时,若股票每股价格高于面额,称