CYK算法

✍ dations ◷ 2025-10-12 06:19:25 #算法,形式语言,分析算法

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

相关

  • 异营异营生物(英语:heterotroph)指不能直接以无机物或有机物,必须摄取现成的养分来维持生存机能的生物。异营生物包括捕食、寄生和腐生三种。 异营性动物细胞需要的物质为水和矿物质
  • 温内格拉内布(Raneb)是古埃及第二王朝的一位法老。埃及祭司曼涅托在其所编纂的王表中称其为卡伊靠斯(Kaiechos),并认为其统治了埃及39年。但是,从已经出土的拉内布时期的文物中,并未找到
  • 白斑角鲨白斑角鲨(学名:Squalus acanthias),又名棘角鲨或萨氏角鲨,软骨鱼纲角鲨目角鲨科的其中一种,是一种很著名的角鲨属成员。它们的特征是在两个背鳍上都有鳍棘,且没有臀鳍。它们分布世
  • 屋大维奥古斯都(拉丁语:Imperator Caesar Divi filius(英语:Divi filius) Augustus,前63年9月23日-14年8月19日),原名盖乌斯·屋大维·图里努斯(Gaius Octavius Thurinus),是罗马帝国的开国君
  • 张雁张雁(1918年-1997年11月4日),原名张克刚,出身陕西兴平,中国电影演员。1918年,张克刚出生于陕西省兴平县南位乡南韩村(今兴平市南位镇南韩村)。后来,张雁在西安就读中学,并曾参加西安民
  • 新政治家(2016)《新政治家》(New Statesman)是在英国伦敦出版的政治和文化杂志。在1913年4月12日成为政治和文学周刊,它与西德尼和比阿特丽斯·韦伯以及费边社的其他主要成员有联系。他
  • 前三国时代前三国时代 (朝鲜语:원삼국시대)是公元前2世纪后朝鲜三国时代之前的朝鲜历史时期。这一时期的主要特点是铁器的广泛生产和运用。由于铁的应用,使得更加坚硬和锐利的武器与农业工
  • 奥古斯特王子尼古拉斯·奥古斯特(Nikolaus August,1831年8月24日-1873年3月4日),是瑞典贝尔纳多特王朝国王奥斯卡一世之第四子,亦最小之儿子,他于1849年进入乌普萨拉大学学习,于1851年加入瑞典皇
  • PowerHAPowerHA是IBM为其生产的P系列unix服务器产品推出的集群软件,主要应用于AIX操作系统上早期的版本名字是hacmp,相关内容参考hacmp, HACMP5.5版本开始,hacmp名称更改为PowerHA最新
  • 自传数自传数(英语:Autobiographical number)为满足以下定义,不超过10位数的自然数:……依此类推。例如1210第1至4位数分别为1、2、1和0,而此数字有1个0,2个1和1个2,恰好对应,因此1210为自