CYK算法

✍ dations ◷ 2025-11-03 20:17:14 #算法,形式语言,分析算法

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

相关

  • 一一对应数学中,一个由集合 X {\displaystyle X} 映射至集合 Y {\displaystyle Y} 的函数,若
  • 川崎氏病川崎氏病(英语:Kawasaki disease),又称为川崎病或黏膜皮肤淋巴腺综合征(英语:mucocutaneous lymph node syndrome),是一种全身血管发炎的疾病。最常见的症状为无法用常规药物治疗的
  • 温标温度标准,简称温标,是以量化数值,配以温度单位来表示温度的方法。它也是温度计进行刻度的根据。只要以物理方法使两个不同的温度在环境中产生,并测量再予以不同数值。即为温标。
  • 地形地形,地貌形态(体),是地球(或是其他星球)表面(地表)各种局部的空间实体状态,亦可称为一个以海平面为基础的相对独立的地表起伏单元,比如高山、丘陵、高原、盆地等。地貌形态可以分为原
  • 日本列岛日本列岛(日语:日本列島/にほんれっとう、にっぽんれっとう Nihon rettō, Nippon rettō ?)是位于欧亚板块东北部的东亚地域海岸、太平洋西北部日本海沟附近隆起的群岛,大致从
  • 奥地利人口奥地利是一个单一民族国家,但过去四十年的移民改变了这个国家的人口结构。据2001年人口普查,88.6%的奥地利人以德语为母语,11.4%的人则使用使用少数族裔语言作为母语。这些人可
  • 博伊西博伊西国家森林(英语:Boise National Forest)是美国的一处国家森林,1908年7月1日建立,位处爱达荷州,占地面积约2,203,703英亩(8,918.07平方千米),最近的城市为博伊西。
  • 女歌手金奖“叱咤乐坛女歌手”是叱咤乐坛流行榜颁奖典礼每年的重点奖项,第一届即1988年起设立,至今共颁发93座,分为金、银、铜三个名次。此奖项赛果由全年叱咤903的播放率作依据,最后得出
  • 莱克伍德莱克伍德 (Lakewood, Colorado)是美国科罗拉多州的一个城市,位于州府丹佛西南。行政上属于杰佛逊县。面积110.0平方公里,2006年人口140,024人,是该州第四大城市。1969年设市。历
  • 杜英科百合木属 杜英属 宽药花属 猴欢喜属 杜英科共包含12属约605种,主要分布在热带和亚热带地区,亚洲、美洲、澳洲和马达加斯加岛都有分布。中国有3属51种,主要分布在南方各