CYK算法

✍ dations ◷ 2025-11-19 17:22:18 #算法,形式语言,分析算法

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

相关

  • 终极波音747策略对宗教的批评 · 自由思想反教权主义 · 反宗教虚构宗教终极波音747策略(Ultimate Boeing 747 Gambit)是对神创论(或智能设计论)的一种反驳策略,属于归谬法。它由著名演化生物学
  • 普法尔茨普法尔茨(德语:Pfalz;英语:Palatinate)是德国历史上一种特殊领地的名字。这种领地的领主称为普法尔茨伯爵(德语:Pfalzgraf;英语:Count palatine),意思是“王权伯爵”(或译为“行宫伯爵”
  • ɪ次闭前不圆唇元音,是个介于闭前不圆唇元音/i/和半开前不圆唇元音/e/之间的不圆唇元音。英语big中的i就是这个音。汉语方言中,上海话“笔”的主元音就是这个音。普通话中,闭前不
  • 披集府披集府(泰语:จังหวัดพิจิตร,皇家转写:Changwat Phichit,泰语发音:)是泰国北方的府,其府治为披集市,面积为4,531平方公里,2014年的人口有547,543人。与她相邻的府有:彭世洛
  • 走鹃 (超级计算机)走鹃(英语:Roadrunner),是一套由IBM为美国能源部(Department of Energy)所属的国家核安全管理局(英语:National Nuclear Security Administration)(NNSA)创建的超级电脑,此电脑以新墨西
  • 磁阻磁阻,是一个与电路中的电阻类似的概念。电流总是沿着电阻最小的路径前进;磁通量总是沿着磁阻最小的路径前进。磁阻与电阻一样,都是一个标量。一个磁路中的磁阻等于“磁动势”与
  • 万瓦迪万瓦迪(Vanvadi (Sadashivgad)),是印度马哈拉施特拉邦萨塔拉县的一个城镇。总人口3944(2001年)。该地2001年总人口3944人,其中男性2048人,女性1896人;0—6岁人口423人,其中男240人,女1
  • 刀子 (瑞典团体)刀子(The Knife)是一个瑞典的电子音乐团体,其音乐实验性质浓厚,成员是一对姐弟,姐姐卡琳·德雷杰·安德森以她的尖锐独特嗓音闻名。自瑞典歌手José González在国外表演了他们
  • 吴中伟吴中伟(1918年7月20日-2000年2月4日),江苏省江阴市人,中国建筑材料与土木工程专家,中国工程院首批院士,是中国混凝土科学技术的主要奠基人之一。1918年7月出生于张家港市南沙镇七房
  • 车警官《车警官》(韩语:차형사,英语:)是一部2012年上映的韩国喜剧电影,讲述一无所有并且只懂得工作的车警官,为了破案伪装成时装模特,登上伸展台后发生的一系列搞笑故事。油腻的头发、肮脏