CYK算法

✍ dations ◷ 2025-11-16 16:36:30 #算法,形式语言,分析算法

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

相关

  • 磷脂磷脂(phospholipid)也称磷脂类、磷脂质,是含有磷酸的脂类,属于复合脂。磷脂是组成生物膜的主要成分,分为甘油磷脂与鞘磷脂两大类,分别由甘油和鞘氨醇构成。磷脂为两性分子,一端为
  • 回归分析回归分析(英语:Regression Analysis)是一种统计学上分析数据的方法,目的在于了解两个或多个变量间是否相关、相关方向与强度,并建立数学模型以便观察特定变量来预测研究者感兴趣
  • 普逵酒龙舌兰酒(西班牙文:Tequila),是墨西哥产、使用龙舌兰草的心(Piña,在植物学上,指的是这种植物的鳞茎部分)为原料所制造出的含酒精饮品,属蒸馏酒一类。通常提到龙舌兰酒时,可能意指的是
  • 软腭软腭音(英语:Velar consonant、又称软腭辅音,古汉语称为:牙音)是按发音部位分类的一类辅音。发音时,舌面后部接近软颚。一些软腭化的辅音在国际音标中还可以用⟨ˠ⟩表示(就是上标
  • 沪昆高铁.mw-parser-output .RMbox{box-shadow:0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.mw-parser-output .RMinline{float:none
  • 阿尔巴尼亚国家图书馆阿尔巴尼亚国家图书馆(阿尔巴尼亚语:Biblioteka Kombëtare e Shqipërisë)是阿尔巴尼亚的国家图书馆,是该国最古老的文化机构之一。 阿尔巴尼亚国家图书馆位于该国首都地拉那,
  • 石垣牛石垣牛,是指在日本冲绳县石垣市及八重山郡(竹富町、与那国町)出产的黑毛和牛品种。在日本最南端位置的八重山诸岛,因气侯温暖畜产业特别是养牛业盛行,石垣牛因此成为当地名物。
  • 多米尼克·凯泽多米尼克·凯泽(德语:Dominik Kaiser,1988年9月16日-)是一位德国足球运动员,现效力于德乙俱乐部汉诺威,于场上司职中场。青年时期的凯泽在辗转效力过奥斯塔尔伯县多支不同的青年队
  • 阿尔弗雷德·维尔皮安埃德梅·费利克斯·阿尔弗雷德·维尔皮安(Edmé Félix Alfred Vulpian,1826年1月5日-1887年5月18日),法国医生、神经学家。他是维尔皮安-贝尔纳脊髓性肌萎缩和维尔皮安-海登海因
  • 方庄地区方庄地区是中华人民共和国北京市丰台区的一个地区办事处,同时保留方庄街道名称,其行政事务机构实行“一套人马,两块牌子”的体制,地区办事处与街道办事处合署办公。方庄地区是北