나는이 [재미있는] 질문을 염두에두고있다. 왜되는 비 결정적 유한 오토 마톤 라는 비 결정적 우리는 입력에 대해 전환을 정의하면서. 글쎄, 다중 및 엡실론 전환 이 있지만 , 그것들은 기계가 그러한 전환에 결정적임을 의미합니다. 그것은 결정적이라는 것을 의미합니다.
나는이 [재미있는] 질문을 염두에두고있다. 왜되는 비 결정적 유한 오토 마톤 라는 비 결정적 우리는 입력에 대해 전환을 정의하면서. 글쎄, 다중 및 엡실론 전환 이 있지만 , 그것들은 기계가 그러한 전환에 결정적임을 의미합니다. 그것은 결정적이라는 것을 의미합니다.
답변:
"결정적"이란 "시스템을 동일한 상황에 두 번두면 두 번 모두 동일한 선택을 보장합니다"를 의미합니다.
"비결정론 적"은 "결정적이지 않은"을 의미합니다. 즉, "시스템을 동일한 상황에 두 번 배치하면 두 번 모두 동일한 선택을 할 수도 있고 그렇지 않을 수도 있습니다"라는 의미입니다.
비 결정적 유한 오토 마톤 (NFA)은 상태에서 여러 번의 전환을 가질 수 있습니다. 이는 해당 상황에서 수행 할 수있는 작업에 대한 여러 옵션이 있음을 의미합니다. 항상 같은 것을 선택해야하는 것은 아닙니다. 한 입력에서는 첫 번째 전환을 선택하고 다른 입력에서는 동일한 전환을 선택할 수 있습니다.
여기서 "상황"을 "입력에서 다음에 읽은 심볼과 함께 NFA의 상태"로 생각할 수 있습니다. 둘 다 동일하더라도 NFA는 여전히 해당 상태에서 벗어날 수있는 여러 개의 일치하는 전환이있을 수 있으며, 어느 것을 선택해야하는지 임의로 선택할 수 있습니다. 반대로 DFA에는 해당 상황에서 사용할 수있는 일치하는 전환이 하나만 있으므로 선택의 여지가 없습니다. 해당 상황에있을 때마다 항상 동일한 전환을 따릅니다.
이 자동 장치를 예로 들어 보면 NFA이고 문자열 허용합니다 . 더 pedantic하기 위해 10으로 끝나는 문자열을 허용 합니다.
우리가 수락 상태에 도달했는지 확인하기 만하면됩니다.
이제 빨간 줄에 또 다른 가능성이있었습니다. 즉, 두 번째 읽을 때 나는 q 0에 머물 수 있습니다. 다음에 머물 마지막 읽을 때 0 . Automata에는 메모리가 없으므로 상태를 '저장'하고 내 문자열이 10으로 끝나는 지 나중에 확인할 수있는 방법이 없습니다. 이 NFA와 비슷합니다 . 허용 가능한 상태로 분기하기 전에 문자열이 끝나는 지 여부를 추측합니다 . 여기서 비결정론은 많은 선택을하고 항상 올바른 선택을하는 것입니다.
DFA를 만드는 것보다 NFA를 만드는 것이 더 쉽습니다. 좋은 점은 동등 .
NFA의 전환 기능은 특정 시점에서 허용되는 전환을 지정합니다. 하나 이상의 옵션이있을 수 있으며 NFA 는 최종적으로 수용 상태에 도달 할 목적으로 비 결정적 으로 전이를 선택합니다 .
비 결정적 튜링 머신에 대해 배울 때까지 기다려야 할 것입니다. 비결정론은 두 경우 모두 같은 의미입니다.
유한 오토 마톤으로 시작하십시오. 상태와 승인 상태 및 전환이 있습니다.
이제 각 상태에 대해 둘 이상의 전이 규칙을 제공하고 일련의 전이 규칙 이 있는 경우 수락한다고 말하십시오. 을 부여하고, 사실 이후에 선택된 하십시오. 제공하고 입력 문자열이 주어지면 수락 상태로 이어지는 .
입력 문자열이 있으면 고정 된 구체적인 전환 세트가 있으며 해당 문자열을 수락하기 위해 한 번에 하나씩 진행됩니다. 그러나 선택하는 전환 은 문자열의 끝 에서만 선택 됩니다 . 문자열을 읽는 동안 수행 할 경로는 결정되지 않습니다.
비 결정적입니다. 입력을 읽을 때가 아니라 전체 문제가 발생한 후 그래프를 통해 경로를 선택합니다.
자, 우리는 이것을이 생각 실험과 다르게 공식화하지만, 이것이 왜 그 이름을 얻었는지 동기를 부여합니다.
이것은 처음에 어떻게 이름을 얻었는지 설명합니다. 예, NDFA를 완전히 결정 론적으로 모델링 할 수 있지만 이름은 고정되어 있습니다. 일단 Bob이라고 부르면 Alice라고 할 때 아무도 당신이 무슨 말을하는지 알지 못하므로 다른 이름으로 바꾸려면 통신 비용이 발생합니다.
에서 위키 피 디아 , 이것에 대해 생각하는 가장 좋은 방법은 결정적 유한 상태 기계 (DFA)와 함께 시작하는 것입니다. DFA의 경우 각 전환은 현재 상태 및 처리 할 입력 심볼에 따라 고유하게 결정됩니다. 비결정론 적 유한 상태 머신 (NFA)은 전환이 고유하게 정의되지 않도록이 결정론 규칙을 완화 할 때 얻는 것입니다. DFA에서 결정 규칙을 제거하면 얻을 수있는 것입니다.
NFA와 DFA는 모두 다른 문자열 중에서도 특정 문자열을 인식하는 데 사용됩니다.
비 결정적 유한 오토 마톤은 결정에 영향을 미쳤던 것처럼 작동합니다. 경로를 따르도록 "선택"할 수 있습니다.
위의 이미지에서 문자열 "00111"을 처리 할 때 첫 번째 "1"을 발견하면 따라야 할 두 가지 방법이 있습니다. "p"에 머 무르거나 "q"로 갈 수 있습니다. 오토마타가 "q"로 이동해야한다면, 문자열을 받아들이지 않을 것입니다 ( "q"에서 가장자리가 나오지 않기 때문에). 그러나 문자열은 마지막 1로 "q"로 이동하여 다른 모든 것을 위해 "p"를 유지 함으로써이 automata에 의해 받아 들여질 수 있습니다 (그리고 그 일이 일어나고 있습니다).
NFA는이를 "자동화"한 것처럼 보이게하고 그에 따라 선택합니다.
물론 그렇지 않습니다. DFA와 NFA는 전력면에서 동등합니다 (NFA를 DFA로 줄이고 NFA를 사용하여 DFA를 더 간단하게 만들 수 있음). 그러나 NFA는 그래프를 많이 유지하면서 DFA와 동일한 언어를 정의 할 수 있기 때문에 유용합니다 더 짧고 읽기 쉽습니다.
거기에는 무작위가 없습니다. 결정적이지 않은 부분은 취해야 할 "선택"이 있다는 사실에 중점을 두지 만, 진실은 오토마타가 결정을 내리지 않는다는 것입니다.
여기에 [Peter Linz 4E의 공식 언어 및 오토마타 입문]의 내용과 나의 이해가 혼합되어 있습니다.
기계가 다음 움직임을 결정해야하는 게임 재생 프로그램을 고려하십시오 (예 : 틱택 토). 여러 이동이 가능하므로 결정적으로 각 이동을 선택하고 이동을 평가하고 가장 적합한 것을 선택합니다. 선택 과정이 결정 론적이며 가능한 많은 움직임이 있었음에도 불구하고, 최종적인 움직임은 단일 움직임이었고 시도 된 모든 움직임 계산을 상대방으로부터 숨기면서 최고의 움직임으로 선택되었습니다. [여기서 우리는 각각의 가능한 움직임의 평가 과정이 상대방에게 숨겨져 있다고 가정합니다].
따라서 하나의 선택 만하고 상대방에게 움직임이 결정적이지 않은 환상을 갖게됩니다.
글쎄, 당신이 최선의 움직임이 결정 론적 계산의 산물이라고 묻는 것에 의해 아직 확신하지 못한다면, 완벽하게 무작위적인 움직임을 만드는 기계를 고려해야합니다 (기계가 느슨해 지지만 NFA 일 것입니다).