CYK算法

✍ dations ◷ 2025-08-21 06:10:32 #算法,形式语言,分析算法

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

相关

  • 弗朗索瓦·库普兰弗朗索瓦·库普兰(法语:François Couperin,1668年11月10日-1733年9月12日),法国著名的音乐家族库普兰家族成员,作曲家路易·库普兰的侄子,巴洛克时期著名作曲家,也是最伟大的羽管键
  • 苏格兰英镑纸币苏格兰英镑纸币(Banknotes of Scotland)是指在苏格兰流通的英镑纸币。目前有三家银行有权在苏格兰发行英镑纸币,包括苏格兰银行、皇家苏格兰银行、克莱兹戴尔银行。苏格兰英镑
  • INF2· cytoplasm · endoplasmic reticulum· actin cytoskeleton organization · regulation of cellular component size逆霍明2(INF2、Inverted formin-2)是在人体内由IN
  • 革命德意志1848-1849年革命(德语:Deutsche Revolution 1848/1849),其最初阶段亦被称作三月革命(德语:Märzrevolution),原本是在1848年于诸多欧洲国家爆发的大规模革命的一部分。它们是
  • 水肺潜水水肺潜水(英语:Self-Contained Underwater Breathing Apparatus,缩写:SCUBA),指潜水员自行携带水下呼吸系统所进行的潜水活动,其中有开放式(open-circuit)呼吸系统及封闭式(closed-cir
  • 雅库茨克雅库茨克(俄语:Яку́тск;雅库特语:Дьокуускай)是俄罗斯萨哈共和国首府,位于勒拿河西岸,2010年人口269,601。雅库茨克建立于1632年,当时还只是个哥萨克人构筑的边防
  • 等级制度等级制度或称阶级制度(hierarchy)是把所有人或团体分等级的(scalar)制度,在这种制度下各个等级拥有不平等的权利,上层等级权利大,下层等级权利小;而且往往下层等级人数众多,受到人
  • 完美丈夫 (印尼电影)《完美丈夫》(英文:The Perfect Husband),2018年发行的印尼爱情电影。Ayla是个青春洋溢的女高中生,并热爱着摇滚音乐,而她的男友Aldo就是个摇滚乐手。有天一个自称Arsen的机师,闯进
  • 意动意动是指任何自然倾向,冲动,努力或有方向性的努力。 意动是是现代心理学描述的三个部门之一,除了意动,另有情感与认知。大脑的认知部分与智力,情感与情绪相关。认知与智力相关,情
  • 赝快度在实验粒子物理学当中,赝快度(pseudorapidity, η {\displaystyle \eta } 。这种情况下,粒子的能量几乎只来自动量,类似于光子。快度在高能