Rastgele DFA üretmek için iyi bir algoritma nedir?


9

Onlarda bir DFA azaltma algoritması test etmek için rasgele DFA üretiyorum.

Şu anda kullandığım algoritma aşağıdaki gibidir: her durum , alfabesindeki her sembol için, rastgele bir duruma ekleyin . Her devletin nihai devlet olma olasılığı aynıdır.qcδ(q,c)

Bu tarafsız DFA üretmenin iyi bir yöntemi midir? Ayrıca, bu algoritma bir trim DFA (eski durumları olmayan bir DFA) üretmez, bu yüzden bir şekilde trim olmasını sağlayabilecek rastgele DFA'lar oluşturmanın daha iyi bir yolu olup olmadığını merak ediyorum?


2
Rastgele DFA'ların doğal bir dağılımı yoktur, bu yüzden size kalmış. Ne yapmak istiyorsun?
Yuval Filmus

Onlarda bir DFA azaltma algoritması test etmek için rasgele DFA üretiyorum.
Duncan

Belki de küçük bir dizi DFA'dan başlamak ve onları havaya uçurmak istersiniz? Bu şekilde minimizasyonun gerçekten doğru sonuca ulaştığını bilirsiniz.
adrianN

merak etmeyin, optimal olmayan bir azaltma algoritması mı test ediyorsunuz yoksa benzersiz minimum optimum DFA mı buluyor?
vzn

2
Test için veri yapıları oluşturuyorsanız, tarafsızlık önemli değildir. Önemli olan ilginç davranışları tetikleme şansına sahip olmaktır. Bir benzetme yapmak için, geometrik bir algoritmayı test ederken, bazı testlerinizin üç noktaya hizalandığından ve rastgele bir dağılımda asla oluşmayacak diğer şeylerden emin olmanız gerekir.
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


6

[1] 'e ve Bölüm 4, Rasgele Otomata Üretimi konusundaki tartışmaya göz atın. Kağıt farklı DFA minimizasyon algoritmalarını karşılaştırmaktadır. durumları ve sembolleri olan tam DFA'ların kanonik dizi temsillerini üreten tek tip rastgele bir jeneratör kullanılır . Ayrıca diğer yöntemleri de tartışıyorlar.nk


[1] Almeida, M., Moreira, N. ve Reis, R. (2007). Otomata minimizasyon algoritmalarının performansı hakkında. Algoritmaların Mantık ve Teorisi, 3.


"Kurallı dize gösterimleri" ne anlama geliyor?
Duncan

@drowse Kanonik düzen, devletler kümesi üzerinden, otomatı en geniş bir şekilde ilk önce her bir düğümde giden (toplam) sırasını kullanarak seçerek tanımlanır . Makaledeki referanslara göz atın. Σ
Juho

4

Sen bakmak gerekir Cyril Nicaud Web Sitesini . Özellikle, aşağıdaki referanslar sorunuzla ilgilidir:

F. Bassino, J. David ve C. Nicaud, Muhtemelen eksik deterministik otomatların sayımı ve rastgele üretimi, Pure Mathematics and Applications 19 (2-3) (2009) 1-16.

F. Bassino ve C. Nicaud. Erişilebilir Otomata Sayımı ve Rastgele Üretimi. Theor. Zorunlu. Demek ki . 381 (2007) 86-104.


3

Http://paranthoen.thomas.free.fr/PAPERS/RandDFAToAppearInTCS.ps.gz bir permütasyona kadar rastgele DFA oluşturmak için algoritmalar vardır .

Ancak, yukarıdaki makalede, hemen hemen tüm DFA'ların zaten minimal olduğu belirtilmektedir. Minimum olmayan DFA'lar asal sayılar gibidir ... bunlardan sadece birkaçı vardır. Minimizasyon algoritmasını test etmek için bu algoritmayı kullanırsanız, basit bir rasgele sayı üreteci ile asal sayı üzerinde bir algoritma test ediyormuşsunuz gibi olacaktır. Daha az minimal olmayan DFA'ya sahip olmak için, bir batma durumu ekleyerek algoritmayı değiştirebilir ve geçişlerin önemli bir yüzdesini bu batma durumuna yönlendirebilirsiniz.

Benim açımdan, uygulamanızın hızını test etmek istiyorsanız, onu kullanmak istediğiniz şeye karşı kontrol edin: rastgele kelime kümeleri veya rastgele REGEX ile, bir NFA veya DFA oluşturun ve ardından ortaya çıkan DFA'yı en aza indirin .


2

doğal bir strateji DFA'yı bir grafik olarak görmektir ve daha sonra birçok "doğal" ve çok çalışılmış rastgele grafik dağılımı vardır, en basit olanı muhtemelen Erdos-Renyi'dir . bu durumda DFA'nın tüm durumlarını grafiğin düğümleri olarak görürsünüz ve olası tüm kenarların sabit bir yüzdesi (DFA geçişleri) seçilir. son dönemde çok çalışılan daha sofistike dağılımlar küçük dünya grafikleri. sorunuzda bahsettiğiniz strateji için, görünüşe göre özel durumunu ; burada , grafikteki düğüm sayısıdır. ancak ne stratejiniz ne de Erdos-Renyi, DFA'daki tüm devletlerin bağlı olduğunu garanti etmez [eklemek için doğal bir kısıtlama].p=1/nn



düzenleme olarak, DFA'ları görmenin başka bir yolu, kenarları tanımlayan üçlü bir ; burada , köşe 1, köşe 2'dir ve , geçiş sembolüdür ve bunların herhangi bir alt kümesi, belirlemek için seçilebilir bir DFA. (v1,b,v2)v1v2b
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.