2012-04-05 1 views
0

이 질문은 교수님이 해결책을 입력하기에는 너무 게으른 표본이며, 나는 매우 나 빠지다. 도와 주셔서 미리 감사드립니다. 다음 언어를 문맥에 사용할 수 없음을 증명하십시오 :

는 다음과 같은 언어는 문맥 자유 입증 할 수 {x is an element of {a,b,c}* | the number of a's in x is greater than the number of b's or the number of c's in x}

+1

힌트 : DFA는 계산할 수 없습니다. – cHao

+0

Math.SE에서 더 나은 응답을 얻으실 수 있습니다. –

+1

@KendallFrey [CSTheory] (http://cstheory.stackexchange.com/)를 제안하겠습니다. –

답변

1

{X는의 엘리먼트는 {A, B, C} * |

  1. a '(S)의 개수보다 더 크다 (: X에서의 수는 B 형의 수 또는이 두 방법을 해석 할 수있다 (X)에서의 C}의

수보다 크 b 수 년대 플러스 c 수 년대) a

  • (개수의이 c 수보다 크의) 또는 a의 (수의은 b 수보다 크 년대 에스).
  • 1 : PDA에 대한 힌트 PDA는 다음과 같이 작동 할 수 있습니다. 스택이 비어 있고 입력에 a이 표시되면 a을 스택에 추가하십시오. 스택이 비어 있고 입력에 b 또는 c이 표시되면 b을 스택에 추가하십시오. 맨 위에있는 스택 기호가 b이고 입력에 a이 표시되면 스택에서 b을 제거하십시오. 맨 위에있는 스택 기호가 b이고 입력에 b 또는 c이 표시되면 스택에 b을 추가하십시오. 맨 위에있는 스택 기호가 a이고 입력에 a이 표시되면 a을 스택에 추가하십시오. 맨 위에있는 스택 기호가 a이고 입력에 b 또는 c이 표시되면 스택에서 a을 제거하십시오. 이제는 그 PDA가 a의 수가 b의 수와 c의 수의 합과 같은 경우 (1) 빈 스택을 갖는 인수를 생성하십시오. (2) 더 a을 보았을 때 스택 맨 위에 a이 있고 b 또는 c의 것 (결합 된 것)보다 큽니다. (b) 또는 c (조합 됨)보다 적은 수의 a을 보았을 때 스택 상단에 b이 있습니다. 2

    힌트 : 첫째, S '의 모든 c 무시 S'의 a 년대, b 년대 및 b보다 S c '의 더 a 갖는 S'의 임의의 문자열을 수락하는 PDA를 구성합니다 (PDA 상술 1에 대한 힌트에서 쉽게 c의를 무시하도록 수정할 수 있습니다. 그런 다음 a의 문자열 인 b의 문자열과 c의 문자열을 받아들이는 PDA를 구성하고 b (방금 만든 것과 비슷 함)을 무시하고 의 문자보다 의 문자가 더 많습니다. 마지막으로, 당신이 문맥이없는 것을 증명하려고 노력하고있는 언어가이 오토마타에 의해 받아 들여지는 언어들의 결합체라는 것을 증명하십시오; 간단한 논증이면 충분합니다.컨텍스트 프리 언어가 노동 조합에 의해 닫히기 때문에,이 표현은 컨텍스트 프리를 증명하기 위해 설정 한 언어가 실제로 컨텍스트 프리라는 주장을 입증합니다.

    추가 설명을 요청하십시오. 또한 새 사이트에서 https://cs.stackexchange.com/과 같은 질문을 확인하십시오. 해당 사이트의 향후 질문에 대해 더 나은 답변을받을 수도 있습니다.

    -2

    작업이 언어는 문맥 자유 문법에 의해 생성 될 수 있음을 보여주는 것입니다.

    힌트 :

    A -> aabAc | B 
    B -> B|epsilon