Bir dil için bir LR (1) otomatiği, karşılık gelen LR (0) otomatından ne kadar daha büyük olabilir?


10

Bir LR (0) ayrıştırıcısında, her durum, bir konumla açıklamalı üretimler olan LR (0) öğelerinden oluşan bir koleksiyondan oluşur. Bir LR (1) ayrıştırıcısında, her durum, bir konum ve bir ileriye dönük karakterle açıklamalı üretimler olan LR (1) öğelerinden oluşan bir koleksiyondan oluşur.

Bir LR (1) otomatındaki bir durum verildiğinde, her bir LR (1) öğesinden ileriye doğru belirteçlerini bırakarak oluşturulan konfigürasyon setinin, LR (0) otomatındaki bir duruma karşılık gelen bir konfigürasyon seti sağladığı bilinmektedir. Bu anlamda, bir LR (1) otomatı ile bir LR (0) otomatı arasındaki temel fark, LR (1) otomatının LR (0) otomatındaki durumların daha fazla kopyasına sahip olması ve bunların her birinin ileriye dönük olarak açıklanması bilgi. Bu nedenle, belirli bir CFG için LR (1) otomatları tipik olarak o CFG için karşılık gelen LR (0) ayrıştırıcıdan daha büyüktür.

Sorum LR (1) otomatının ne kadar büyük olabileceğidir. Varsa gramer alfabesinde, ayrı terminal semboller, ilke olarak biz, en azından bir kez, bu alt-kümesi başına LR (0) otomat her durum çoğaltmak için gerekebilir 1 (bir IR giden potansiyel olarak, ayrı terminal semboller ) orijinal LR (0) otomatından kat daha büyük otomat. LR (0) otomatındaki her bir öğenin bir dizi farklı LR (0) öğesinden oluştuğu göz önüne alındığında, daha da büyük bir patlama yaşayabiliriz.n 2 nnn2n

Bununla birlikte, LR (1) otomatının karşılık gelen LR (0) otomatından önemli ölçüde daha büyük olduğu bir gramer ailesi oluşturmak için bir yol bulamıyorum. Denediğim her şey boyutta (genellikle 2-4x civarında) mütevazı bir artışa yol açtı, ancak büyük bir patlamaya yol açan bir desen bulamıyorum.

LR (1) otomataları karşılık gelen LR (0) otomatalarından üssel olarak daha büyük olan bağlamsız gramer aileleri var mı? Ya da en kötü durumda, üstel bir patlama yapamayacağınız biliniyor mu?

Teşekkürler!


bunlar gibi problemler bazen ampirik testlere uygundur. rasgele üretilen (seçilmek üzere) patlama gösteren münferit örnekler hakkında ne düşünürdünüz? Bu tür sorularda "rastgele görünümlü" yapıların en "karmaşıklığı" sergilediği bir model vardır ...
vzn

2
En kötü durum örneklerini, en azından ortalama durum önemli ölçüde daha iyi ise, rastgele örnekleme ile bulmak genellikle zordur.
Raphael

ps 2x-4x blowup vaka örnekleri bir yerde, sonrası nec değil dahil eğer yardımcı olacaktır ...
vzn

fikir / olası satış : LR ayrıştırma permütasyonları (cstheory.se)
vzn

LALR (1) genellikle daha az sayıda devletle (Ejderha kitabının kelimelerini kullanmak için ) faydalı olmak için LR (1) gücüne yeterince yaklaşmanın bir yolu olarak sunulmaktadır . Sadece 2 ila 4'lük bir faktörün, LRR (1) 'in icadına kadar LR (1)' i engelleyici olarak reddetmek için yeterli olup olmayacağını merak ediyorum. Erişilebilir olduklarında düşünürsem, Aho & Ullman'da ayrıştırma, çeviri ve derleme teorisine ve sayıları hakkında bir şeyleri varsa Grune Ayrıştırma Tekniklerine bir göz atacağım .
AProgrammer

Yanıtlar:


2

Gramer

ST0TnaTn+1TnbTn+1TnbTn+1tnTNtN

nin tüm bölümleri mümkün olduğundan , LR (0) durumu , LR (1) otomatındaki değişkenine genişletildi. farklı bağlamlarda görünen kafa. Öte yandan, LR (0) otomatındaki durum sayısı, cinsinden doğrusaldır . Böylece, mertebesinde bir genleşme faktörü mümkündür.

TNtN˙
{ t 0t N - 1 } N 2 N / N2N{t0tN1}N2N/N

Düzenleme: Daha fazla zamanım olduğunda daha sonra kontrol etmek zorunda kalacağım, sanırım eklemek neredeyse tüm LR (0) durumlarında üstel faktör verecektir. TNT0Bu, vardiya azaltma çatışmasına yol açar.


0

Bu alt sınırlar bazen yapılandırılması güçtür ve daha derin CS teorisini uyandırabilir (örneğin durumlarda, karmaşıklık sınıfı ayrımları). Bu yazı, teorik bir yapı / daha düşük sınırlar vermiş gibi görünmektedir, örneğin, toplam semboller üzerinde daha düşük bir sınır oluşturan ve bu nedenle durumları belirten Teorem 5'te. Referanslar ayrıca diğer benzer konstrüksiyonları / alt sınırları da içerir.

Teorem 5. . olan herhangi bir LR (k) -gramarı için üreten ; burada ; terminal olmayan semboller sayı olmalıdır en az ya da bir uç-olmayan sembol A bulunacak şekilde sol taraftaki A ile farklı yapımları sayı olmalıdır en azından .k=0,1; . . . ,n-1Lnn3f(n,k)f(n,k)f(n,k)=214(nk)/n2k=0,1;...,n1Lnn3f(n,k)f(n,k)

Parsers ve LR (k) -grammars / Leunga, Wotschkeb büyüklüğünde


2(n1)/4/n22n/4/n2o dil için LR (0) otomatının boyutuna bağlı. Yani bu cevap sorulan soruya cevap vermiyor.
DW

1.1892

DW, itirazınızın hem meşru olduğunu hem de saç dökülmesine yaklaştığını düşünüyor. açıklama / ayrıntı için çok teşekkürler. esasen LR (n) 'de en kötü durum dili inşası / patlaması ile ilgili sorusunun ilgili / neredeyse doğrudan bilimsel bir cevabı / sistematik çalışmasıdır. bunlar bölgede (neredeyse?) "en iyi bilinen sonuçlar" olabilir. soruya verilen meşru bir cevap negatif olabilir, diğer bir deyişle HAYIR, ya sorgulayan (henüz gerçekte hiç sergilememiş ) ya da literatürde bulunanlardan daha iyi sonuçlar yoktur . hevesle daha kesin cevaplar bekliyorum !
vzn
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.