CYK算法

✍ dations ◷ 2025-02-23 14:24:20 #算法,形式语言,分析算法

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

相关

  • MM00-M25 关节病M30-M36 全身性结缔组织疾患M40-M54 背部病M60-M79 软组织疾患M80-M94 骨病和软骨病M95-M99 肌肉骨骼系统和结缔组织的其他疾患
  • 西澳西澳大利亚州(英语:Western Australia,缩写:WA),简称西澳,是澳大利亚联邦的一个州,位于澳大利亚西部,今划分为142个地方政府区域,幅员广达2,525,500平方公里,占全国总面积1/3,是面积最广
  • 香肠香肠(英语:Sausage)是一个非常古老的食物生产和肉食保存技术,指将动物的血肉或是凝固的内脏,搅碎成泥状,再灌入肠衣制作而成。在中国一些地区,“香肠”专指腊肠。在闽南,广东地区,又
  • 玛丽·居礼玛丽亚·斯克沃多夫斯卡-居里(波兰语:Maria Skłodowska-Curie,1867年11月7日-1934年7月4日),通常称为玛丽·居里(法语:Marie Curie)或居里夫人(Madame Curie),波兰裔法国籍物理学家、化
  • 司提反斯德望(新教汉译作士提反或司提反;拉丁语:Sanctus Stephanus)是基督教首位殉道者。西方教会定其庆日于12月26日。耶路撒冷说希腊语的犹太人抱怨在每天所分发的粮食方面,说希伯来
  • 拉里·米勒拉里·米勒(英语:Larry Miller,1953年10月15日-)是美国的一位演员。他出生在纽约州谷溪,是一位犹太人。
  • 埃德温·贝利·埃利奥特埃德温·贝利·埃利奥特(Edwin Bailey Elliott)皇家学会院士(1851年6月1日-1937年7月21日,s生于并卒于英国牛津)致力于研究不变量理论的数学家。1891年,他当选为皇家学会研究员。
  • 阮惟阮惟�(越南语:Nguyễn Duy Tích/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H","M
  • 双酚AF双酚AF(英语:Bisphenol AF,缩写BPAF)是一种含氟双酚类化合物,和双酚A(BPA)相比,其两个甲基基团被替换为三氟甲基基团。BPA能结合人雌激素相关受体γ(ERR-γ),BPAF不结合ERR-γ,但能结合
  • 贝碧嘉贝碧嘉(葡萄牙语:Bebinca)是一种牛奶布丁,为果阿传统甜品,也在同为前葡萄牙殖民地的澳门流行,可于澳门的葡国餐厅找到。制作材料包括面粉、糖、酥油、蛋黄和椰奶,烘烤成多层。