CYK算法

✍ dations ◷ 2025-11-25 11:50:55 #算法,形式语言,分析算法

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

相关

  • 二氧化硫二氧化硫,(英语:sulphur dioxide , sulfur dioxide)化学式是SO2。是最常见的硫氧化物。无色气体,有强烈刺激性气味。大气主要污染物之一。火山爆发时会喷出该气体,在许多工业过程
  • 青蒿琥酯青蒿琥酯(英语:Artesunate),是用于治疗疟疾的青蒿素类药物之一。于1977由桂林制药厂(现已更名为桂林南药股份有限公司)工程师刘旭合成。青蒿琥酯是青蒿素的半合成衍生物,可溶于水,因
  • 核酶核酶(英语:ribozyme,又译核糖酶),又称核酸类酶、酶RNA、类酶RNA,是具有催化特定生物化学反应的功能的RNA分子,类似于蛋白质中的酶。在核酶的发现之前,酶,其被定义为催化作用的蛋白质,
  • 中世纪的意大利中世纪的意大利指的是公元476年西罗马帝国灭亡至文艺复兴前期这一期间内的意大利。在承受了长时间国内腐朽的政治、经济问题侵蚀,以及民族大迁徙所带来的频繁的外蛮入侵洗劫
  • 钴(III)酸锂锂钴氧化物,也称钴酸锂,化学式为LiCoO2,是一种无机化合物,一般使用作锂离子电池的正电极材料。LiCoO2的结构巳借助X光衍射、电子显微镜和中子粉末衍射等技术研究清楚。锂原子层
  • 维尔纳阿尔弗雷德·维尔纳(德语:Alfred Werner,1866年12月12日-1919年11月15日),是一位瑞士化学家。曾经是苏黎世联邦理工学院的学生,也是苏黎世大学的教授。1913年,以提出过渡金属复合物
  • 维多利亚艺术中心维多利亚艺术中心(英语:The Arts Centre )是一系列位于澳洲墨尔本的艺术展览及演艺场馆,由信托所经营管理。艺术中心始建于1973年,于1982年完工,1984年正式对外开放。其场所范围包
  • 卵巢浆液性囊腺瘤卵巢浆液性囊腺瘤(英语:Ovarian serous cystadenoma),有时候称之为浆液性囊腺瘤(英语:serous cystadenoma),是一类非常常见的良性卵巢肿瘤。卵巢浆液性囊腺瘤和胰腺浆液性囊腺瘤(英语
  • 剪应力剪应力(shear stress)是应力的一种,定义为单位面积上所承受的力,且力的方向与受力面的法线方向正交。公式记为即 i {\displaystyle i} 不等
  • 古典元素元素或古典元素(英语:Classical elements),在古典哲学中,是一种构成世界上所有物质的最基本实体,或是能量。在历史上,许多不同的民族,都曾经建构出属于他们自己的元素思想,最著名的代