Bir dilin düzenli olduğu nasıl kanıtlanır?


48

Orada kanıtlamak için birçok yöntem vardır bir dil düzenli değildir , ama ne bazı dil olduğunu kanıtlamak için yapmam gerekiyor ise düzenli?

Örneğin, nin düzenli olması durumunda, aşağıdaki L following ' nin de düzenli olduğunu nasıl kanıtlayabilirim ?LL

L:={wL:uv=w for uΣL and vΣ+}

Bunu kanıtlamak için kararsız sonlu bir otomat çizebilir miyim?


1
tanımında bir yazım hatası var , düzeltmek için lütfen düzenleyin. L
Ran G.

2
“Çizim” kanıt değildir; Bir NFA vermeniz ve dili kabul ettiğini kanıtlamanız gerekir.
Raphael

Bence dil tanımı hala mantıklı değil ...
hugomg

2
Yine de, eğer soru "bunun normal olduğunu kanıtlamak için bir NFA çekebilir miyim?" ise, belirli bir dil ilgisizdir. @corium, soruyu daha genel soruyu yansıtacak şekilde düzenleyebilir miyiz: "belirli bir nin düzenli olduğunu nasıl ispatlayabiliriz ?"? L
Ran G.,

Yanıtlar:


48

Evet, aşağıdakilerden herhangi birini bulabilirseniz:

Bazı diller için , L normaldir. Orada daha eşdeğer modeller , ancak yukarıdaki en yaygın olanlarıdır.LL

"Hesaplamalı" dünyanın dışında da faydalı özellikler var. ayrıca normal iseL

  • bu sonlu
  • Düzenli dillerin belirli işlemleri gerçekleştirerek onu inşa edebilir ve bu işlemler vardır düzenli diller için kapalı gibi

    • kavşak,
    • Tamamlayıcı,
    • homomorfizması,
    • ters,
    • sol veya sağ bölüm,
    • düzenli transdüksiyon

    ve dahası veya

  • L için denklik sınıflarının sayısı sonlu ise Myhill – Nerode teoremini kullanmak .L

Verilen örnekte, baz olarak (normal) bazı kordonlarımız var ve ondan türetilmiş bir L dili hakkında bir şeyler söylemek istiyoruz . İlk yaklaşımı takip ederek - L için uygun bir model oluşturun - istediğimiz L için hangi eşdeğer modeli varsayalım ; L bilinmediğinden elbette soyut kalacaktır . İkinci yaklaşımda, kullanabileceğimiz L doğrudan ve bir açıklama varmak amacıyla kendisine kapatma özelliklerini uygulamak L ' .LLLLLLL


4
Bir dilin sonlu olduğunu kanıtlamanın, düzenli olduğunu göstermek için yeterli olduğunu belirtmekte fayda var. Bu, özellikle vakalar tarafından yapıcı olmayan kanıtlarda yararlı olabilir.
Patrick87

2
Programlama dillerinde bulunan regexp'ler normal dillerden çok daha fazlasını yapabilir. “Klasik” yapılarıyla sınırlamanız gerekir.
David Lewis,

4
@DavidLewis: Bu sitede, "normal ifade" ile klasik kavramın ifade edildiğini varsayabilirsiniz.
Raphael

@DavidLewis Katılıyorum, karışıklığı önlemek için teori bağlamında "regexp" den kaçınmalıyım.
Raphael

İlk dört mermiden herhangi biri için, temsilinizin gerçekten doğru olduğunu gösteren bir ispata ihtiyacınız olacağını unutmayın.
Raphael

10

İlköğretim yöntemleri

  1. Sonlu otomata (muhtemelen boş geçişlerle belirsiz ve mekanik değildir).
  2. Düzenli ifadeler.
  3. Sağ (veya Sol, ancak ikisi birden değil) doğrusal denklemler, burada K ve L düzenlidir.X=KX+LKL
  4. Düzenli (Tip 3) gramer.
  5. Düzenli dilleri koruyan işlemler (Boolean işlemleri, ürün, yıldız, karışıklık, morfizmalar, morfizmaların tersi, ters vs.)
  6. Sonlu bir monoid tarafından tanınır.

Mantıksal yöntemler (genellikle resmi doğrulamada kullanılır)

  1. Monadic ikinci dereceden mantık (Büchi teoremi).
  2. Doğrusal zamansal mantık (Kamp teoremi).
  3. Rabin'in ağaç teoremi (iki halef ile Monadic ikinci dereceden mantık). Çok güçlü.

Gelişmiş yöntemler

  1. Gelişmiş pompalama lemmaları. Bakınız örneğin
    [1] J. Jaffe, Düzenli diller için gerekli ve yeterli bir pompalama lemması, Sigact News - SIGACT 10 (1978) 48-49.
    [2] A. Ehrenfeucht, R. Parikh ve G. Rozenberg, normal kümeler için pompalama leması, SIAM J. Comput. 10 (1981), 536-541.
    [3] S. Varricchio, Normal kümeler için bir pompalama koşulu, SIAM J. Comput. 26 (1997) 764-771.

  2. İyi siparişler. Bkz.
    [4] W. Bucher, A. Ehrenfeucht, D. Haussler, Türev ilişkileri ile oluşturulan toplam regülatörlerde, Theor. Comput. Sci. 40 (1985) 131-148.
    [5] M. Kunz, Düzenli Dil Eşitsizliği Çözümleri ve Well Quasi-order .

  3. N

  4. Dayalı Cebirsel yöntemleri transdüksiyonlarda (ayrıca bkz Operasyonlar düzenli dilleri koruyarak ).


