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)까지는 가능하지만 최소화가 올바르지 않습니다.

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

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


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