L = L (G)를 표시하는 방법?


22

공식 문법을 제공하여 공식 언어를 지정하는 것은 빈번한 작업입니다. 언어를 설명 할뿐만 아니라 언어를 구문 분석하거나 적절한 과학을 수행 하기 위해서는 문법이 필요합니다 . 모든 경우에 필요한 문법이 정확해야합니다 . 즉, 원하는 단어를 정확하게 생성하는 것입니다.

문법이 왜 원하는 언어를 적절히 표현하고 공식적인 증거를 생략했는지에 대한 높은 수준의 논쟁을 종종 할 수 있습니다. 그러나 어떤 이유로 의심이 가거나 공식적인 증거가 필요하다면 어떻게해야합니까? 우리가 적용 할 수있는 기술은 무엇입니까?

이것은 참조 질문 이 될 것 입니다. 따라서 적어도 하나의 예에 의해 설명되어 있지만 많은 상황을 다루는 일반적이고 교훈적으로 제시된 답변을 제공하도록주의하십시오. 감사!

답변:


21

문법은 본질적으로 재귀 적 인 객체이므로 대답은 분명해 보입니다. 즉, 세부 사항은 종종 까다로워 까다 롭습니다. 후속편에서는 창의적인 전처리 과정이 수행되는 경우 문법 교정 증거를 기계적 단계로 줄일 수있는 기술에 대해 설명합니다.

기본 아이디어는 자신을 문법과 언어의 단어 로 제한하지 않는 것 입니다. 이런 식으로 문법의 구조를 파악하기는 어렵습니다. 대신 문법으로 만들 수 있는 문장들 에 대해 논할 것 입니다. 또한, 하나의 어려운 증거 목표를 더 다루기 쉬운 많은 작은 목표로 나누겠습니다.

하자 이외의 단자와 형식 문법 단자 규칙 및 심볼부터 . 우리가 나타내는 로부터 유도 될 수있는 문장의 집합 주어진 이다 . 에 의해 생성 된 언어 는 입니다. 대해 임을 보여주고 싶다고 가정 해 봅시다 .G=(N,T,δ,S)NTδSNϑ(G)Sδαϑ(G)SαGL(G)=ϑ(G)TL=L(G)LT

안사 츠

여기에 우리가 어떻게 하는가입니다. 우리는 정의 그래서M1,,Mk(NT)

  1. ϑ(G)=i=1kMi
  2. Ti=1kMi=L 입니다.

2. 정의에 의해 일반적으로 2.가 명확하지만 , 1. 심각한 작업이 필요합니다. 두 항목은 모두 원하는대로 을 의미합니다.MiL(G)=L

표기법을 쉽게하기 위해 표시하겠습니다 .M=i=1kMi

바위 같은 길

이러한 증명을 수행하기위한 두 가지 주요 단계가 있습니다.

  • (좋은) 를 찾는 방법 ? Mi
    한 가지 전략은 문법이 작동하는 단계 를 조사 하는 것입니다. 모든 문법이이 아이디어를 따르는 것은 아닙니다. 일반적으로 이것은 창의적인 단계입니다. 문법을 스스로 정의 할 수 있다면 도움이됩니다. 약간의 경험이 있다면, 우리는이 접근법으로 문법을 더 다루기 쉽게 정의 할 수있을 것입니다.

  • 1. 증명하는 방법?
    설정된 동등성과 마찬가지로 두 가지 방향이 있습니다.

    • ϑ(G)M : 의 생산에 대한 (구조적) 유도 .G
    • Mϑ(G) : 일반적으로 가 포함 된 것부터 시작 하여 에 의한 하나의 유도 .MiS

이것은 얻을 수있는만큼 구체적입니다. 세부 사항은 문법과 언어에 따라 다릅니다.

언어를 고려

L={anbncmn,mN}

상기 문법 와 주어진G=({S,A},{a,b,c},δ,S)δ

SScAAaAbε

이를 위해 입니다. 이 문법이 작동하는 단계는 무엇입니까? 먼저 생성 한 다음 합니다. 이것은 우리가 선택한 즉, 즉L=L(G)cmanbnMi

M0={ScmmN},M1={anAbncmm,nN},M2={anbncmm,nN}.

로 및 , 항목 2. 이미 알아서한다. 1쪽으로, 우리는 발표 한대로 증거를 두 부분으로 나눕니다.M2=LM0T=M1T=

ϑ(G)M

우리는 규칙에 따라 구조적 유도를 수행 합니다.G

IA : 이므로 성공적으로 고정됩니다.S=Sc0M0

IH : 문장 세트에 대해 도 알고 있다고 가정합니다 .Xϑ(G)XM

