Belirli bir normal ifade ile tanımlanan dili tanıyan bir DFA oluşturmak için hangi algoritmalar var?


11

Tüm ders kitaplarım, regex verilen bir DFA üretmek için aynı algoritmayı kullanıyor: İlk olarak, regex'in dilini tanıyan bir NFA yapın, ardından alt küme ("powerset" olarak da bilinir) yapısını kullanarak NFA'yı eşdeğer bir DFA'ya dönüştürün ( isteğe bağlı olarak DFA'nın en aza indirilmesi). Bir keresinde bir profesörün başka algoritmalar olduğunu ima ettiğini duydum. Kimse biliyor mu? Belki de ara normal NFA olmadan doğrudan normalden bir DFA'ya giden biri?


Teorik bilgisayar biliminde (TCS) araştırma düzeyinde sorular için bir soru - cevap sitesi olan cstheory'ye hoş geldiniz . Sorunuz TCS'de araştırma düzeyinde bir soru gibi görünmüyor. Bunun ne anlama geldiğiyle ilgili daha fazla bilgi için lütfen SSS bölümüne bakın . Sorunuz daha geniş bir kapsama sahip Bilgisayar Bilimleri için uygun olabilir .
Kaveh

1
neden her zaman bu şablon yorumunu kullanıyorsunuz? Görünüşe göre sizinle aynı fikirde olmayan en az 5 kişi var. Bu tür sorulara bir şans vermenizi öneririm.
AJ

@AJed, bu yorumu her zaman kullanmıyorum. Bir soru benim için konu dışı göründüğünde, ancak Bilgisayar Bilimi için uygun olduğunda kullanıyorum . Yukarı oylar, bir konunun konuyla ilgili olduğu anlamına gelmez ve bu benim için araştırma düzeyinde bir soru gibi görünmüyor, bu yüzden yorumun uygun olduğunu düşünüyorum. (Birinin bir soruya araştırma düzeyinde bir cevap yazabilmesi, soruyu araştırma düzeyinde yapmaz.) Ps: Bu tartışmanın Teorik Bilgisayar Bilimi Meta için daha uygun olduğunu düşünüyorum .
Kaveh

Yanıtlar:


13

Düzenli ifadeleri sonlu otomata dönüştürmek için farklı algoritmalar vardır. Otomasyonu oluştururken, alt küme yapısını dolaylı olarak yaparak, başka bir otomasyon oluşturmadan doğrudan normal ifadelerden DFA'lara gidebilirsiniz. Deterministik otomata doğrudan ulaşmak için başka bir seçenek, türev yöntemini kullanmaktır.

Normal bir ifadenin tüm dizeleri içeren dili temsil edip etmediğini kontrol etmek bir PSPACE tam sorunudur ( referans için bu cevaba bakınız ). Bir DFA'nın dilin polinom zamanında yapılabileceğini kabul edip etmediğini kontrol etmek, bu nedenle doğrudan düzenli bir ifadeden DFA'ya geçerseniz, bir yerde bir patlama olacaktır.

Literatür hakkındaki anlayışım, patlamayı yerelleştirmemize izin veren çevirileri seçebilmemizdir. Yani, düzenli bir ifadeden sonlu bir otomasyona geçmenin farklı yolları vardır ve doğrusal veya polinom olan yöntemler tercih edilir. Genellikle, üstel maliyetler otomata'nın belirlenmesine itilir.

DFA'ları verimli bir şekilde üretebileceğimiz düzenli ifadelerin alt ailelerini tanımlamak için çok fazla çalışma yapıldı. Bu çalışma alanı kullandığınız çeviriye bağlıdır. Yani, normal ifadelerden NFA'lara bir eşleme düzeltiyor ve DFA'lara eşlenen normal ifadeleri karakterize etmeye çalışıyorsunuz.

Düzenli ifadelerden otomatanın standart yapısı, bu tür çalışmalarda tercih edilen yapı değildir . Tercih edilen yapılar, düzenli ifadenin yapısına çok benzeyen otomata üretir. Bu yapılar, düzenli ifadenin bir türevi kavramını kullanır .

Düzenli ifadelerin türevleri , JA Brzozowski. 1964.

Bir türev düzenli ekspresyonu sembolü ile ilgili olarak alfabesinden dilini temsil eden bir ifadedir lider ile dizeleri çıkarıldı. Bu kavram Antimirov tarafından düzenli ifadelerin kısmi türevlerine genişletildi.srbirrbir

Düzenli İfadelerin Kısmi Türevleri ve Sonlu Otomata Yapıları , V. Antimirov. 1995.

O durumdan kabul edilen tüm dizeleri bir temsili olarak bir otomat hal düşünürsek, (kısmi) türevleri siz normal ifadeleri tedavi etme imkanı devletler . Normal ifadeleri sezgisel olarak durumlara değil, otomatik veri olarak ele alan standart ders kitabı yapısının aksine.

Düzenli ifadelerden deterministik otomata , G. Berry ve R. Sethi, 1986.

Düzenli ifadeler ve bir otomatın durumları ve determinizm arasındaki yazışma, Brzozowski türevleri kavramını, düzenli ifadelerin sözdizimine dayalı olarak sonluya çevrilmesi için aynı sembolün oluşumlarını ayırt etme fikri ile birleştiren Berry ve Sethi tarafından açıkça tartışılmaktadır. otomata.

Belirsiz Düzenli Diller , A. Brüggemann-Klein ve Derick Wood, 1998.

Bu yazı Brüggemann-Klein'ın daha önceki çalışmaları üzerine kurulmuş ve polinom zamanında DFA üretmek için türevleri kullanabileceğiniz vakaları inceliyor. Bu makalenin ardından çok miktarda çalışma var. Web teknolojileri açısından önemlidir, çünkü verimli bir şekilde manipüle edilebilen düzenli ifadeler (diğer bir deyişle DFA'lara karşılık gelir) SGML ve XML işlemek için önemlidir.

Deterministik düzenli ifadelerin diğer özel durumlarını incelemek için çok fazla çalışma yapılmıştır. Bu sorunların bir kısmının doğrusal zamanda çözülebileceği çok yeni bir makale 2012'den alınmıştır.

Doğrusal Zamanda Deterministik Düzenli İfadeler , Benoit Groz, Sebastian Maneth, Slawomir Staworko. 2012.


5
Cevabınızda zaten türevlerden bahsettiniz, bu yüzden JA Brzozowski: Normal ifadelerin türevleri, ACM 11 Dergisi (4): 481–494 (1964), çünkü regexps'leri DFA'lara dönüştürmek için doğrudan bir algoritma verdiğinden .
Neel Krishnaswami

3
Bunu tartıştım. Ancak yukarıdaki üç makalenin hepsi doğrudan bu sonuca dayanıyor, bu yüzden bundan bahsetmek için bir neden olmadığını düşündüm. Brueggeman-Klein ve Ahşap gazetesi de örneklerle dolu. Brzozowski'den bahsedersem, Antimirov'un da belirtilmesi gerektiğini hissediyorum. Bir anketten kaçınmak istedim, ama belki de araştırmaya gitmeliyim. Ne diyorsun?
Vijay D

5
Zamanınız ve enerjiniz varsa, burada uzunca anket benzeri cevapların çok uygun olduğunu düşünüyorum.
David Eppstein

1
@VijayD: evet, David ile aynı fikirdeyim. Kısa cevaplar iyidir, ancak enerjiniz varsa kapsamlı bir cevap vermek güzeldir.
Neel Krishnaswami
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.