Otomatada normal ifade ve dilbilgisi arasındaki fark


12

Ben otomata konusunda yeniyim ve bana dün düzenli ifadelere kısa bir giriş yapıldı. Normal bir ifadeyi tanımlamak için çeşitli kuralları okudum. Ama düzenli ifadeler ve bir dilin grameri arasında ayrım yapamıyorum (düzenli ifadeler için dilbilgisi öğretilmemiştir).

Dilbilgisinin bir dilde geçerli dizeleri oluşturmamıza yardımcı olduğunu anlıyorum, ancak normal ifadeler durumunu tanımlamak için kurallar budur. Peki fark nerede yatıyor? Profesörüme sordum ve regex'in bir dilde en temel dizeler olduğunu ve dilbilgisinin regex'ten daha yüksek sıradaki herhangi bir dil için kurallar kümesi olduğunu söyledi. Birisi daha ayrıntılı bilgi sağlayabilir mi?

Yanıtlar:


22

Düzenli ifadeler, düzenli gramerler ve sonlu otomata aynı şey için sadece üç farklı biçimciliktir. Herhangi birinden diğerine dönüştürmek için algoritmalar vardır.

Üçünün hepsine sahip olmamızın temel nedeni, bağımsız olarak yaratılmış olmalarıdır, ilk denklem seti (ayrıca başka birçok formalizm de vardır) Kleene tarafından kanıtlanmıştır (bu sonuç veya bir kısmına Kleene Teoremi denir).

Bu bağlamda, modelleri hangi yönde çalıştırmak istediğinize bağlı olarak, hepsi normal bir dilin dizelerini tanır veya oluşturur ve matematiksel olarak, bu anlamda bir fark yoktur.

Elbette, biçimselliğin detayları nedeniyle bazen bir modelin belirli bir görev için diğerinden daha kolay kullanılması mümkündür. Dahası, bir insanın kafasında çalışma şekli, bilgisayarlar gibi biraz farklı, sonlu bir otomata "hissetmek", normal ifadeler, daha küçük alt dizelerden ve normal gramerlerden daha fazla bir dilbilgisi gibi "hissetmek" gibi "hissetmek" bir dilde bir cümlenin türetilmesi veya sınıflandırılması (tarihe baktığınızda şaşırtıcı olmayan bir şekilde).

İkisini karşılaştırmak için, bunları tanımlayalım:

Düzenli ifadeler

Dolayısıyla düzenli ifadeler özyinelemeli olarak şu şekilde tanımlanır:

  1. normal bir ifadedir
  2. ε normal bir ifadedir
  3. a Σa , her için düzenli bir ifadediraΣ
  4. eğer ve düzenli ifadeler daha sonra BAB
    • AB normal bir ifadedir (birleşme)
    • AB normal bir ifadedir (alternatif)
    • A düzenli bir ifadedir (Kleene yıldızı)

Bazı semantiklerle birlikte (yani operatörleri dize almak için nasıl yorumladığımız), normal bir dilde dize oluşturma yöntemi elde ederiz.

Düzenli Gramerler

Düzenli dilbilgisi dört tuptan burada terminal olmayanlar kümesidir, terminaller kümesidir, başlangıç ​​terminali değildir ve kümedir Başlangıç ​​sembolünü adım adım nasıl içinde bir dizeye değiştireceğimizi söyleyen yapımlar . , üretimlerini iki türden birinden alabilir (her ikisi de değil):N Σ S P Σ P(N,Σ,P,SN)NΣSPΣP

Sağ Doğrusal Gramerler

, , terminal olmayan terminaller ve boş dizesi için tüm kurallar şu şekildedir:C a εBCaε

  1. Ba
  2. BaC
  3. Bε

Sol Doğrusal Gramerler

Sol doğrusal dilbilgisi aynıdır, ancak # 2 kuralı .BCa

Ponder Gezilecek Yerler

Bu tanımlara bakarak ve onlarla oynadığımızda, normal ifadelerin eşleşen kurallara veya her seferinde dizelerle başa çıkma yollarına benzediğini görebiliriz.

Gramerler dizenin bölümlerini "etiketliyor" gibi görünüyor ve dizeyi doğrulamak için etiketleri yeni etiketler altında gruplandırıyor gibi görünüyor (yani dizeye veya tam tersi olursa mutlu oluruz).S

Ancak bunlar gerçekten aynı temel şeyi yapıyor ve işlevlerinin metaforuna nasıl baktığınız gerçekten size kalmış.


Dilbilgilerin dilde dizeler oluşturması gerçeğine daha fazla önem veririm , normal ifadeler (dediğiniz gibi) dildeki her dizeyle eşleşen (veya "test") daha eşleşen bir modeldir .
Ran G.

@RanG., Aslında bunu düşünmenin olağan yolu, ama her ikisini de çevirebilirsiniz; aşağıdan yukarıya ayrıştırma bir dizeyi dilbilgisine karşı test eder ve normal bir ifadeyi dilin küçük bir açıklaması olarak kullanabilirsiniz (bu muhtemelen daha az yaygın olsa da).
Luke Mathieson

@simpleBob , nonterminal kümesidir, , başlangıç ​​nonterminaldir. ne olurdu ? S RNSR
Luke Mathieson

@LukeMathieson Benim hatam, paragrafı okudum ve tanımlandığı sıra nedeniyle ile yazım hatası olduğunu düşündüm . Şimdi başka bir yerde resmi tanımı okuduğum için, yazım hatası olması gerektiğini düşünüyorum (sanırım) (ilk Düzenli Gramer paragrafında ikinci satır)R R PNRRP
Daniel

@simpleBob, Ah evet, bu kesinlikle bir yazım hatası. Teşekkürler!
Luke Mathieson
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.