주기적 교대 상태에서 컨텍스트가없는 언어가 닫히는 것에 대한 쉬운 증거


11

언어 L순환 쉬프트 ( 회전 또는 컨쥬 게이션 이라고도 함 )는 { y x x y L } 로 정의됩니다 . 위키 백과 (및 여기 ) 에 따르면 오 시바 (Oshiba)와 마스 로프 (Maslov)의 논문을 참조하여 문맥없는 언어가이 작업에서 닫힙니다. 이 사실에 대한 쉬운 증거가 있습니까?L{yxxyL}

일반 언어의 경우 클로저는이 형식에서 " 일반 언어가주기 연산자에서 닫히는 것을 증명합니다 "로 설명됩니다 .

답변:


5

푸시 다운 오토마타를 사용할 수 있습니다. 원래 언어에 대한 푸시 다운 오토 마톤이 주어지면 순환 쉬프트를위한 ​​푸시 다운 오토 마톤이 생성됩니다. 새로운 오토 마톤은 와 단어 y xx 부분 (여기서 x y 는 원래 언어 임)에 해당하는 두 단계로 작동합니다 . 첫 번째 단계에서, 오토 마톤이 비 터미널 A 를 팝하고 싶을 때마다 비 터미널 A ' 를 밀 수 있습니다 . 아이디어는 첫 번째 단계가 끝나면 스택에 x 를 읽은 후 스택에서 찾은 기호를 역순으로 포함한다는 것입니다.yxyxxyAAx원래 오토 마톤으로 두 번째 단계 (스위치는 비결정적임)에서 비 터미널 를 푸시하는 대신 비 터미널 A '를 팝할 수 있습니다. 원래 오토 마톤이 실제로 x 를 읽을 때 스택을 생성 할 수 있다면, 새로운 자동 스택 은 전체 스택을 정확하게 팝할 수 있습니다.AAx

