그렇지 않은 경우 일부 상태 및 일부 기호 , 가 존재하지 않을 때의 의미는 무엇 입니까?a δ ( q , a )
그렇지 않은 경우 일부 상태 및 일부 기호 , 가 존재하지 않을 때의 의미는 무엇 입니까?a δ ( q , a )
답변:
논쟁의 여지가있는 문제를 발견 한 것 같습니다. 분명히 컴퓨터 과학자들은 논쟁을 좋아합니다. 나는 확실히 논쟁하고 싶다. 그래서 여기에 간다!
내 대답은 명백하다. 아니다. 결정 론적 유한 오토마타는 모든 심볼에서 모든 상태로부터 전환 될 필요는 없다. 가 존재하지 않을 때의 의미 는 DFA가 입력 문자열을 받아들이지 않는다는 것입니다.
가 필요한 DFA의 정의를 만들 수는 있지만 전환이 누락 되어 많은 주석 작성자와 같이 결과 구조 (어떤 것이든지 호출)가 결정적 이지 않은 경우는 아닙니다. 주장하고 있습니다. 오토마타 이론에 대한 강의를하고 있다면, 다음 주제는 문맥이없는 언어와 푸시 다운 오토마타가 될 것입니다. 여기서 비결정론 적 오토마타와 비결정론 적 오토마타의 구별이 중요하며 비결정론의 올바른 정의를 사용해야합니다.
비결정론은 하나 이상의 법적 전환 을 갖는 것과 관련이 있습니다.
나는 우리 모두가 다음 Wikipedia 정의에 동의한다고 생각합니다 (단지 잠시 후에 보여줄 것은 약간 모호합니다).
결정 론적 유한 오토 마톤 은 5 개의 튜플 ( , , , , )로 구성됩니다.
하자 알파벳을 통해 문자열 . 다음과 같은 조건을 가진 상태 시퀀스 이 존재 하면 오토 마톤 은 문자열 받아들입니다 .
모호성과 논쟁은 전환 기능 ( 첫 번째 글 머리 기호 목록 의 숫자 "3")의 정의에 관한 것 입니다. 우리는 모두 DFA와 NFA를 구별하는 것이 가 아닌 함수라는 것에 동의합니다 관계 . 그러나 는 부분 함수 또는 전체 함수 입니까?δ δ
가 부분 함수 인 경우 DFA의 정의가 제대로 작동 합니다. 입력 문자열이 주어지면 다음 상태가없는 입력 기호 로 상태 도달 하면 오토마타는 단순히 받아들이지 않습니다.
또한 당신의 정의를 만들려면이 정의를 확장 할 때 푸시 다운 오토마타 당신이하는 경우가 될 것입니다 해야한다 부분적인 기능입니다 전환 기능을 푸시 다운 오토마타이 같은 결정, 결정적되지 분류되는 차이를 확인하십시오.
부분 함수가 당신을 귀찮게한다면 여기에 를 총 함수로 만드는 사소한 변환이 있습니다. (이 변환은 되지 는 상태의 원 전화 번호에 선형 대부분 O (1)의 상태에서, 추가 및 PDA와 함께 작동하도록 확장 될 수 있으며, 서브 세트 구축 알고리즘 등을 포함한다. 이러한 사실 없음 서브셋 구조 알고리즘에 해당하지 .)
이 오토마타에는 총 함수 인 가 있으며 원래 오토마타가 수락하고 거부 한 것과 정확히 동일한 상태 세트를 수락하고 거부합니다.
Commenter @Alex Smart는 저에게 언급하지도 않고 왜 우리가 관심을 가져야하는지 설명하지 않았다고 비판합니다. 그래서 여기에 간다 :
우리 가 결정론과 비결정론의 정확한 정의에 관심을 갖는 이유는 비결정론 적 오토마타의 일부 클래스가 결정 론적 사촌보다 강력하고, 일부 비결정론 적 오토마타는 결정 론적 사촌보다 강력 하지 않기 때문이다. 유한 오토마타 및 튜링 기계의 경우 결정 론적 및 비결정론 적 변형은 동등한 성능을 갖습니다. 푸시 다운 오토마타에는 구별이 중요한 언어가 있습니다. 언어를 받아들이는 NPDA가 있으며 DPDA가 언어를 받아들이지 않습니다. 선형 경계 오토마타의 경우 질문은 (또는 마지막으로 확인한 시간) 열려 있습니다. DPDA에 비해 NPDA의 전력 증가는 다중 전이 기능을 전체 기능에서 부분 기능으로 전환하는 것이 아니라 전이.
컴파일러 커뮤니티의 서적 :
Aho와 Ullman, 컴파일러 디자인의 원칙 , 1977 : 먼저 NFA (88 페이지)를 전환 관계로 정의한 다음 (p. 90-91)
우리는 유한 오토 마톤이 1이라면 결정 론적 이라고 말합니다 . 그것은 입력 에서 전환이 없습니다 . 각 상태의 2 입력 심볼 , 기껏 하나의 에지는 표지가 이탈 .
Aho, Sethi 및 Ullman, 컴파일러, 원칙, 기법 및 도구 (1988 년)는 비슷하지만 우선 NFA를 전환 관계로 정의한 다음 (p. 115-116) :
결정적 유한 오토마타 (짧게 DFA는)하는 ... 표시된 최대 하나의 가장자리가 비 결정적 finitie 자동 장치의 특별한 경우이다 떠나 .
(@Alex Smart의 의견에서 "드래곤은 구체적으로 기능이 총체적이라고 언급합니다."라고 말합니다. 필자는 현재 접근 할 수없는 공동 저자 인 Lam과의 이후 버전에 대해 이야기하고 있다고 가정합니다. )
Appel, Java에서 현대 컴파일러 구현 , 1988 (p. 22) :
(A)에 결정 성 유한 오토 마톤 (DFA)와 동일한 상태에서 떠나는 두 개의 에지는 동일한 기호로 분류되지 않는다.
그런 다음 Appel은 DFA를 사용하여 가장 긴 일치 항목을 인식 할 때 누락 된 전환을 명시 적으로 사용하여 중지시기를 결정한다고 설명합니다 (23 페이지).
때 죽은 상태 (출력 금지 전환과 nonfinal 상태)에 도달 할 때, [우리가 지금까지 본 것 중 가장 긴 일치하는 기록] 일치 된 토큰 무엇을 이야기하고, 종료 변수.
전환 이론 커뮤니티의 서적 :
Kohavi, 스위칭 및 유한 오토마타 이론, 2 / e , 1978, p. 611의 말 :
상태 다이어그램은 결정 론적 기계를 설명 하므로 다음 상태 전이는 현재 상태와 현재 스캔 된 입력 기호에 의해 고유하게 결정되어야합니다 .
나는 일반적으로 해석하지 않을 것이다 유일하게 "더 이상보다"하지 "정확히 하나"를 의미하는. (즉, Kohavi는 결정론이 전체 기능을 필요로한다고 말하고있는 것 같습니다)
계산 이론 커뮤니티의 서적 :
여기서는 NFA보다 먼저 DFA를 정의하고 DFA가 전체 전환 기능을 갖도록 요구하지만 DPDA 전에 NPDA를 정의하고 "결정론"을 과도기를 갖지 않는 전환 관계의 제한으로 정의하는 것이 더 일반적인 것 같습니다 각 상태 / 기호 쌍에 대해 하나의 항목.
1979 년 Hopcroft와 Ullman, 1981 년 Lewis와 Papadimitriou, 특히 Sipser (2006)는 DFA를 교육적으로 정의하여 정확한 공식적 정의를 도입하고 그 중요성을 설명하고 그 중요성을 명확하게 설명하고있다 (p.36).
전이 함수 는 상태와 입력 심볼의 가능한 각 조합에 대해 정확히 하나의 다음 상태를 지정합니다.
이것은 역사적 발전을 따르는 것 같습니다. 결정 론적 유한 오토마타는 40 년대와 50 년대에 도입되었습니다. 결정적이지 않은 유한 오토마타는 논문에서 Rabin과 Scott에 의해 소개되었습니다. "Finite automata와 그 결정 문제, IBM J. Rsrch and Dvpt , 3 (2) : 114-125, 1959. Rabin과 Scott은 결정론을 정의했습니다. 유한 오토마타 ( 일반 오토마타라고 함)는 " 모든 상태와 기호 쌍의 데카르트 곱 에 정의 된"전이 함수 를 갖습니다.
흥미롭게도 Rabin과 Scott은 비 결정적 유한 오토마타를 총 함수의 관점에서 정의합니다! 페이지 120, 정의 9 :
결정적 (유한)는 오토 마톤 ... 시스템 인 함수!]의 모든 서브 세트들의 세트의 값 .
즉, 총계 인 전이 함수는 시스템을 결정적이지 않습니다!
Sipser 2006은 Rabin과 Scott을 따르며 비 결정적 유한 오토마타, 비 결정적 PDA 및 비 결정적 튜링 머신에 대한 그의 정의를 위해 상태 / 기호에서 상태의 전력 세트로의 전체 전환 기능을 사용하지만 결정 론적 주제는 생략합니다. PDA.
Hopcroft와 Ullman (1979)과 Lewis와 Papadimitriou (1981)는 결정 론적 PDA의 정의에서 부분 기능을 사용합니다. 먼저 전환 관계로 NPDA를 정의한 다음 PDA에 도달하면 Lewis와 Papadimitriou는 말합니다 (p. 135).
각 구성에 적용 가능한 전환이 최대 하나 인 경우 푸시 다운 오토 마톤은 결정 적이고 직관적입니다.
Hopcroft와 Ullman의 말 (112 페이지) :
PDA는 ... 어떤 ID에서든 최대 한 번만 이동할 수 있다는 의미에서 결정적입니다.
계산 성 측면에서 NFA는 DFA와 동일합니다. NFA에서 DFA로 변환하는 알고리즘이 있으며 DFA는 비결정론을 사용하지 않는 NFA 일 뿐이므로 일반 언어 세트를 정의합니다.
DFA에 대한 정의는
이 경우 모든 전환이 필요하지 않습니다. 오토 마톤에 다음 입력 심볼에 맞는 전이가 없으면 거부합니다.
두 언어의 정의가 어느 언어를 받아 들일 수 있는지에 대해 동등하다는 것을 보여주는 것은 좋은 연습입니다.