CFG에 대한 Chomsky 일반 양식과 같은 일반 양식의 중요성


12

문맥이없는 문법은 문맥이없는 언어를 표현하는 데 사용될 수 있다는 것을 이해합니다. 또한 ChomskyGreibach 일반 형식 과 같은 일반 형식이 있습니다. 나는 그 필요성을 이해할 수 없었다.

언어 이론에서 왜 중요한가? 내가 언급 한 모든 교과서는 이러한 일반적인 형태에 대해서는 말하지만 그 중요성에 대해서는 아무 것도 말하지 않았습니다.


2
건설적인 증거를 제공 할 때 일반 양식이 유용합니다.
Karolis Juodelė

답변:


12

적어도 두 가지 관련 용도가 있습니다.

  1. 증명의 단순성
    감소 및 오토마타에 대한 동등성을 포함하여 문맥이없는 문법에 대한 많은 증명 이 있습니다. 이것들은 당신이 다루어야 할 문법이 더 제한적 일수록 간단합니다. 따라서 일반적인 형식이 도움이 될 수 있습니다.

    구체적인 예로서, Greibach 정규형은이 있음 (건설적) 표시하는 데 사용됩니다 (포함하지 않는 모든 CFL에 대한 -transition없는 PDA ).εεε

  2. 구문 분석 가능
    PDA를 사용하여 문법으로 단어를 구문 분석 할 수 있지만 이는 종종 불편합니다. 일반적인 형태는 우리에게 더 많은 구조를 제공하여 더 쉽게 파싱 알고리즘을 만들 수 있습니다.

    구체적인 예로 CYK 알고리즘 은 Chomsky 정규 형식을 사용합니다. 반면에, Greibach 정규형은 재귀 하강 구문 분석을 가능하게합니다. 역 추적이 필요할 수 있지만 공간 복잡성은 선형입니다.


5

Chomsky 정규 형식을 사용하면 다항식 시간 알고리즘이 문법으로 문자열을 생성 할 수 있는지 여부를 결정할 수 있습니다. 동적 프로그래밍을 알고 있다면 알고리즘이 매우 매끄 럽습니다 ...

입력 길이 ( )가 이면 희미한 x 의 2 차원 배열 ( )을 가져옵니다 .n A n nInAnn

G I ( i , j )A[i,j] 는 문법 에서 부분 문자열 도출 할 수있는 모든 기호를 나타냅니다 .GI(i,j)

마지막으로 에 시작 기호 ( ) 가 포함 된 경우 , 문자열 I은 로 도출 할 수 있으며 이는 우리가 확인하고자하는 것입니다.S SA[1,n]SS

def decide (string s,grammar G):
    //base case
    for i=1 to n:
        N[i,i]=I[i]    //as the substring of length one can be generated by only a
                       terminal.
    //end base case

    //induction
    for s=1 to n:       //length of substring
        for i=1 to n-s-1: //start index of substring
            for j=i to i+s-1:   //something else
                 if there exists a rule A->BC such that B belongs to N[i,j] and C
                 belongs to N[j+1,i+s-1] then add A to N[i,i+s-1]
    //endInduction

    if S belongs to N[1,n] then accept else reject.

나는 인덱스가 매우 미친 것 같습니다. 그러나 기본적으로 여기에 무슨 일이 일어나고 있습니다.

  • 기본 케이스는 꽤 분명합니다.

  • 유도 단계에서 우리는 길이에 대한 솔루션 구축 보다 길이 솔루션 모두에서 문자열을 .ss

  • 인덱스 에서 시작하여 길이 하위 문자열 ( )에 대한 솔루션을 찾고 있다고 가정 해보십시오 . 그럼 당신은 규칙 (이 있는지 여부를 확인 루프 (뭔가 다른 부분) ..... 시작 하도록) 와 하위의 두 개의 연속 및 분리 된 문자열을 유도하고 그렇게 이러한 모든 추가하면 '들 내지 .1 - > B C B C N [ 1 , 6 ]5sub1A>BCBCAN[1,6]

  • 마지막으로 에 시작 기호가 있으면 수락합니다!N[1,n]


  • 3
    이것은 CYK 알고리즘으로 a) 이름을 지정해야하며 b) 내 대답에 언급되었습니다. 알고리즘이 모든 CFG에서 균일하기 때문에 다항식 런타임은 인상적입니다. 즉, 일반적입니다.
    Raphael

    @Raphael ok .... i 이름을 몰랐습니다 :)
    ishan3243

    4

    Sheila Greibach는 Greibach 정규 형식을 발명하여 모든 CFG를 실시간으로 작동하는 PDA로 인식 할 수 있음을 증명했습니다 (예 : -transitions).ϵ

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