Aslında, Chomsky normal formunun (CNF) CYK'yi çalıştırmasına gerek yoktur, sadece binarizasyon. Binarizasyon, ayrışmanın kübik karmaşıklığını korumak için gereklidir, ancak yalnızca terminal olmayanlar (NT) açısından gereklidir. Ancak, sadece 2 terminal olmayan ve bazı terminalleri içeren kurallarınız varsa, CYK algoritması programlamak ve açıklamak daha karmaşık hale gelir.
Söylediğiniz gibi, ikilik yapmanın birçok yolu var. Bazıları diğerlerinden daha küçük gramerler verecektir. Örneğin
X -> B C D
Y -> B C E
olarak ikilileştirilebilir
X -> Z D
Y -> Z E
Z -> B C
böylece bir kuralı çarpanlara ayırma ile kaydetme, bu hesaplamadan ve sonuç büyüklüğünden tasarruf edebilir.
Ancak diğer kurallarla, kuralların başlangıcından ziyade sonunu çarpanlarına ayırmak isteyebilirsiniz.
Rob Simmons'ın cevabından alıntı yapılan Song, Ding ve Lin'in çalışmalarına aşina değilim . Fikir ilginç ama hesaplamayı optimize etmenin diğer yollarıyla ne kadar etkili olabileceğini merak ediyorum. Çok korkmuyorum.
Mesele şu ki, sorunların sadece saf bir CKY algoritması ile ilgili analizi biraz akademik ama maliyetli bir egzersiz gibi görünmektedir, çünkü çıkmaz çözümlerin ortadan kaldırılmasını önemli ölçüde artırabilecek başka optimizasyon türleri vardır.
CYK, görünüşe göre aynı dinamik programlama modeline dayanan bir algoritma ailesindeki daha basit varyasyonlardan sadece bir tanesidir. Ben söylüyorum görünüşte bu algoritmaların en basit versiyonu dinamik programlama olarak bilinmediği için, ancak çapraz ürün olarak. 1995 yılında Lang tarafından belirtildiği gibi Bar Hillel, Perles ve Shamir (1961) nedeniyle CF dilbilgisi F dilinin ve FSA A.'nın normal dilinin kesişimini oluşturan bir CF dilbilgisi G'nin eski yapımıdır
.
Tüm grafik ayrıştırıcısı veya dinamik programlamaya dayalı genel CF ayrıştırıcıları, bu çapraz ürün yapısının "optimize edilmiş" varyantı olarak görülebilir; optimizasyon esas olarak ayrıştırıcının işe yaramaz hesaplamalarından kaçınmak için kullanılır. Ancak sorun, işe yaramaz hesaplamadan kaçınmak, daha kötü olabilecek yararlı kopyaların çoğaltılmasına neden olabileceğinden incedir.
Aşağıdan yukarıya doğru olan CKY algoritması, dilbilgisinin aksiyomundan türeyemeyen kısmi ayrıştırmaların işe yaramaz hesaplamaları üretir.
GLR ayrıştırıcısı gibi algoritmalar (kusurlu sürüm yayınlanmış olsa da, daha iyi bilinenlerden birini adlandırmak için), muhtemelen maliyetsiz, bu kadar işe yaramaz hesaplamayı önleyecek bazı yukarıdan aşağı bilgilere sahiptir. Ve işe yaramaz hesaplamalardan tasarruf etmek için farklı davranışlara sahip birçok varyant var.
Bu optimizasyon stratejileri ile ikililaştırma stratejisinin analiz edilmesi gerekmektedir. Neyin küçük bir sorun olabileceğini optimize etmenin ve daha güçlü teknikleri görmezden gelmenin anlamı nedir?
Ayrıştırma işleminin optimizasyonu aynı zamanda elde edilen ayrıştırma yapısının "tüm olasılıkları ayrıştırmalarını temsil eden" kalitesine "bağlıdır ve sıklıkla (paylaşımlı) ayrıştırma ormanı olarak adlandırılır. Bunu başka bir cevapta tartışıyorum .
Bu konuların bazıları literatürde tartışılmıştır. Örneğin, Billot ve Lang tarafından ayrıştırma stratejileri açısından ikilemenin bazı yönlerini analiz ederler.