CYK算法

✍ dations ◷ 2025-11-26 10:22:02 #算法,形式语言,分析算法

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

相关

  • MMR疫苗争议麻腮风三联疫苗 (MMR Vaccine),是给幼儿接种以预防麻疹、腮腺炎、风疹的疫苗。1998年以来,人们就接种这种疫苗会不会导致儿童自闭症等疾病产生了接种疫苗争议。2010年2月英国
  • 阿斯旺阿斯旺(阿拉伯语:أسوان‎),埃及南部城市,阿斯旺省首府,位于尼罗河东岸,人口约20万,著名古城、旅游景点和贸易中心。阿斯旺是世界上最干燥的地方之一,自2006年5月13日以来,阿斯旺
  • 卡瑞托咖啡古罗马 · 中世纪 · 文艺复兴 · 现代威尼斯和威尼托 · 托斯卡尼 · 西西里 · 维琴察 · 罗马 (罗马饮品) · 那不勒斯面包 · 干酪 (PDO) · 油酥糕点 ·
  • 欧玛尔·海亚姆欧玛尔·海亚姆(波斯文:عمر خیام,拉丁化:Omar Khayyám,又译莪默·伽亚谟、奥马海亚姆,1048年5月18日-1131年12月4日),波斯诗人、天文学家、数学家。海亚姆意为“天幕制造者”
  • 昌国县昌国县是曾经存在的县。现今有如下地区曾经使用“昌国县”作为地名。
  • 南宫适四配 颜回 · 孟子 · 曾参 · 孔伋日本 藤原惺窝 · 林罗山 · 室鸠巢 新井白石 · 雨森芳洲朝鲜 薛聪 · 权近 · 吉再 · 安珦 · 李穑 李滉 · 王仁 · 李
  • 大青属大青属(学名:)或海州常山属是唇形目唇形科的植物,本属在1990年代之前,传统上被归类到马鞭草科。多数种类是重要的草药,其特殊的花形态亦是常见的园艺品种。灌木或小乔木,少见亚灌木
  • 姜成林姜成林(1942年-),是一位中国微生物学家。云南省昭通市威信县大山乡人,父亲姜荣泰,母亲杨传真,妻子唐岫瑛。1960年工作于中国科学院昆明植物研究所农抗组,于1978年向云南省政府建议成
  • 尤西·耶斯凯莱伊宁尤西·耶斯凯莱伊宁(芬兰语:Jussi Jääskeläinen,1975年4月19日-)是芬兰职业足球运动员。自1997年加盟伯顿以来,他共效力15个年头,更成为英超史上上场次数最多的外籍球员。2013/1
  • 老丘老丘是中国夏朝中晚期的都城,其真实性有待于考古发现,一般认为其故址在今天的河南省开封市祥符区杜良乡国都里村一带。夏朝第七位君主杼将都城从“原”迁至老丘,到第十三位君主