알파벳 {a, b, c}에 DFA를 작성하여 세 개의 연속 된 문자로 된 모든 문자열 세트를 허용합니다. 나는 다른 방법을 많이 시도{a, b, c} 알파벳으로 DFA 작성
AAA, BBB, CCC, abbb, caaac, ccbbbcc, aaabbbc을 ... 그리고 더 우아한 방법이 있는지 궁금 해서요 거대한 그림입니다 :
는 그래서 받아 들일 수 이거하고 있니?알파벳 {a, b, c}에 DFA를 작성하여 세 개의 연속 된 문자로 된 모든 문자열 세트를 허용합니다. 나는 다른 방법을 많이 시도{a, b, c} 알파벳으로 DFA 작성
AAA, BBB, CCC, abbb, caaac, ccbbbcc, aaabbbc을 ... 그리고 더 우아한 방법이 있는지 궁금 해서요 거대한 그림입니다 :
는 그래서 받아 들일 수 이거하고 있니?먼저 제목에 NFA가 표시되지만 질문 본문에는 DFA가 나와 있습니다. 나는 그 문제가 왜 중요한지 설명하기 위해 두 가지 방법으로 모두 대답 할 것입니다.
먼저 NFA를 고려하십시오. 우리는 같은 종류의 세 연속 기호가있는 문자열 만 허용하려고합니다. 세 개의 기호가 있으므로 세 가지 방법이 있습니다 (문자열이 세 개의 연속 된 기호가 처음 나오는 이후에 받아 들여진다는 것을 알고 있다고 가정 할 때). 우리는 무엇이든을 볼 수 있고, 그 다음에 똑같은 상징의 세 개를 볼 수 있습니다. NFA가 적어 쉽게 :
__
/\ __
|/a,b,c /\
V/ |/a,b,c
--->q0--a->q1-a->q4-a-\ V/
| \-b->q2-b->q5-b-->(q7)
\---c->q3-c->q6-c-/
우리의 상태는 다음과 같이 초기 상태는의, B 년대와 C의의 접두사를 받아들입니다. 에서만 문자열로 BB와 문자열이 방문 할 수있다 상태
는 NFA nondeterministically 가지가 않는 경우, Q7을 입력하고 접미사로 남아있을 수 있습니다 무엇이든을 받아, 입력 문자열은 AAA가 포함되어 있는지 여부를 확인 BBB 또는 CCC십시오.
최소 DFA를 얻으려면 Myhill-Nerode 정리에 따라 문자열을 사전 식으로 검사하여 이미 고려한 문자열과 구분할 수 있는지 확인하고 DFA 한 상태를 시간.
, 우리는 우리가 최소한의 DFA 필요한 모든 상태를 나열했습니다 알고 우리는 답변을 적어 수 있습니다
+---a--->[a]<---a----+
| +-c--->[c]<---c-+ |
| | | |
+----b--->[b]-------b------>[bb]---b----+
| |
| +---b--->[b]<---b----+ | +--+
| | +-c--->[c]<---c-+ | | | a,b,c
| | | | | V V |
--->[e]---a--->[a]-------a------>[aa]---a--->[aaa]--+
| ^
| +---a--->[a]<---a----+ |
| | +-b--->[b]<---b-+ | |
| | | | | |
+----c--->[c]-------c------>[cc]---c----+
을 (주 [A], [B] 와 [c]는 다이어그램을 더 예쁘게 만들기 위해 두 번씩 복제됩니다. 전이 그래프가 평면이 아니며 ASCII 아트에서 렌더링하는 것이 혼란 스럽습니다).
이것은 우리가 적어 놓은 간단한 NFA와 동일한 수의 상태를 가지고 있음을 주목하십시오. 이것은 비 결정 성을 제거한 것입니다.
이해가 안, C 유일의 승인하는 상태있어 ->, --- b, c ->, --- a, b -> – Dictatorboy
@DictatorBoy 이러한 전환은 a, b 또는 c를보기 시작한 후에 다른 것을 보았을 때 "시작 위에". 내가 괄호 안에 적었 듯이, 다이어그램을 더 깔끔하게 만들기 위해 상태 [a], [b] 및 [c]를 복제했지만 중복 (전환 없음)은 실제 전환을 나타냅니다. – Patrick87
네, 단정하게 어렵지만,이 도트 [도] (https://www.planttext.com/?text=TP9D3e8m48NtFSK4j_K41iFEGnWNRqgZHY04S4Muksq56ihGvVT-Cfssw0TqmxUkLFb-TcXVTADHANB7qlbAe7i5jbMU8Ni4Z8053iTRzFr6YKsySfuJ7B30EMtYJPDPkPaJ9c21cxJ9B4sUxWRMh5S3vA4XJu0Zk-2FbzzlaULwFh8B_hYHlTyaKyP57VZJmD8_TcW-UO_QNiXEwfGoQ69DHbAyv3Kd2YdWZrE9VKgMZ5pcdtPIQY9LsAPqN_m7) 최소 추적한다. –