NFA'dan DFA'ya dönüştürülemiyor


11

Bana verilen çift harfler (aa, bb) veya çift harfler (aa, bb) ile biten ile başlayan tüm girdileri kabul eden bir DFA, yapma basit bir sorun var Σ={a,b} Verilen dilin alfabesi setini edilir.

Bunu dolambaçlı bir şekilde çözmeye çalıştım:

  1. Düzenli bir ifade oluşturma
  2. İlgili NFA'sını yapma
  3. DFA çıkarmak için güç kümesi yapısını kullanma
  4. DFA'daki durum sayısını en aza indirme

Adım 1: Verilen sorun için düzenli ifade (sayısız diğerleri arasında):

((aa|bb)(a|b)*)|((a|b)(a|b)*(aa|bb))

Adım 2: Verilen ifade için NFA :

NFA
(kaynak: livefilestore.com )

Tablo şeklinde, NFA:

State    Input:a     Input:b
->1        2,5         3,5
  2        4           -
  3        -           4
 (4)       4           4
  5        5,7         5,6
  6        -           8
  7        8           -
 (8)       -           -

3. Adım: Güç kümesi yapısını kullanarak bir DFA'ya dönüştürün:

Symbol, State       +   Symbol, State (Input:a) +   Symbol, State (Input:b)
   ->A, {1}         |        B, {2,5}           |        C, {3,5}
     B, {2,5}       |        D, {4,5,7}         |        E, {5,6}
     C, {3,5}       |        F, {5,7}           |        G, {4,5,6}
   (D), {4,5,7}     |        H, {4,5,7,8}       |        G, {4,5,6}
     E, {5,6}       |        F, {5,7}           |        I, {5,6,8}
     F, {5,7}       |        J, {5,7,8}         |        E, {5,6}
   (G), {4,5,6}     |        D, {4,5,7}         |        K, {4,5,6,8}
   (H), {4,5,7,8}   |        H, {4,5,7,8}       |        G, {4,5,6}
   (I), {5,6,8}     |        F, {5,7}           |        I, {5,6,8}
   (J), {5,7,8}     |        J, {5,7,8}         |        E, {5,6}
   (K), {4,5,6,8}   +        D, {4,5,7}         +        K, {4,5,6,8}

4. Adım: DFA'yı en aza indirin:

Önce K-> G, J-> F, I-> E'yi değiştirdim. Bir sonraki yinelemede H-> D ve E-> F. Böylece, son tablo:

  State    +   Input:a     +   Input:b
   ->A     |      B        |      C
     B     |      D        |      E
     C     |      E        |      D
    (D)    |      D        |      D
    (E)    |      E        |      E

Ve şematik olarak şöyle görünüyor:

Son DFA
(kaynak: livefilestore.com )

... gerekli DFA değil! Sonuçumu üç kez kontrol ettim. Nerede yanlış yaptım?

Not:

  • -> = başlangıç ​​durumu
  • () = son durum

3
Bu, iyi düşünülmüş temel bir soru için harika bir örnektir, çünkü tüm düşünce treninizi dahil edersiniz.
Raphael

Takdir edilmek harika, teşekkürler! ^^
Anurag Kalia

Yanıtlar:


5

3. adıma (DFA) iyisiniz, ancak simge durumuna küçültmeniz yanlış.

Bu girişler hem çünkü minimize DFA, doğru olmadığı açıktır bave ab(orijinal dilinde değil, ne de 3. adımda DFA tarafından kabul vardır) nihai duruma yol E.

Minimizasyon adımlarınıza baktığınızda, nihai ve nihai olmayan durumları birleştirmişsiniz gibi görünüyor; örneğin J (son) -> F (son değil) ve I (son) -> E (son değil). Nihai durumu nihai olmayan bir durumla birleştirmek, otomasyon tarafından kabul edilen dili değiştirir ve yukarıda belirtildiği gibi yanlış dizelerin kabul edilmesine yol açar.


1
Ah. Burada sorun yaratan da budur. Şimdi hatırlıyorum, bu yöntemi en son ne zaman kullandığımda, tabloda hiç kabul eden belirli bir durum yoktu!
Anurag Kalia
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.