IS : 임의로 시키십시오 . 형식 과 다음에 적용되는 규칙이 무엇 이든 보여 주어야합니다 . 그대로 두지 마십시오 . 우리는 완전한 대소 문자 구분을 통해이를 수행합니다. 귀납 가설을 통해 다음 사례 중 하나가 (정확하게) 적용된다는 것을 알고 있습니다.αXϑ(G)MαM

  • wM0 , 즉 일부 입니다 . 두 가지 규칙을 적용 할 수 있으며, 둘 다 에서 문장을 도출합니다 . w=ScmmN
    M
    • ScmScm+1M0
    • ScmAcm=a0Ab0cmM1 .
  • wM1 , 즉 일부 : w=anAbncmm,nN
    • wan+1Abn+1cmM1
    • wanbncmM2 .
  • wM3 : 이므로 더 이상 파생 할 수 없습니다.wT

우리는 모든 경우를 성공적으로 다루었으므로 유도가 완료되었습니다.

ϑ(G)M

우리는 당 하나의 간단한 증거를 수행 합니다. "나중에" 가 "이전" 사용하여 고정 할 수 있도록 증명을 연결하는 방법에 유의하십시오 .MiMiMi

  • M1 : 고정 하고 단계에서 를 사용하여 대해 유도를 수행합니다 .mSc0=SSSc
  • M2 : 을 임의의 값으로 고정 하고 이상을 유도 합니다. 우리 는 이전의 증거로 을 사용하여 에 고정합니다. 단계는 를 통해 진행됩니다 .mnAcmSScmAcmAaAb
  • M3 : 임의의 대해 대한 이전 증명을 사용합니다 .m,nNSanAbncmanbncm

이것으로 증명 1의 두 번째 방향이 끝났습니다.

우리는 문법이 선형 이라는 것을 크게 이용한다는 것을 알 수 있습니다 . 비선형 문법의 경우 증거가 여러 개있는 변수 매개 변수 가있는 가 필요합니다 . 문법을 제어 할 수 있으면 문법을 단순하게 유지하도록 지시합니다. 와 동등한이 문법을 막는 예제로 고려하십시오 .MiG

SaAbCεAaAbεCcCε

운동

문법을 주다

L={bkal(bc)manbok,l,m,n,oN,ko,2l=n,m2}

정확성을 증명합니다.

문제가 있으면 문법 :

고려 의 제작과G=({S,Br,Bl,A,C},{a,b,c},δ,S)

SbSbBlBrBlbBlbABrBrbAbAaAaaCCbcCbcbc

그리고 :Mi

M0={biSbiiN}M1={biBlbooN,io}M2={bkBrbikN,ik}M3={bkaiAa2ibok,o,iN,ko}M4={bkal(bc)iCa2lbok,o,l,iN,ko}M5=L

비선형 문법은 어떻습니까?

문맥이없는 언어 클래스의 특징은 Dyck 언어입니다 . 기본적으로 모든 문맥이없는 언어는 Dyck 언어와 일반 언어의 교차로 표현 될 수 있습니다. 불행히도 Dyck 언어는 선형 적이 지 않습니다. 즉,이 접근법에 본질적으로 맞는 문법을 제공 할 수 없습니다.

물론 우리는 여전히 정의 하고 증거를 수행 할 수 있지만, 중첩 된 유도와 그렇지 않은 것이 더 어려울 수밖에 없습니다. 내가 아는 한 가지 일반적인 방법이 어느 정도 도움이 될 수 있습니다. ansatz를 변경하여 최소한 필요한 단어를 모두 생성하고 (길이 당) 올바른 단어를 생성한다는 것을 보여줍니다 . 공식적으로 우리는Mi

  1. ϑ(G)L
  2. |L(G)Tn|=|LTn|모든 .nN

이런 식으로 문법의 복잡함을 무시하고 원래 ansatz에서 "쉬운"방향으로 제한하고 언어의 구조를 악용 할 수 있습니다. 물론, 무료 점심은 없습니다 : 우리 는 각각의대해 생성 하는 단어를 세는 새로운 작업을 받습니다. 우리에게는 운이 좋으며, 이것은 종종 다루기 쉽다. 자세한 내용은 여기여기 를 참조 하십시오 ¹. 내 학사 논문 에서 몇 가지 예를 찾을 수 있습니다 .G nN

모호하고 문맥에 맞지 않는 문법의 경우, 우리는 ansatz one과 think caps로 돌아가는 것을 두려워합니다.


  1. 계산에 특정 방법을 사용할 때 문법이 명확하다는 보너스를 얻습니다. 결과적으로 이것은 우리가 2를 증명할 수 없기 때문에 기술이 모호한 문법에 실패해야 함을 의미합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.