4

Ran G. tarafından verilen cevap, normal dilleri belirtmek için kullanılabilecek eşdeğer modellerin oldukça kapsamlı bir listesini verir (ve liste devam eder, iki yönlü otomatlar, MSO mantığı, ancak bu, 'daha eşdeğer modeller' altındaki bağlantıyla kaplıdır. '). Raphael'in de vurguladığı gibi, izleyiciyi seçilen temsilin gerçekten de doğru olduğuna ikna etmek için bir tartışmaya ihtiyacımız var.

LLLL

L=(ΣL)Σ

LL


1
L

@Raphael Üzgünüm, amacım oldu. Daha önceki cevaplar, dilin (otomat, operasyon vb.) Bir tanımını yapabileceğimizi açıklıyor gibi görünüyor. Katılıyorum. Ancak, sorunun kapatma özellikleriyle ilgili olduğu görülüyor, verilen örneğe bakın. Diğer cevaplarda bu noktayı kaçırıyorum: kapatma özelliğini ispatlamak için bir tanımladığınızı ve yeni bir açıklama yaptığınızı varsayıyorsunuz.
Hendrik Jan

1
L

1
LLLLLLLLL

1
Ah tamam. Aslında, soruyu düzenlemeyi ve "örneğin" bölümünü kaldırmayı tercih ederim, böylece soruyu daha genel hale getirip, gelecekteki benzer sorular için bir referans oluşturduğunu .. (:
Ran G.


4

L1SL2={x1y1xnynΣ:x1xnL1,y1ynL2}
Ai=Σ,Qi,Fi,δi,q0iLii=1,2Σ,Q,F,δ,q0
  • Q1×Q2×{1,2}xiyi
  • q0=q01,q02,1
  • F=F1×F2×{1}
  • δ(q1,q2,1,σ)=δ1(q1,σ),q2,2δ(q1,q2,2,σ)=q1,δ2(q2,σ),1

LR={wR:wΣ}.
(w1wn)R=wnw1LΣ,Q,F,δ,q0Σ,Q,F,δ,q0
  • Q=Q{q0}
  • q0
  • q0
  • δ(q0,ϵ)=FqQσΣδ(q,σ)={q:δ(q,σ)=q}

q0


R(L)={yxΣ:xyL}.
LΣ,Q,F,δ,q0Σ,Q,F,δ,q0q=δ(q0,x)δ(q,y)Fδ(q0,x)=qyx
  • Q={q0}Q×Q×{1,2}q0q,qcurr,sqqcurrsyx
  • F={q,q,2:qQ}δ(q0,x)=q
  • δ(q0,ϵ)={q,q,1:qQ}q
  • δ(q,qcurr,s,σ)=q,δ(qcurr,σ),sq,qcurrQs{1,2}
  • δ(q,qf,1,ϵ)=q,q0,2qQqfFyxy

Ek(L)={xΣ: there exists yL whose edit distance from x is at most k}.
Σ,Q,F,δ,q0LΣ,Q,F,δ,q0Ek(L)
  • Q=Q×{0,,k}
  • q0=q0,0
  • F=F×{0,,k}
  • q,σ,iδ(q,σ),iδ(q,i,σ)
  • q,i+1δ(q,i,σ)q,σ,ii<k
  • δ(q,σ),i+1δ(q,i,ϵ)q,σ,ii<k
  • δ(q,σ),i+1δ(q,i,τ)q,σ,τ,ii<k

3

Bir dil düzenlidir, isteğe bağlı dizgilere, sabit bir bellekten daha fazla bellek kullanarak diline ait olup olmadıklarına karar veren bir tarayıcı yazabilirsiniz - yani tanıma O (1) uzayda yapılabilir.


O (1) boşluk, yani? Her durumda, bu DFA'nın yeterli olması gerçeğiyle kaplıdır; programlama açısından bu denkliği açıkça not etmek faydalı olabilir.
Raphael

Evet, sadece farklı bir bakış açısı.
reinierpost

3

Düzenli ifade dönüşümü , belirli işlemler altında kapanmayı kanıtlamanın bir yoludur. En basit iki örnek, ters çevrilme ve kapanma altında homomorfizm altındadır .

rLLRL

  • ϵR=ϵσR=σR=
  • (r1+r2)R=(r1R+r2R)(r)R=(rR)(r1r2)R=r2Rr1R

(r1r2)R=r2Rr1R(01)R=10rRLR

h:ΣΔrLh(L)σrh(σ)


0

Başka bir yol, kapalı olduklarını bildiğiniz işlemleri kullanarak dili oluşturmaktır. Bu, daha birçok işleminiz olduğu için düzenli bir ifade sergilemenin bir uzantısıdır.


2
Ran'ın cevabında zaten bahsedilmiştir.
Raphael
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.