NFA에서 DFA로 변환 할 수 없습니다


11

이중 문자 (aa, bb)로 시작하거나 이중 문자 (aa, bb)로 끝나는 모든 입력을 허용하는 DFA를 만드는 간단한 문제가 있습니다. 는 주어진 언어.Σ={,}

나는 다음과 같이 로터리 방식으로 해결하려고했습니다.

  1. 정규식 생성
  2. 해당 NFA 만들기
  3. 파워 셋 구성을 사용하여 DFA 추론
  4. DFA의 상태 수 최소화

1 단계 : 주어진 문제에 대한 정규식 은 (다른 수많은 것 중에서) :

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

2 단계 : 주어진 표현에 대한 NFA 는 다음과 같습니다.

NFA
(출처 : livefilestore.com )

표 형식에서 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 단계 : 파워 셋 구성을 사용하여 DFA로 변환 :

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 단계 : DFA 최소화

K-> G, J-> F, I-> E를 먼저 변경했습니다. 다음 반복에서는 H-> D 및 E-> F입니다. 따라서 최종 테이블은 다음과 같습니다.

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

그리고 개략적으로 다음과 같습니다.

최종 DFA
(출처 : livefilestore.com )

... 필수 한 DFA가 아닙니다! 결과를 세 번 확인했습니다. 그래서 내가 어디로 잘못 되었습니까?

노트 :

  • -> = 초기 상태
  • () = 최종 상태

3
이것은 당신이 생각의 전체를 포함하기 때문에 잘 제기 된 기본적인 질문에 대한 훌륭한 예입니다.
Raphael

고마워요, 고마워요! ^^
Anurag Kalia

답변:


5

3 단계 (DFA)까지는 가능하지만 최소화가 올바르지 않습니다.

입력 baab(원래 언어가 아니거나 3 단계에서 DFA에 의해 받아 들여지지 않은) 입력이 최종 상태가 되기 때문에 최소화 된 DFA가 옳지 않다는 것이 분명합니다 E.

최소화 단계를 살펴보면 최종 및 최종 상태를 통합 한 것 같습니다. 예를 들어 J (최종)-> F (최종 아님) 및 I (최종)-> E (최종 아님)입니다. 최종 상태를 최종 상태가 아닌 상태와 병합하면 오토 마톤에서 허용되는 언어가 변경되어 위에서 언급 한대로 잘못된 문자열이 허용됩니다.


1
오. 이것이 바로 문제를 일으키는 것입니다. 제가이 방법을 마지막으로 사용했을 때, 기억할만한 특별한 상태는 전혀 없었습니다!
Anurag Kalia
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.