CYK算法

✍ dations ◷ 2025-10-14 00:37:34 #算法,形式语言,分析算法

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

相关

  • 芬地湾芬迪湾(英语:Bay of Fundy,法语:Baie de Fundy),大西洋西岸主要海湾之一,位于加拿大新不伦瑞克省和新斯科舍省之间,三面为陆地包围,仅西南与缅因湾连通,两者以大马南岛为界。芬迪湾以
  • 日本电气日本电气(日语:日本電気/にっぽんでんき nippon denki;英文译名:NEC Corporation,前称Nippon Electric Company, Limited),简称日电、NEC,中文又译为恩益禧(台湾使用),是日本一家跨国信
  • 办公楼办公室(office),又称写字楼,是一种让人们在其中办公(工作)的场所,通常是房间的形态,但随着电脑与网络的发达,也渐渐出现不需要实体空间的虚拟办公室(Virtual Office)。内部由办公室所组
  • 金字碑金字碑,位于新北市瑞芳区三貂岭古道内,为清台湾镇总兵刘明灯于穆宗同治六年(1867年)冬所题。于1985年8月19日公告为国家三级古迹,现为新北市市定古迹。因年代已久,碑文的字迹已有
  • 哈萨克斯坦经济哈萨克经济,是指中亚国家哈萨克之经济。哈萨克位处之中亚,蕴藏了大量的天然资源,因此哈萨克的经济是以石油、天然气、采矿、煤炭为主。其自然资源丰富,目前整个哈萨克已探明总的
  • 刘国光 (经济学家)刘国光(1923年11月-),汉族,江苏南京人,中华人民共和国经济学家,中国社会科学院研究员、学部委员。曾任中国社会科学院副院长。
  • 恩克可汗恩克汗(蒙古语:.mw-parser-output .font-mong{font-family:"Menk Hawang Tig","Menk Qagan Tig","Menk Garqag Tig","Menk Har_a Tig","Menk Scnin Tig","Oyun Gurban Ulus Ti
  • 李于阳李于阳(1784年-1826年),字占亭,号即园。其祖为大和县望族,即园二岁时,随父迁居民明。他善于诗,亦能词,诗名满昆华、苍洱之间,与民明藏纲孙、额淳、强磺、楚雄池春生并称为“昆华五子”
  • 软X射线暂现源软X射线暂现源(英语:Soft X-ray transient,缩写:SXT)是某种类型的致密天体和某种类型的正常低质量天体(即质量仅为太阳质量分数的天体)。这些天体显示出低能量级别,或软X射线辐射,但
  • 汉字纹汉字纹一种以汉字图案所构成的纹饰。一般的汉字纹有回字纹、井字纹、寿字纹等,常见于建筑、服饰等各个领域。