CYK算法

✍ dations ◷ 2025-09-10 10:06:28 #算法,形式语言,分析算法

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

相关

  • 动物è§å†…文动物是多细èƒçœŸæ ¸ç”Ÿå‘½ä½“中的一大类群,统称为动物界ã
  • 度洛西汀度洛西汀(英语:Duloxetine),商品名为欣百达、奥思平,是一种5-羟色胺和去甲肾上腺素再摄取抑制剂(SNRI),由礼来研发。度洛西汀常用来治疗重性抑郁障碍、广泛性焦虑症、纤维肌痛、各种
  • 萨马拉萨马拉州(俄语:Самарская область,罗马化:Samarskaya oblast)是俄罗斯联邦主体之一,属伏尔加联邦管区。位于东欧平原东南部,伏尔加河在西部流过。面积53,600平方公
  • β受体肾上腺素能受体(英语:Adrenergic receptors,或称为肾上腺素受体)是一类接受儿茶酚胺类物质刺激的代谢型G蛋白偶联受体,所接受的儿茶酚胺类主要是去甲肾上腺素以及肾上腺素。尽管
  • 秘鲁寒流洪堡凉流,也称秘鲁寒流,南太平洋东部凉流,是一个低盐度的洋流,沿南美洲西岸从智利南端伸延至秘鲁北部,于南纬10°以北偏向西行,构成南太平洋南赤道海流的补偿流。在北端可伸延至离
  • 游禽雁形目(Anseriformes) 潜鸟目(Gaviiformes) 鸊鷉目(Podicipediformes) 鹱形目(Procellariiformes) 鹈形目(Pelecaniformes) 鸥形目(Lariformes) 企鹅目(Sphenisciformes)游
  • 翁闹翁闹(1910年2月21日-1940年11月21日),号杜夫,台湾日治时期作家,彰化社头人。1910年(明治43年),翁闹出生于台中厅武西堡关帝庙社二百六十四番地,本是陈纣、陈刘春家四男,五岁时被彰化社
  • 颜氏库蚊颜氏库蚊(学名:)是婆罗洲沙巴特有的的库蚊属物种。现仅在马来王猪笼草的捕虫笼中发现过颜氏库蚊的幼虫。所以其被认为是一个依猪笼草底内动物。
  • 三角形各中心百科全书三角形各中心百科全书(Encyclopedia of Triangle Centers,ETC)是一个在线的列表,收录了上万和三角形相关的三角形中心(英语:Triangle center)。网站现正由伊凡斯维尔大学的数学教授
  • 维克托·萨夫罗诺夫维克托·谢尔盖耶维奇·萨夫罗诺夫(俄语:Виктор Сергеевич Сафронов,1917年10月11日-1999年9月18日)是一位苏联籍俄罗斯天文学家。他提出了行星形成的低