Brzozowski'nin DFA minimizasyonu algoritması


16

Brzozowski'nin DFA minimizasyon algoritması, DFA için asgari bir DFA oluşturur G:

  1. Tüm kenarları geri G , başlangıç durumunu alma bir durum kabul etmek ve NFA elde etmek için, başlangıç durumları kabul N ters dil için,
  2. almak için Powerset inşaat kullanarak G ters dil için,
  3. kenarlarını tersine (ve takas ilk olarak kabul) 'de G,' NFA elde etmek için N- orijinal dil ve
  4. G,min

Tabii ki, bazı DFA'lar üstel büyük ters DFA'ya sahip olduğundan, bu algoritma giriş boyutu açısından en kötü durumda üstel sürede çalışır, bu nedenle ters DFA'nın boyutunu takip etmenizi sağlar.

Eğer giriş DFA boyutu, en az DFA boyutudur, ve en az ters DFA büyüklüğü, o zaman açısından Brzozowski algoritması çalışma süresi ne , , ve ?N-nmN-nm

Özellikle, Brzozowski'nin algoritması ve arasındaki ilişki altında Hopcroft veya Moore algoritmalarından daha iyi bir performans sergiliyor mu?mnm

Uygulama / uygulamadaki tipik örneklerde Brzozowski'nin algoritmasının diğerlerinden daha iyi performans gösterdiğini duydum . Gayri resmi olarak, bu tipik örnekler nasıl?


bu algoritmaların O (f (n)) tahminlerini dahil etmeniz yararlı olacaktır. hepsi "ortalama" durumda O (n log (n)) mı? öyleyse, göreceli performanslarına ilişkin tartışmalar, girdinin istatistiksel özelliklerine / yapısına bağlı olarak çoğunlukla uygulanan bir test olabilir ... ters NFA "büyük değil" olduğunda Brzozowski'nin hızlı bir şekilde çalışması muhtemel görünmektedir ...?
vzn

Algoritmanın yürütülmesine dikkat edin, yanlış sonuçlara yol açacak 1. ve 3. işlemleri gerçekleştirirken sanal bir başlangıç ​​durumu tanıtmak cazip gelebilir - buraya bakın . (Bu soruda yanlış değil, sadece yanlış
anlamamaya

Yanıtlar:


5

Üçüncü sorunuzla ilgili kısmi cevap. Aslında, Brzozowski'nin algoritması DFA minimizasyonunda diğer tüm algoritmalardan çok daha iyi performans göstermez.

[1] 'de yazarlar DFA / NFA minimizasyon algoritmalarının pratik performansını araştırmaktadır. Algoritmalar Hopcroft, Brzozowski ve Watson'un iki çeşididir. Net bir kazanan olmadığı sonucuna varıyorlar, ancak Hopcroft'un algoritması küçük alfabeli DFA'lar için daha iyi performans gösteriyor. NFA'lar için Brzozowski açıkça en hızlısıdır.

Makalenin kendisi oldukça kısa ve açıkça yazılmıştır. Ayrıca yardımcı olabilecek ek tartışmalar ve referanslar da vardır.


[1] Almeida M., Moreira N. ve Reis R. Otomata Minimizasyon Algoritmalarının Performansı Üzerine, Avrupa Dördüncü Hesaplanabilirlik Konferansı, Haziran 2008.


Teşekkür ederim, makaleye bir göz atacağım ve tam bir cevap bulmak için referansları kullanıp kullanamayacağımı göreceğim.
Artem Kaznatcheev

5

Aşağıdakilerin çoğu Sippu ve Soisalon-Soininen tarafından Ayrıştırma Teorisinden alınmıştır.

, DFA'nın durumları kümesi olsun . Let T girdi alfabesi olması. Let | M | = O ( | T || Q | ) makinenin boyutu olmalıdır. Alıştırma 3.40, durumun en aza indirilmesi için bir O ( | T || Q | 2 ) algoritması verir. As Vikipedi açıklar , Hopcroft algoritması bir çalışan zamanı var O ( | T || Q |günlüğüST|M|=O(|T||Q|)O(|T||Q|2) ve Moore algoritmasının çalışma süresi O ( | T | 2| Q | ) ' dır .O(|T||Q|log|T|)O(|T|2|Q|)

Alt kümesi inşaat yapılabilir olduğu teoremi 3.30 durumları boyutu bir otomat elde O ( 2 | T | + günlük | Q | ) (aslında, eğer sonuçta ortaya çıkan otomatların | T | durumları vardır, çalışma süresi ( | T | + | T || MO(2|T|+log|T|+log|Q|)O(2|T|+log|Q|)|T|). Bu nedenle, iki tersine çevirme ve ikinci belirleme, çalışma süresinde önemsizdir, bu nedenle Brzozowski algoritmasının asimptotik çalışma süresi, alt küme yapısı ile aynıdır.(|T|+|T||M|)|Q|

Bu, en kötü durumda, Brzozowski'nin algoritmasının diğer üç algoritmadan katlanarak daha yavaş olduğu anlamına gelir. En kötü durumun gerçekten gerçekleştiğine dikkat edin: dil için NFA'nın klasik örneği , k + 1 durumlarına ve karşılık gelen minimum DFA'nın O ( 2 k ) durumlarına sahipken, NFA'nın tersi belirleyicidir, dolayısıyla Brzozowski'nin algoritmasını bu tersine çevrilmiş NFA'da çalıştırmak en kötü durum davranışını tetikler.(a|b)akk+1O(2k)

Ancak, alt küme yapısı büyüklüğünde bir otomatik veri verirse , o zaman çalışma süresi de O ( | T | 2| Q | 2 ) 'dir , bu da gerçek hayat girişlerinde sıklıkla görülür. Ayrıca, bir durumun kapanışını hesaplarken uygun özen gösteriliyorsa, bu durum çoğu durumda (yani, kapağın küçük olduğu durumlarda) çok daha hızlı yapılabilir, bir faktör tasarrufu | T ||T|=O(|T|)O(|T|2|Q|2)|T|pratikte (esasen aynı nedenden ötürü, geçiş kapamalarının gerçek dünya örneklerinde oldukça hızlı bir şekilde hesaplanabilmesi için). Ayrıca, giriş ve ara otomatlar seyrek ise, bu durumların çok az geçişi olduğu anlamına gelir, o zaman bir faktör kaydedilir ve bu da 'iyi' girişlerde O ( | T || Q | ) çalışma süresi verir.|Q|O(|T||Q|)

O(|T|loglog|T|)


1

De Felice ve Nicaud, Brzozowski'nin algoritmalarının asimptotik olarak hiper-polinom olduğunu göstermektedir. David, nihai durumlar üzerine çeşitli dağıtımlar için Hopcroft'un algoritmasının Moore'un algoritmasından daha yavaş olduğunu göstermiştir.

Referanslar

S. De Felice ve C. Nicaud, "Brzozowski Algoritması Deterministik Otomata için Genel Olarak Süper Polinomdur". Gelen Dil Teorisi Gelişmeler 17. Uluslararası Konferansı (DLT 2013) Bildiriler Kitabı , Bilgisayar Bilimi Ders Notları, s. 170-190, 2013. ( PDF )

J. David, "Moore ve Hopcroft algoritmalarının ortalama karmaşıklığı". Teorik Bilgisayar Bilimi , 417: 50–65, 2012. ( Doğrudan Bilim )

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.