CYK算法

✍ dations ◷ 2025-06-09 20:54: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 产生。

相关

  • 环境科学环境科学为跨学科领域专业,既包含像物理,化学,生物,地质学,地理,资源技术和工程等的物理科学,也含有像资源管理和保护,人口统计学,经济学,政治和伦理学等社会科学。环境科学包含了影响
  • 瓦特瓦特(符号:W)是国际单位制的功率单位。瓦特的定义是1焦耳/秒(1 J/s),即每秒钟转换,使用或耗散的(以安培为量度的)能量的速率。日常生活中更常用千瓦作为单位,1千瓦=1000瓦特,千瓦又可合
  • 克莱顿县克莱顿县(Clayton County, Georgia)是美国乔治亚州西北部的一个县。面积374平方公里。根据美国2000年人口普查,共有人口236,517人,2005年增至267,966人。县治琼斯伯勒 (Jonesbor
  • 萨瓦省萨瓦省(法文:Savoie)是法国奥弗涅-罗讷-阿尔卑斯大区所辖的省份。该省编号为73。为历史上萨伏依的一部分。5个海外省及大区
  • 欧盟人口第二多的成员欧洲联盟国家人口列表由欧洲统计局和政府等提供之各国家人口数据排序。
  • EP-3侦察机EP-3A/B猎户式(EP-3A/B Orion)与EP-3E白羊I/II型(EP-3E Aries I/II)是一系列主要由美国海军所操作,配备有涡轮推进引擎的信号侦察机。它的机身设计取自同厂的P-3“猎户”海上巡逻
  • 巴生谷坐标:2°40′54″N 101°39′41″E / 2.6817337°N 101.6612934°E / 2.6817337; 101.6612934巴生谷(马来语:Lembah Klang)即巴生河流域,是马来西亚境内的一片地理区域,由吉隆坡与
  • 国家科学基金国家科学基金会(英语:National Science Foundation,缩写为NSF),全称是美国国家自然科学基金会,是一个美国政府独立机构,由美国国会于1950年创立。该机构支持除医学领域外的科学和工
  • 家宴《家宴》(丹麦语:Festen)是丹麦导演汤玛斯·凡提柏格于1998年发行的电影作品,是他第二部剧情长片,故事灵感来自于凡提柏格听到的一个广播节目。该片荣获戛纳电影节评审团奖,且在
  • 马甲 (网络用语)马甲(英语:sockpuppet),指在网络上的讨论区、BBS等地,一个人同时拥有的其他的用户账号。中国大陆网民通常称之为马甲或者小号;台湾称分身账号、小账号或副帐;港澳称分身;中文用户有