푸시다운 오토마톤

Pushdown automaton
Combinational logicFinite-state machinePushdown automatonTuring machineAutomata theoryAutomata theory.svg
About this image
오토마타 클래스
(각 레이어를 클릭하면 해당 주제에 대한 기사가 표시됩니다.)

이론 컴퓨터 과학의 한 분야인 계산 이론에서 푸쉬다운 오토마톤(PDA)은 스택을 사용하는 오토마톤의 한 종류입니다.

푸시다운 오토마타는 기계로 계산할 수 있는 것에 대한 이론에서 사용됩니다.그것들은 유한 상태 기계보다 더 능력이 있지만 튜링 기계보다 더 능력이 떨어진다(아래 참조).결정론적 푸시다운 오토마타는 모든 결정론적 문맥 자유 언어를 인식할 수 있는 반면 비결정론적 문맥 자유 언어는 모든 문맥 자유 언어를 인식할 수 있으며, 전자는 파서 설계에 자주 사용된다.

"푸시다운"이란 작업은 상단 요소 이외에는 작동하지 않기 때문에 구내식당의 트레이 디스펜서처럼 스택이 "밀려 내려가는" 것으로 간주될 수 있다는 사실을 말합니다.반면 스택 자동화는 더 깊은 요소에 대한 액세스와 운영을 허용합니다.스택 오토마타는 푸시다운 [1]오토마타보다 훨씬 큰 언어 세트를 인식할 수 있습니다.네스트된 스택오토마톤은 풀액세스를 가능하게 하고 스택된 값을 단일 유한기호가 아닌 서브스택 전체로 할 수도 있습니다.

비공식적인 설명

푸시다운 오토마톤 그림

유한 상태 기계는 입력 신호와 현재 상태만 확인합니다. 즉, 사용할 스택이 없습니다.이행에 따른 결과로서 새로운 상태가 선택됩니다.Pushdown Automaton(PDA)다음 두 가지 점에서 유한 상태 기계와 다릅니다.

  1. 스택 상단을 사용하여 어떤 전환을 수행할지 결정할 수 있습니다.
  2. 이행의 일부로서 스택을 조작할 수 있습니다.

푸시다운 오토마톤은 소정의 입력 문자열을 왼쪽에서 오른쪽으로 읽는다.각 단계에서 입력 기호, 현재 상태 및 스택 상단의 기호를 기준으로 테이블을 인덱싱하여 전환을 선택합니다.푸시다운 오토마톤은 이행의 일부로서 스택을 조작할 수도 있습니다.조작은 특정 기호를 스택의 맨 위로 푸시하거나 스택의 맨 위에서 팝업하는 것입니다.자동화는 스택을 무시하고 그대로 둘 수도 있습니다.

조합: 입력 기호, 현재 상태 및 스택 기호를 지정하면 자동화는 다른 상태로의 이행에 따라 선택적으로 스택을 조작(푸시 또는 팝)할 수 있습니다.

모든 상황에서 이러한 이행 액션이 1개라도 가능한 경우, 자동화는 결정론적 푸시다운 오토마톤(DPDA)이라고 불립니다.일반적으로 몇 가지 동작이 가능한 경우 자동화는 일반 또는 비확정론적 PDA라고 불립니다.지정된 입력 문자열은 여러 구성 시퀀스 중 하나로 비확정론적 푸시다운 자동화를 유도할 수 있습니다.입력 문자열 전체를 읽은 후 이들 중 하나가 수용 가능한 구성으로 이어질 경우, 후자는 th에 속한다고 합니다.자동화에 의해 받아들여지는 e언어.

형식적 정의

We use standard formal language notation: denotes the set of finite-length strings over alphabet and denotes the empty string.

PDA는 공식적으로 7 태플이라고 정의됩니다.