편집 : 자세한 내용은 다음과 같습니다. 알파벳 , 상태 세트 Q , 수락 상태 세트 F , 비 터미널 Γ , 초기 상태 q 0 및 허용 가능한 전이 세트가 있는 PDA가 있다고 가정 합니다. 각 허용 전이 형태이다 ( Q , , , Q ' , α ) 즉, 그 때 상태에서 Q , 읽으면 (또는 = ε 가기 경우 자유 전이의 경우에 등) 스택은 A ΣQFΓq0(q,a,A,q,α)qaAa=ϵ (또는 = ε 스택이 비어있는 수단, 예), PDA 상태로 이동 (이 비 결정적 모델의) 수 Q ' 대체와 α Γ * .AΓA=ϵqAαΓ

새로운 PDA는 새로운 비 - 터미널 갖는다 ' 각각 Γ를 . 두 개의 상태 q , q QA Γ { ϵ } 에 대해 두 가지 상태 ( q , q , 1 ) , ( q , q , 2 , A )가 있습니다. 시작 상태는 (실제 시작 상태들을 통해 중에서 무작위로 선택된다 ε -transitions)이다 (AAΓq,qQAΓ{ϵ}(q,q,1),(q,q,2,A)ϵ . 각 천이 ( Q , , , Q ' , α ) 천이가 대응된다 ( ( Q , Q ' , 1 ) , , , ( Q ' , Q ' , 1 ) , α ) ( ( Q를 , q , 2 , B(q,q,1)(q,a,A,q,α)((q,q,1),a,A,(q,q,1),α) . 다른 전환도 있습니다.((q,q,2,B),a,A,(q,q,2,B),α)

각 천이 , 전이가있다 ( ( Q , Q ' , 1 ) , , B ' , ( Q ' , Q ' , 1 ) , B ' ' α ) 여기서 B Γ { ϵ }ϵ =(q,a,A,q,α)((q,q,1),a,B,(q,q,1),BAα)BΓ{ϵ} . 모든 최종 상태를 들면 Q F , 전환있다 ( ( Q , Q ' , 1 ) , ε , , ( Q 0 , Q ' , 2 , ε ) , ) 여기서Γ { ε는 } .ϵ=ϵqF((q,q,1),ϵ,A,(q0,q,2,ϵ),A)AΓ{ϵ}

모든 천이 , 전환있다 ( ( Q , Q ' , 2 , ) , , B ' , ( Q ' , Q ' , 2 , ) , B ' α ) 여기서 Γ { ε } . 모든 전환에(q,a,ϵ,q,α)((q,q,2,A),a,B,(q,q,2,A),Bα)AΓ{ϵ} , 전환있다 ( ( Q , Q ' , (2) , B ) , , ' , ( Q ' , Q ' , 2 , ) , ε ) , B Γ { ϵ } . 모든 전환 ( q , a(q,a,ϵ,q,A)((q,q,2,B),a,A,(q,q,2,A),ϵ)BΓ{ϵ} , "일반화 전환"이있다 ( ( Q , Q ' , 2 , C ) , , B ' , ( Q , Q ' , 2 , C ) , ε가 ) ; 이들은 중간 새로운 상태를 통한 두 개의 전이의 시퀀스로 구현됩니다. 전환 ( q , a , ϵ , q ,(q,a,A,q,B)((q,q,2,C),a,BA,(q,q,2,C),ϵ) | α | 2 도 비슷하게 처리됩니다. 모든 전이 ( q , a , A , q ' , A ) 에 대해 전이 ( ( q , q ' ' , 2 , A ) , a , B , ( q ' ' , q ' ' , 2 , A ) , B ) , 어디 B (q,a,ϵ,q,α)|α|2(q,a,A,q,A)((q,q,2,A),a,B,(q,q,2,A),B) . 전환은 ( q는 , a는 , , Q ' , α는 ) 유사하게 처리됩니다. 마지막으로 유일한 최종 상태 f 와 전이 ( ( q , q , 2 , A ) , ϵ , ϵ , f , ϵ )가 있습니다.BΓ{ϵ}(q,a,A,q,Aα)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 ' 를 누를 수 있습니다 .yxxy(q,q,1)qqx(q,q,2,A)AAA 대신에 . 우리는 x 를 처리하는 동안 생성 되지만 y 를 처리하는 동안에 만 터지는 각 비 터미널에 대해 그렇게합니다 . 2 단계에서, 우리는 팝업 허용 ' 대신 밀어 . 이 작업을 수행하면 재고가 실제로 A 라는 것을 기억해야합니다 . 이것은 스택에 "임시"항목이없는 경우에만 적용되며, 시뮬레이션 된 PDA에서 스택 상단과 ϵ 또는 B ' 형식과 동일합니다 .AxyAAAϵB

다음은 간단한 예입니다. 위한 기계적 고려 가압 각각 X , 팝 Y를 . 새로운 오토 마톤은 y k x n y n - kx k y n x n - k 의 두 가지 형태의 단어를 받아들입니다 . 첫 번째 형태의 단어를, 제 1 단계는 추진 구성 케이' , 단계 2 펑 구성 케이" 밀고 NxnynAxAyykxnynkxkynxnkkAkA 하고 터지는 N - 케이 번. 두 번째 형태의 단어를 들어, 제 푸시 K의 시간 A는 다음 팝업 케이 회푸시 N - K의 ' , 2 단계로 변화하고, 팝업 N - K의 시간' .nkAnkAkAkAnkAnkA

각 유형의 괄호의 직계 자손이 다른 유형에 속하도록 다양한 유형 ( "()", "[]", "<>")의 균형 괄호 언어에 대한보다 복잡한 예는 다음과 같습니다. 예를 들어 "([] <>)"는 정상이지만 "()"은 잘못되었습니다. 각 "(")에 대해 스택 상단이 A 가 아닌 경우 를 푸시 하고 각 ")"에 대해 A 를 팝 합니다. 마찬가지로 B , C 는 "[]"및 "<" "와 연관됩니다. 다음은 ">) ([()] <"라는 단어를 받아들이는 방법입니다. ">)"를 소비하고 C A ′를 누르고 2 단계로 넘어갑니다. 우리는 "(", A ' 팝 및 스택 A를 기억합니다 . 우리는 "[()]"을 소비하고 밀고 터지는A AABCCAAA ; B 를 푸시 할 때"실제"스택의 최상위가 A 이므로 대괄호가 허용됩니다 ( ">) (() <"). A 를 푸시 할 때스택 상단이 B ( ϵ 또는 X ' 형식이 아님)이므로 B 는 "실제"스택 상단이므로 둥근 괄호가 허용됩니다 ( 그림자 상단 스택이 A 이지만). 마지막으로 "<"와 pop C '를 소비합니다.BABAABϵXBAC


죄송합니다. 이해하는데 어려움이 있습니다. 추가 설명이 가능합니까? 오토 마톤은 어디에서 시작하고 그 전환은 무엇입니까? 그리고 모든 스택 심볼에 대해 스위치가 발생합니까? 감사! AA
usul

매우 흥미로운 제안. 감사. 나는 이것을 조금 씹어 먹어 버리겠다.
Hendrik Jan

@ usul, 세부 사항을 직접 작성해야합니다. 스위치 (첫 번째 단계에서)는 오토 마톤이 " A 를 팝"하고 싶지만 대신 A '를 눌렀을 때 발생합니다 . 결정적이지 않은 움직임이라고 생각할 수 있습니다. AAAA
Yuval Filmus

@ Yuval : 죄송하지만이 일을 할 수 없습니다. 당신의 아이디어를 이해하면, 새로운 오토 마톤은 부분 을 시뮬레이션하고 팝과 푸시를 변경 하여 시작합니다 . 그런 다음 스택에서 α 를 생성 합니다. 여기서 y를 읽을 때 원래 오토 마톤이 α로 시작합니다 . 원래부터 밀어 시작? 그런 다음 빈 자동 마운팅에서 자동 마마 톤을 팝업해야합니다. 나는 여전히 당신의 직감이 가치 있다고 생각하지만, 약간의주의가 필요합니다. yααy
Hendrik 1

@Hendrik, 죄송 합니다만 귀하의 반례를 따를 수 없습니다. 어떤 시점에서 새로운 오토 마톤이 빈 스택에서 튀어 나와야한다고 생각하십니까?
Yuval Filmus

4

SαA1AnSA1AnαSSS


고마워, 그러나 이것은 하나의 문자로 이동합니다. 나는 임의의 문자 수에 의한 일반적인 순환에 관심이 있습니다.
Hendrik Jan

3
shift1(L)shiftn(L)=shift1(shift1((L))nshiftn(L)n=2SαABAβCSαβCB

1
nnL={anbnn0}{akbnak+=n}{bkanbk+=n}

@HendrikJan, 알겠습니다. 나는 그 문제가 유한 한 변화에 관한 것이라고 잘못 생각했다. 나는 ... 내 대답을 재고 있습니다
카롤 Juodelė

4

오래된 Hopcroft and Ullman 고전 서론 Automata 이론 (1979) 을 확인하는 것이 좋습니다 . 사이클 종료는 연습 6.4c이며 S **로 표시됩니다. 이중 별표는 그것이 가장 어려운 문제 중 하나임을 의미합니다 (책에서). 다행히도 S는 솔루션에서 선택된 문제 중 하나임을 나타냅니다.

S=X1,X2,,Xnx1,x2,,xny1,y2,,ynx1x2xnyny2y1xi

S,X^n,X^2,X^1yn,,y2y1xn,,x2x1yny2y1x1x2xn

건설에 대한 자세한 내용은 책에 나와 있습니다.

이것이 Yuval의 (허용 된) 솔루션을 생각 나게하는 방법에 주목하십시오. 터지는 대신 밀린 비 터미널은 스택에서 반대 순서입니다. 나무의 거꾸로와 매우 유사합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.