CYK算法

✍ dations ◷ 2025-12-10 21:18:39 #算法,形式语言,分析算法

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

相关

  • 路易斯·阿姆斯特朗路易斯·阿姆斯特朗(英语:Louis Armstrong,1901年8月4日-1971年7月6日),美国爵士乐音乐家。阿姆斯特朗是20世纪最著名的爵士乐音乐家之一,被称为“爵士乐之父”。他以超凡的个人魅
  • 芝山岩学堂台北市士林区士林国民小学(英语:Taipei Municipal Shilin Elementary School),是一所位在台北市士林区大东路的公立国民小学。该学校之前身为日本人士于1895年创办之芝山岩学堂
  • Walter Lewin瓦尔特·亨德里克·古斯塔夫·列文(英语:Walter Hendrik Gustav Lewin,1936年1月29日-),荷兰裔美国人,天体物理学家,曾在麻省理工学院担任物理教授。列文在天文物理学上的贡献包括了
  • 大日本住友制药大日本住友制药股份有限公司(日语:大日本住友製薬株式会社、英语:Sumitomo Dainippon Pharma Co., Ltd.)是日本一家制药公司。其为住友化学所属。前身为1897年成立的大阪制薬株
  • N1N1运载火箭是苏联研发的用来将苏联宇航员送到月球的火箭,也被西方人称为 G-1e 或 SL-15 。N1就是俄语носитель(运载器)的缩写。N1运载火箭研发工作比土星五号晚,不仅资
  • 科洛·莫瑞兹科洛·格雷丝·莫瑞兹 (英语:Chloë Grace Moretz,1997年2月10日-),美国女演员,因主演2010年上映的动作电影《海扁王》(Kick-Ass)中的超杀女(Hit Girl),与在奥斯卡奖得奖电影《雨果》(Hug
  • 大卫·哈勒代大卫·哈勒代(英语:David Halliday,1916年3月3日-2010年4月2日)是一位美国的物理学家,以其物理教科书著作《物理学》与《基础物理》(Fundamentals of Physics)成名。哈勒代与罗伯特
  • 宋光宗子:女:宋光宗赵惇(1147年9月30日-1200年9月17日),南宋第三位皇帝(1189年2月18日—1194年7月24日在位),宋孝宗第三子。42岁时受孝宗禅位而登基(亦是最老即位的宋帝),由于皇后李凤娘的挑拨
  • 应答机应答机(英语:Transponder),又称询答机,有时简称XPDR、XPNDR、TPDR或TP,是一部能在收到无线电询问信号时自动做出回应的电子设备。在航空领域中,应答机主要作为协助识别航空交通管制
  • 龙泉关镇龙泉关镇,是中华人民共和国河北省保定市阜平县下辖的一个乡镇级行政单位。龙泉关镇下辖以下地区:龙泉关村、顾家台村、印钞石村、西刘庄村、黑崖沟村、八里庄村、平石头村、北