CYK算法

✍ dations ◷ 2025-11-24 22:48:44 #算法,形式语言,分析算法

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

相关

  • 理中丸理中丸,源于《伤寒论》。《金匮要略》中人参汤,即将本方改作汤剂。
  • 预警系统预警系统(英语:early warning system)是指所有在自然界中部署的生物性或技术性系统,透过个体或群体发布一场未来可能发生危险的消息。其目的是为了让接收消息者可预备即将发生的
  • 潮州府潮州府,明朝时设置的府,清朝沿用。府城东有广济桥。明朝洪武二年(1369年)改潮州路为府,属广东行省,治所在海阳县(县城、府治属潮州市湘桥区),辖程乡、海阳、揭阳、潮阳四县,范围大约等
  • 双耳听觉测试双耳听觉测试是用来测试听觉系统选择性专注的生理学测试,在认知心理学和神经科学中都有应用。具体来说定义如下:该测试被用于测试语音听觉的脑侧化 。标准的双耳听觉测试向被
  • 印度枣印度枣(学名:),或称滇刺枣,是原产于印度、锡兰一地的鼠李科枣属作物。台湾于1944年引进印度枣,之后在台湾培育出如“蜜枣”等品种,又称为“台湾青苹果”、“青枣”。蜜枣生长季节从
  • 王忬《沧浪亭五百名贤像》之王忬石刻像王忬(1507年-1560年),字民应,号思质,直隶太仓州(今江苏太仓市)人。嘉靖辛丑进士,累官蓟辽总督,因得罪权臣严嵩,被罗织罪名,下狱处决。隆庆初平反。有子
  • 新干线100系电力动车组新干线100系电力动车组是日本新干线所使用的列车型式之一,由前日本国有铁道、东海旅客铁道与西日本旅客铁道设计、制造、营运,是东海道新干线和山阳新干线上所行驶的第二代车
  • 密耳拉密耳拉(古希腊语:Μύρρα,字面意思为“没药”)希腊神话中的塞浦路斯公主,著名的美少年阿多尼斯的母亲。根据神话,密耳拉是塞浦路斯国王喀倪剌斯的女儿,母亲为肯刻瑞伊斯(或墨塔耳
  • 天主教萨利纳教区天主教萨利纳教区(拉丁语:Dioecesis Salinensis、英语:Roman Catholic Diocese of Salina)是美国一个罗马天主教教区,属堪萨斯城总教区。范围包括堪萨斯州西北部,教座位于萨利纳。
  • 范·埃克窃听范·埃克窃听(英语:Van Eck phreaking)是指通过侦测电子设备发出的电磁辐射进行电子窃听的方法,属于旁路攻击(Side-channel attack)的一种。众所周知,电子设备工作时都会发出电磁辐