Sonlu otomatların özel bir halidir. Bu özel hal aşağıdaki 3 durumu içermelidir:
1. Her durumdan (State) gidilecek koşulun tek bir durum göstermesi. Yani bir durumda başka duruma geçerken bir kelime ile sadece bir duruma gidilebilmesi
2. Herhangi bir girdi için, tek bitiş durumunun (final state) kabul edilmesi (birden fazla bitiş durumunun aynı anda kabul edilmemesi)
3. Lambda (veya epsilon) kelimesinin durumlar arası geçişte yer almaması
DFA'nın tersine her durumdan gidişin karışık olduğu ve her durum için bir sonraki kelimede nereye gidileceğinin belirli olmadığı otomatlardır.
Basitçe DFA kurallarına uymayan bütün otomatlar NFA olarak adlandırılabilir.
Yukarıda bulunan görselde birden çok seçenek mevcuttur bir komut için. Bu nedenle bu belirsizlikleri ortadan kaldırmak için bir algoritma gerekli
Input - NFA
Output - DFA
Adım 1 - Verilen NFA verilerinden bir durum tablosu oluşturun.
q | δ(q,0) | δ(q,1) |
---|---|---|
->a | {a,b,c,d,e} | {d,e} |
b | {c} | {e} |
c | ∅ | {b} |
d | {e} | ∅ |
*e | ∅ | ∅ |
q | δ(q,0) | δ(q,1) |
---|---|---|
->[a] | [a,b,c,d,e] | [d,e] |
*[a,b,c,d,e] | [a,b,c,d,e] | [b,d,e] |
*[d,e] | [e] | ∅ |
*[b,d,e] | [c,e] | [e] |
*[e] | ∅ | ∅ |
*[c, e] | ∅ | [b] |
[b] | [c] | [e] |
[c] | ∅ | [b] |
Tablonun bu hale gelmesiyle diyagramımız bu hale gelir:(Uygulama Linki)