제한된 양의 스토리지가있는 머신에서 실행되는 단일 스레드 프로그램은 유한 상태 머신으로 모델링 될 수 있습니다. 유한 상태 머신의 특정 상태는 로컬 변수, 전역 변수, 힙 스토리지, 가상 메모리에서 현재 스왑 된 데이터, 관련 파일의 내용 등 모든 관련 스토리지의 특정 값을 나타냅니다. 다시 말해, 유한 상태 모델에는 아주 사소한 프로그램조차도 많은 상태 가있을 것 입니다.
프로그램의 유일한 상태가 32 비트 정수 유형의 단일 전역 변수 인 경우에도 적어도 2 ^ 32 (40 억 개 이상) 상태를 의미합니다. 그리고 그것은 프로그램 카운터와 콜 스택을 고려하지도 않습니다.
푸시 다운 오토 마톤 모델은 이런 종류의 것에 더 현실적입니다. 유한 오토 마톤과 비슷하지만 스택 개념이 내장되어 있습니다. 그러나 대부분의 프로그래밍 언어에서와 마찬가지로 실제로 콜 스택은 아닙니다.
거기의 위키 백과의 설명은 있지만, 공식적인 정의 부분에서 속도가 느려하지 않습니다.
푸시 다운 오토마타는 일반 계산을 모델링하는 데 사용됩니다. 튜링 머신 은 비슷 하지만 IIRC는 동일하지 않지만 계산 기능은 동일 합니다.
위의 오류를 지적한 kevin cline에게 감사드립니다. Wikipedia 도 지적했듯이 푸시 다운 오토마타는 유한 상태 머신보다 강력하지만 튜링 머신보다 덜 강력합니다.
나는 -이 뇌 방귀가 어디에서 왔는지 솔직히 모르겠어요 할 중요한 문법이 문맥 자유보다 더 강력한 그 상황을 알고, 그 상황에 맞는 문법은 간단한 푸시 다운 오토마타를 사용하여 구문 분석 할 수 없습니다. 심지어 문맥 상 명확한 문법을 선형 시간으로 파싱하는 것이 가능하지만 일반적으로 (결정 론적) 푸시 다운 오토 마톤 이상이 필요하다는 것을 알고 있습니다. 푸시 다운 오토 마톤이 튜링 머신과 똑같다는 믿음을 가지게됩니다.
어쩌면 추가 기계가 추가 된 푸시 다운 오토 마톤을 생각하고 있었지만 푸시 다운 오토 마톤과 같은 유한 오토 마톤을 계산하는 것과 같습니다 (스택을 추가하고 악용하십시오).
푸시 다운 오토마타는 구문 분석에 중요합니다. 나는 그 맥락에서 그들에게 충분히 익숙하지만, 실제로 그것들을 컴퓨터 과학 계산 모델로 연구 한 적이 없기 때문에, 나는 이미 가지고있는 것보다 더 자세한 내용을 말할 수 없습니다.
단일 OOP 객체를 유한 상태 머신으로 모델링 할 수 있습니다. 머신의 상태는 모든 멤버 변수의 상태에 따라 결정됩니다. 일반적으로 메소드 호출 중 (비가 아닌) 사이의 유효한 상태 만 계산합니다. 다시 말하지만, 일반적으로 걱정해야 할 상태가 많이 있습니다. 이론적 인 모델로 사용할 수도 있지만 사소한 경우를 제외하고는 모든 상태를 열거하고 싶지는 않습니다.
그러나 유한 상태 머신을 사용하여 객체 상태의 일부 측면 을 모델링하는 것이 일반적 입니다. 일반적인 경우는 게임 개체에 대한 AI입니다.
이것은 또한 푸시 다운 오토 마톤 모델을 사용하여 파서를 정의 할 때 수행되는 작업입니다. 상태 모델에는 유한 상태 세트가 있지만 파서 상태의 일부만 모델링합니다. 추가 정보는 해당 상태와 함께 추가 변수에 저장됩니다. 이를 통해 예를 들어 4 십억 개의 정수형 문제가 해결됩니다. 이러한 모든 상태를 열거하지는 않고 정수 변수 만 포함하면됩니다. 어떤 의미에서는 여전히 푸시 다운 오토 마톤 상태의 일부이지만 실제로 다이어그램에 40 억 개의 상태 버블을 그리는 것보다 훨씬 관리하기 쉬운 접근 방식입니다.