언어 L 의 순환 쉬프트 ( 회전 또는 컨쥬 게이션 이라고도 함 )는 { y x ∣ x y ∈ L } 로 정의됩니다 . 위키 백과 (및 여기 ) 에 따르면 오 시바 (Oshiba)와 마스 로프 (Maslov)의 논문을 참조하여 문맥없는 언어가이 작업에서 닫힙니다. 이 사실에 대한 쉬운 증거가 있습니까?
일반 언어의 경우 클로저는이 형식에서 " 일반 언어가주기 연산자에서 닫히는 것을 증명합니다 "로 설명됩니다 .
언어 L 의 순환 쉬프트 ( 회전 또는 컨쥬 게이션 이라고도 함 )는 { y x ∣ x y ∈ L } 로 정의됩니다 . 위키 백과 (및 여기 ) 에 따르면 오 시바 (Oshiba)와 마스 로프 (Maslov)의 논문을 참조하여 문맥없는 언어가이 작업에서 닫힙니다. 이 사실에 대한 쉬운 증거가 있습니까?
일반 언어의 경우 클로저는이 형식에서 " 일반 언어가주기 연산자에서 닫히는 것을 증명합니다 "로 설명됩니다 .
답변:
푸시 다운 오토마타를 사용할 수 있습니다. 원래 언어에 대한 푸시 다운 오토 마톤이 주어지면 순환 쉬프트를위한 푸시 다운 오토 마톤이 생성됩니다. 새로운 오토 마톤은 와 단어 y x 의 x 부분 (여기서 x y 는 원래 언어 임)에 해당하는 두 단계로 작동합니다 . 첫 번째 단계에서, 오토 마톤이 비 터미널 A 를 팝하고 싶을 때마다 비 터미널 A ' 를 밀 수 있습니다 . 아이디어는 첫 번째 단계가 끝나면 스택에 x 를 읽은 후 스택에서 찾은 기호를 역순으로 포함한다는 것입니다.원래 오토 마톤으로 두 번째 단계 (스위치는 비결정적임)에서 비 터미널 를 푸시하는 대신 비 터미널 A '를 팝할 수 있습니다. 원래 오토 마톤이 실제로 x 를 읽을 때 스택을 생성 할 수 있다면, 새로운 자동 스택 은 전체 스택을 정확하게 팝할 수 있습니다.
편집 : 자세한 내용은 다음과 같습니다. 알파벳 , 상태 세트 Q , 수락 상태 세트 F , 비 터미널 Γ , 초기 상태 q 0 및 허용 가능한 전이 세트가 있는 PDA가 있다고 가정 합니다. 각 허용 전이 형태이다 ( Q , , , Q ' , α ) 즉, 그 때 상태에서 Q , 읽으면 ∈ (또는 = ε 가기 경우 자유 전이의 경우에 등) 스택은 A ∈ (또는 = ε 스택이 비어있는 수단, 예), PDA 상태로 이동 (이 비 결정적 모델의) 수 Q ' 대체와 α ∈ Γ * .
새로운 PDA는 새로운 비 - 터미널 갖는다 ' 각각 ∈ Γ를 . 두 개의 상태 q , q ′ ∈ Q 및 A ∈ Γ ∪ { ϵ } 에 대해 두 가지 상태 ( q , q ′ , 1 ) , ( q , q ′ , 2 , A )가 있습니다. 시작 상태는 (실제 시작 상태들을 통해 중에서 무작위로 선택된다 ε -transitions)이다 ( . 각 천이 ( Q , , , Q ' , α ) 천이가 대응된다 ( ( Q , Q ' , 1 ) , , , ( Q ' , Q ' , 1 ) , α ) 와 ( ( Q를 , q ″ , 2 , B . 다른 전환도 있습니다.
각 천이 , 전이가있다 ( ( Q , Q ' , 1 ) , , B ' , ( Q ' , Q ' , 1 ) , B ' ' α ) 여기서 B ∈ Γ ∪ { ϵ } 및 ϵ ′ = . 모든 최종 상태를 들면 Q ∈ F , 전환있다 ( ( Q , Q ' , 1 ) , ε , , ( Q 0 , Q ' , 2 , ε ) , ) 여기서 ∈ Γ ∪ { ε는 } .
모든 천이 , 전환있다 ( ( Q , Q ' , 2 , ) , , B ' , ( Q ' , Q ' , 2 , ) , B ' α ) 여기서 ∈ Γ ∪ { ε } . 모든 전환에 , 전환있다 ( ( Q , Q ' , (2) , B ) , , ' , ( Q ' , Q ' , 2 , ) , ε ) , B ∈ Γ ∪ { ϵ } . 모든 전환 ( q , a , "일반화 전환"이있다 ( ( Q , Q ' , 2 , C ) , , B ' , ( Q , Q ' , 2 , C ) , ε가 ) ; 이들은 중간 새로운 상태를 통한 두 개의 전이의 시퀀스로 구현됩니다. 전환 ( q , a , ϵ , q ′ , 와 | α | ≥ 2 도 비슷하게 처리됩니다. 모든 전이 ( q , a , A , q ' , A ) 에 대해 전이 ( ( q , q ' ' , 2 , A ) , a , B , ( q ' ' , q ' ' , 2 , A ) , B ) , 어디 B ∈ . 전환은 ( q는 , a는 , , Q ' , α는 ) 유사하게 처리됩니다. 마지막으로 유일한 최종 상태 f 와 전이 ( ( q , q , 2 , A ) , ϵ , ϵ , f , ϵ )가 있습니다.
(내가 놓친 몇 가지 전환이있을 수 있으며 생략하는 세부 사항은 다소 지저분합니다.)
우리는 단어 를 받아들이 려하고 있습니다 . 여기서 x y 는 원래 PDA에 의해 수용됩니다. 상태 ( q , q ' , 1 ) 는 우리가 1 단계, 상태 q 에 있고 원래 PDA가 x 를 읽은 후 상태 q '에 있음 을 의미 합니다. 상태 ( q , q ' , 2 , A ) 는 유사하며, 여기서 A 는 마지막 으로 팝된 A '에 해당합니다. 1 단계에서 A ' 를 누를 수 있습니다 . 대신에 . 우리는 x 를 처리하는 동안 생성 되지만 y 를 처리하는 동안에 만 터지는 각 비 터미널에 대해 그렇게합니다 . 2 단계에서, 우리는 팝업 허용 을 ' 대신 밀어 를 . 이 작업을 수행하면 재고가 실제로 A 라는 것을 기억해야합니다 . 이것은 스택에 "임시"항목이없는 경우에만 적용되며, 시뮬레이션 된 PDA에서 스택 상단과 ϵ 또는 B ' 형식과 동일합니다 .
다음은 간단한 예입니다. 위한 기계적 고려 가압 을 각각 X , 팝 를 각 Y를 . 새로운 오토 마톤은 y k x n y n - k 와 x k y n x n - k 의 두 가지 형태의 단어를 받아들입니다 . 첫 번째 형태의 단어를, 제 1 단계는 추진 구성 케이 회 를 ' , 단계 2 펑 구성 케이 회 를 " 밀고 N 번 을 하고 터지는 N - 케이 번. 두 번째 형태의 단어를 들어, 제 푸시 K의 시간 A는 다음 팝업 케이 회푸시 N - K의 회 ' , 2 단계로 변화하고, 팝업 N - K의 시간 를 ' .
각 유형의 괄호의 직계 자손이 다른 유형에 속하도록 다양한 유형 ( "()", "[]", "<>")의 균형 괄호 언어에 대한보다 복잡한 예는 다음과 같습니다. 예를 들어 "([] <>)"는 정상이지만 "()"은 잘못되었습니다. 각 "(")에 대해 스택 상단이 A 가 아닌 경우 를 푸시 하고 각 ")"에 대해 A 를 팝 합니다. 마찬가지로 B , C 는 "[]"및 "<" "와 연관됩니다. 다음은 ">) ([()] <"라는 단어를 받아들이는 방법입니다. ">)"를 소비하고 C ′ A ′를 누르고 2 단계로 넘어갑니다. 우리는 "(", A ' 팝 및 스택 A를 기억합니다 . 우리는 "[()]"을 소비하고 밀고 터지는 ; B 를 푸시 할 때"실제"스택의 최상위가 A 이므로 대괄호가 허용됩니다 ( ">) (() <"). A 를 푸시 할 때스택 상단이 B ( ϵ 또는 X ' 형식이 아님)이므로 B 는 "실제"스택 상단이므로 둥근 괄호가 허용됩니다 ( 그림자 상단 스택이 A 이지만). 마지막으로 "<"와 pop C '를 소비합니다.
오래된 Hopcroft and Ullman 고전 서론 Automata 이론 (1979) 을 확인하는 것이 좋습니다 . 사이클 종료는 연습 6.4c이며 S **로 표시됩니다. 이중 별표는 그것이 가장 어려운 문제 중 하나임을 의미합니다 (책에서). 다행히도 S는 솔루션에서 선택된 문제 중 하나임을 나타냅니다.
건설에 대한 자세한 내용은 책에 나와 있습니다.
이것이 Yuval의 (허용 된) 솔루션을 생각 나게하는 방법에 주목하십시오. 터지는 대신 밀린 비 터미널은 스택에서 반대 순서입니다. 나무의 거꾸로와 매우 유사합니다.