( , , , 0 ,0 , ,) ( M = ( , \ , \ , \ displaystyle , _ { , , ) 。여기서,

  • Q 유한한 상태의 집합입니다.
  • \Sigma)는 입력 알파벳이라고 하는 유한 집합입니다.
  • \Gamma)는 스택알파벳이라고 불리는 유한세트입니다.
  • { \ deltaQ× ( { ) × ( \ \ \ { \ \ \ { * } )의 유한 서브셋입니다
  • 00}\ Q 시작 상태입니다.
  • Zdisplay \ \ \ Gamma 초기 스택 기호입니다.
  • Q(\ F 수용 상태의 집합입니다.

요소 , a, , ,α ) , , , , \)\}는 M{\ M의 천이입니다. { p Q의 의미를 가집니다. A 최상위 스택 기호로서 \q A A로 하고, displaydisplay \ 를 눌러 할 수 있습니다변환 관계는 PDA가 입력으로부터 문자를 읽거나 입력이 [citation needed]변경되지 않은 상태로 진행할 수 있도록 공식화하기 위해 사용됩니다.

많은[2]: 110 텍스트에서 전이 관계는 (등가) 공식화로 대체된다.

  • { \ delta}는 Q× ( } ) ×\ ( \ \ \ { \ \ \ Gamma×의 유한 에 매핑하는 함수입니다

( , , A) { p , , ) 에는, 스택상의A{\ p}에서 가능한 모든 액션이 포함되어 있습니다.또 입력상의 A {\ a . 들어(a) { ( ) \ { (A)\{(q,{(, B A ) ,( ) ,A )\ 이 정의에서는 유한성이 필수적입니다

계산

푸시다운 오토마톤의 한 단계

푸시다운 자동화의 의미를 공식화하기 위해 현재 상황에 대한 설명이 도입된다.^{*}\ \M의 상태를 포함한 임의의 3-tuple(, × \ ( p, \ ) \ Gamma ^{*}{ { { { { { {{ { is is is is is is is is is is is any any any any any an an any any any any any any any any any any any any any any any any any any any any이행관계 { style \ } M \ \ _ { } descript descript the the the the theionsionsionsionsionsionsionsions , , , , α ) \ , , A , , \\ \ delta}( , , ) \ p , \ ) \ { , \ dash

일반적으로 푸시다운 오토마타는 특정 순간 설명 , ,β ){style ( , , \ )} 에는 몇 가지 가능한 단계가 있을 수 있다는 것을 의미합니다.이러한 단계는 모두 계산에서 선택할 수 있습니다.각 단계에서 위의 정의를 사용하면 항상 단일 기호(스택의 상단)가 팝업되어 필요한 수의 기호로 대체됩니다.그 결과 스택이 비어 있을 때는 스텝이 정의되지 않습니다.

푸시다운 오토마톤의 연산은 스텝의 시퀀스입니다.연산은 초기 00})에서 시작되며, 스택의 초기 스택 Z({Z})와 입력 테이프의 w({w})로 시작됩니다.따라서 초기 설명을 사용하여 허용 모드는 두 가지가 있습니다.푸쉬다운 오토마톤은 최종 상태로 받아들여집니다.즉, 입력 내용을 읽은 후 오토마톤이 승인 상태에 도달하거나({\ F 또는 빈 스택 by {\으로 받아들여집니다.즉, 입력 내용을 읽은 후 오토마톤이 스택을 비웁니다.첫 번째 수용 모드에서는 내부 메모리(스테이트)가 사용되고 두 번째 수용 모드에서는 외부 메모리(스택)가 사용됩니다.

정식으로 정의하다

  1. M ) { 0 , , Z )M f , \ \ Sigma ^ { * } ( 0 , ) \ _ { M } \ ) 、
  2. ( ) { 0 , , ) M q , ,w , Z N ( M ) = \ { w\ \ Sigma ^ { * } ( , w , Z ) \ _ { M ( \ ) 、 \ 。

M { style \ { * }은 스텝 관계재귀적전이적 폐쇄를 나타냅니다.즉, 연속되는 스텝의 수(0, 1 또는 그 이상)를 의미합니다.

각각의 푸시다운 오토마톤에 대해서, 이 2개의 언어는 관계가 없습니다.동일할 수도 있지만, 통상은 그렇지 않습니다.자동 사양에는 의도된 수용 모드도 포함되어야 합니다.모든 푸시다운 오토마타를 인계받으면 두 허용 조건 모두 동일한 언어 패밀리를 정의합니다.

정리.각 푸시다운 MM})에 대해 L 푸시다운 M M 구성할 수 있으며, 각 푸시다운 M({ M 대해 L) = N이 되도록 푸시다운 오토마톤 M({displaystyle M')을 할 수 있습니다

다음으로 언어{ 1 n 0{ \ { ^ { } { n } \ mid \ 0\ } 를 최종 상태로 인식하는 PDA 의 정식 설명을 나타냅니다.

{ 1 n 0 {\ { { } \ n \ 0 }용 PDA
(최종 상태별)

(Q , , , , ,0 , , ){ M = ( \ \ \ displaystyle } 、 \ displaystyle = ( Q , \ Sigma , \ \ \ Gamma , \ 、 \ \ { , \ \ 0 , \ )} 、 \ Z , \ F ) 。 。 、 。 。 。 。 。

  • 상태:
  • 입력 알파벳:
  • 스택 알파벳:
  • 시작 상태:
  • 시작 스택 기호: Z
  • 수용 상태:

이행관계©(\ 다음 6가지 명령으로 구성됩니다.

, , , , ) ( , , , ,
, , , , )( , , , ,
, , , ) {( , \ , , )} ,
, , ,) { ( , \ , , )} ,
,1 , , ," )( , 1, , , \ ) ,
, ",Z , , ){ , \ , , )} 。

즉, 처음 두 명령은 상태 p에서 기호 0을 읽을 때마다 1개의 A가 스택에 푸시된다고 합니다.다른 A 위에 누르는 기호 A를 AA로 대체한다(또한 마찬가지로 기호 A를 Z 에 누르는 것도 마찬가지).

세 번째와 네 번째 명령은 자동화가 언제든지 상태 p에서 상태 q로 이동할 수 있다고 말합니다.

다섯 번째 명령에서는 상태 q에서 기호 1을 읽을 때마다 A가 하나 팝된다고 합니다.

마지막으로, 여섯 번째 명령은 스택이 단일 Z로 구성되어 있는 경우에만 기계가 상태 q에서 수용 상태 r로 이동할 수 있다고 말한다.

PDA에 일반적으로 사용되는 표현은 없는 것 같습니다.여기서는 명령어 q p에서 상태 엣지로 표시)(읽기 a; 치환A를 α\)로 나타냅니다.

계산 프로세스의 이해

0011에 대한 계산 수락

다음으로 상기의 PDA가 다른 입력 문자열로 어떻게 계산되는지를 나타냅니다.스텝 기호 서브스크립트 M은 생략되어 있습니다.

  1. 입력 문자열 = 0011.상태 p에서 상태 q로 이동하는 순간에 따라 다양한 계산이 있습니다.이 중 하나만 수락할 수 있습니다.

    1. 최종 상태는 수용 중이지만, 입력은 읽혀지지 않았기 때문에 이 방법으로 받아들여지지 않습니다.

    2. 더 이상의 단계는 불가능합니다.

    3. Accepting computation: 완전한 입력을 읽는 동안 Accepting 상태로 종료됩니다.
  2. 입력 문자열 = 00111.또, 여러가지 계산이 있습니다.이 중 어느 것도 받아들여지지 않는다.

    1. 최종 상태는 수용 중이지만, 입력은 읽혀지지 않았기 때문에 이 방법으로 받아들여지지 않습니다.

    2. 더 이상의 단계는 불가능합니다.

    3. 최종 상태는 수락 중이지만, (완전하게) 읽혀지지 않았기 때문에 입력은 이 방법으로 수락되지 않습니다.

PDA 및 컨텍스트프리 언어

모든 문맥 없는 문법은 동등한 비결정론적 푸시다운 오토마톤으로 변환될 수 있습니다.문법의 파생 과정은 가장 왼쪽에 있는 방식으로 시뮬레이션됩니다.문법에 의해 비터미널이 고쳐지는 경우 PDA는 최상위 비터미널을 스택에서 가져와 문법 규칙(확장)의 오른쪽 부분으로 대체합니다.문법이 터미널 기호를 생성하는 경우, PDA는 스택의 맨 위에 있는 기호(일치)일 때 입력에서 기호를 읽습니다.어떤 의미에서 PDA의 스택은 파생 트리의 사전 순서 트래버스에 대응하는 문법의 미처리 데이터를 포함한다.

기술적으로 문맥이 없는 문법이 주어졌을 때 PDA는 단일 상태 1을 가지며, 그 전이 관계는 다음과 같이 구성된다.

  1. α A\alpha (1 , \ , A , 1 , \ (1 , \ ( 1 ,, \alpha )
  2. , , , a, , ) 단말기의 {displaystyle , 1, ))는 「\a}(일치)」를 .

PDA는 빈 스택으로 받아들인다.첫 번째 스택 기호는 문법의 시작 [citation needed]기호입니다.

Greibach normal 형식의 문맥 없는 문법의 경우, 각 문법 규칙 A → a에 대해 (1,a,A)를 정의하면 동등한 비결정론적 푸쉬다운 [2]: 115 오토마톤도 생성된다.

반대로 주어진 PDA에 대한 문법을 찾는 것은 쉽지 않습니다.요령은 PDA의 두 상태를 문법의 비말단으로 코드화하는 것이다.

정리.각 푸시다운 M(\ M 대해 N { N)=[2]: 116 문맥이 없는 G(\G)를 구성할 수 있습니다.

결정론적 푸시다운 오토마톤(DPDA)에 의해 받아들여지는 문자열의 언어를 결정론적 컨텍스트프리 언어라고 부릅니다.모든 문맥이 없는 언어가 결정론적인 [note 1]것은 아닙니다.그 결과, DPDA는 PDA의 완전히 약한 변형입니다.일반 언어에서도 크기가 폭발적으로 증가하는 문제가 있습니다. f\f\ n\ ndisplaystyle n n\displaystyle ndisplaystyle n\ style n}의 최소 DPDA가[4]f(\ f 갖는 정규 언어)를 나타냅니다.많은 비정규 PDA에서 동등한 DPDA는 무제한의 상태를 필요로 합니다.

2개의 스택에 액세스 할 수 있는 유한 오토마톤은 튜링 [2]: 171 머신과 동등한 파워의 디바이스입니다.선형유계오토마톤은 푸쉬다운오토마톤보다 강력하지만 [note 2]튜링기계보다는 덜 강력한 장치이다.

PDA 및 튜링 머신

푸쉬다운 오토마톤은 다음과 같이 2개의 테이프가 있는 '제한된' 튜링 머신(TM)과 계산상 동등합니다.첫 번째 테이프에서는 TM은 입력을 읽고 왼쪽에서 오른쪽으로만 이동할 수 있습니다(변경할 수 없습니다).두 번째 테이프에서는 데이터를 '푸시'하고 '팝'할 수만 있습니다.또는 각 단계에서 실행할 수 있는 유일한 조작은 문자열의 왼쪽 끝 문자(팝)를 삭제하거나 문자열의 왼쪽 끝 문자(푸시)에 왼쪽 문자를 추가하는 것(푸시) 중 하나뿐이라는 제약에 따라 읽기, 쓰기, 좌우로 이동할 수 있습니다.

PDA가 TM보다 약하다는 것은 '팝' 절차로 일부 데이터가 삭제된다는 것으로 요약할 수 있습니다.PDA를 TM만큼 강력한 PDA로 만들기 위해서는 '팝'을 통해 손실된 데이터를 어딘가에 저장해야 합니다.두 번째 스택을 도입함으로써 이를 달성할 수 있습니다.전항의 PDA의 TM 모델에서는, 이것은 3개의 테이프가 있는 TM에 상당합니다.첫 번째 테이프는 읽기 전용 입력 테이프이고, 두 번째와 세 번째 테이프는 '푸시 앤 팝'(스택)이러한 PDA가 임의의 TM을 시뮬레이트 하기 위해서, 양쪽의 스택을 비운 채로, 첫 번째 테이프에 PDA의 입력을 제공합니다.그런 다음 입력 테이프에서 첫 번째 스택으로 모든 입력을 푸시합니다.입력 전체가 첫 번째 스택으로 전송되면 일반 TM과 같이 진행됩니다.테이프상에서 오른쪽으로 이동하면 첫 번째 스택에서 심볼이 튀어나와 두 번째 스택에 (업데이트될 가능성이 있음) 심볼이 삽입되고 왼쪽으로 이동하면 두 번째 스택에서 심볼이 튀어나와 (업데이트될 가능성이 있음) 심볼이 삽입됩니다.첫 번째 스택따라서 모든 TM을 시뮬레이트할 수 있는 2개의 스택이 있는 PDA가 있습니다.

Generalized Pushdown Automaton(GPDA)

GPDA는 기존의 길이의 문자열 전체를 스택에 쓰거나 문자열 전체를 한 번에 스택에서 삭제하는 PDA입니다.

GPDA는 공식적으로 6-튜플로 정의된다.

서 Q , 0 Q F PDA와 동일하게 정의됩니다.

{ } , \ }: Q × ×P ( × ) 。{ \ \ _ { \ \ \ Gamma { * } \ P ( \ \ Gamma * )

전환 함수입니다.

GPDA의 계산 규칙은 + b + 이 기호가 아닌 문자열이라는 점을 제외하고 PDA와 동일합니다.

GPDA와 PDA는 언어를 PDA로 인식하면 GPDA로 인식한다는 점에서 동등하다.

다음 시뮬레이션을 사용하여 GPDA와 PDA의 동등성에 대한 분석 증거를 작성할 수 있습니다.

(, 1 2 x ) ( 2, y2 .. n ){ style ( _ {1 w , 2 x _ { } \ rightarrow ( { 2 , _ { 1 } _ { 2 . } ) 。 GPDA의 천이입니다.

1, 2 , w , x, m、 、 , 2 、 …, n 0 0 \ }, }\ _ _ _ _ _ _ 。

PDA 에 대해서, 다음의 트랜지션을 설정합니다.

스택 오토마톤

푸시다운 오토마타의 일반화로서 Ginsburg, Greibach 및 Harrison(1967)은 스택 오토마타를 조사했습니다.스택 오토마타는 입력 문자열에서 왼쪽 또는 오른쪽으로 추가 스텝(슬립아웃을 방지하기 위해 특별한 엔드마커 기호로 둘러싸임)하여 스택 내에서 스텝 업 또는 다운할 수 있습니다.[5][6]스택 오토마톤이 스택에서 팝업되지 않으면 비지우기라고 불립니다.비결정적, 비삭제적 스택오토마타에 의해 받아들여지는 언어의 클래스는 NSPACE(n2)입니다.NSPACE(n)는 상황에 맞는 [1]언어의 상위 집합입니다.결정론적 비삭제 스택오토마타가 받아들이는 언어 클래스는 DSPACE(n'log(n))[1]입니다.

교체식 푸시다운 오토마타

APDA(Alternating Pushdown Automaton)는 상태가 설정된 푸시다운 자동화입니다.

  • Q ∀∀ { \ } \ Q _ { \ } Q \ Q _ { \ } \ _ { \ } = \

Q Q 존재론적 응답이라고 불립니다.보편적실존상태에서 APDA는 비결정적으로 다음 상태를 선택하고 결과 계산 중 적어도 하나가 받아들여지면 받아들인다.유니버설 상태에서는 APDA는 모든 다음 상태로 이동하고 모든 결과 계산이 허용되는지 여부를 승인합니다.

이 모델은 찬드라, 코젠, 스톡마이어[7]의해 소개되었다.Ladner, LiptonStockmeyer[8] 이 모델이 EXPTIME과 동등하다는 것을 증명했다. 즉, 지수 시간 알고리즘에 의해 결정될 있는 경우에만 일부 APDA에 의해 언어가 허용된다.

아이지코위츠와 카민스키는[9] 비결정론적 PDA와 같은 방식으로 결합문법에 해당하는 동기식 교대 푸시다운 오토마타(SAPDA)를 도입했다.

「 」를 참조해 주세요.

메모들

  1. ^ 비트들의 짝수 길이의 회문 집합은 결정론적 PDA에 의해 인식될 수 없지만, 문법S → 0 0S0 1S1인 [3]문맥이 없는 언어이다.
  2. ^ 선형 유계 오토마타는 문맥이 [2]: 225 없는 언어의 적절한 슈퍼클래스인 문맥에 민감한 언어의 클래스 및 튜링 인식 가능한([2]: 228 재귀적으로 열거 가능한) 언어의 적절한 하위 클래스인 수용자이다.

레퍼런스

  1. ^ a b c John E. Hopcroft; Jeffrey D. Ullman (1967). "Nonerasing Stack Automata". Journal of Computer and System Sciences. 1 (2): 166–186. doi:10.1016/s0022-0000(67)80013-8.
  2. ^ a b c d e f John E. Hopcroft and Jeffrey D. Ullman (1979). Introduction to Automata Theory, Languages, and Computation. Reading/MA: Addison-Wesley. ISBN 0-201-02988-X.
  3. ^ John E. Hopcroft; Rajeev Motwani; Jeffrey D. Ullman (2003). Introduction to Automata Theory, Languages, and Computation. Addison Wesley. 여기: 제6.4.3장, 249페이지
  4. ^ 홀저, 마르쿠스;Kutrib, 마틴(2019년)."Non-Recursive Trade-Offs도"Almost Everywhere"".예지와 산업과. 컴퓨터 11558:25–36. doi:10.1007/978-3-030-22996-2_3.이 인용된[22Proposition7]과 그 규정된 관찰을 통해 어떠한 결정성 푸시 다운 automaton 가장doubly-exponential 크기에의 등가 유한 automaton[ 밝히다]으로 전환될 따른다.
  5. ^ Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison (1967). "Stack Automata and Compiling". J. ACM. 14 (1): 172–201. doi:10.1145/321371.321385.
  6. ^ Seymour Ginsburg, Sheila A. Greibach and Michael A. Harrison (1967). "One-Way Stack Automata". J. ACM. 14 (2): 389–418. doi:10.1145/321386.321403.
  7. ^ Chandra, Ashok K.; Kozen, Dexter C.; Stockmeyer, Larry J. (1981). "Alternation". Journal of the ACM. 28 (1): 114–133. doi:10.1145/322234.322243. ISSN 0004-5411.
  8. ^ Ladner, Richard E.; Lipton, Richard J.; Stockmeyer, Larry J. (1984). "Alternating Pushdown and Stack Automata". SIAM Journal on Computing. 13 (1): 135–155. doi:10.1137/0213010. ISSN 0097-5397.
  9. ^ Aizikowitz, Tamar; Kaminski, Michael (2011). "LR(0) Conjunctive Grammars and Deterministic Synchronized Alternating Pushdown Automata". Computer Science – Theory and Applications. Lecture Notes in Computer Science. Vol. 6651. pp. 345–358. doi:10.1007/978-3-642-20712-9_27. ISBN 978-3-642-20711-2. ISSN 0302-9743.

외부 링크

  • JFLAP, 비결정적 푸시다운 오토마타를 포함한 여러 유형의 오토마타를 위한 시뮬레이터
  • CoAn, 비결정적 푸시다운 오토마타(C++, Windows, Linux, MacOS)를 포함한 여러 종류의 머신에 대한 또 다른 시뮬레이터