답변:
언어 L 에 대해 문법 모호함 을 증명하는 방법은 적어도 있습니다 . 두 단계로 구성됩니다.
첫 번째 단계는 매우 분명합니다. 문법이 원하는 단어를 (적어도) 생성한다는 것을 보여주십시오.
그 두 번째 단계 쇼 길이 많은 단어 구문 트리로 보유 N 으로서 L은 길이의 단어 갖는 N을 1로이 모호성을 의미 -. 그것은 Chomsky와 Schützenberger [1]로 돌아가는 G 의 구조 함수를 사용합니다.
와 구문 트리의 수 G는 길이의 단어를 갖는 N . 물론 당신은 가지고 있어야합니다 | L n | 이 작동합니다.
좋은 것은이다 에 대한 닫힌 형태 찾는 있지만, 문맥 자유 언어에 대해 쉽게 획득 할 수 (보통) 인 t를 n은 어려울 수 있습니다. 비 터미널 당 하나의 변수를 사용하여 함수의 방정식 시스템으로 G 를 변환합니다 .
이것은 어려워 보일 수 있지만 실제로는 예에서 명백하게 될 구문 변환 일뿐입니다. 아이디어 생성 터미널 심볼의 지수로 계산된다는 것이다 시스템이 동일한 형태 때문에 G , Z가 N 으로 합계에서 자주 발생하는 N 개의 단말기들에 의해 생성 될 수 G . 자세한 내용은 Kuich [2]를 확인하십시오.
(! 컴퓨터 대수)이 방정식 시스템을 풀면 수득 ; 이제 "만"계수를 풀어야합니다 (닫힌 일반 형태). TCS 치트 시트 및 컴퓨터 대수는 자주 수행 할 수 있습니다.
규칙이 있는 간단한 문법 를 고려하십시오.
.
(1 단계, 유도 증명) 임이 분명합니다 . 있다 2 , n은n이 짝수이면길이n의회문 2 개 ,그렇지 않으면0
방정식 시스템 수율 설정
그의 해결책은
.
계수 일치 하므로, 회문의 수와 G는 모호하다.
이것은 좋은 질문이지만 일부 인터넷 검색은 모호성을 결정하는 일반적인 방법이 없다고 말했기 때문에 질문을 더 구체적으로 만들어야합니다.
일부 문법의 경우, 유도에 의한 증명 (단어 길이 이상)이 가능합니다.
예를 들어 다음 규칙에 따라 Σ = { a , b }에 대한 문법 를 고려하십시오 .
L ( G ) 에서 길이 모든 단어 에는 ε 만 있고 왼쪽 파생은 하나뿐입니다.
이 경우 더 어려워집니다
(문법에 비생산적인 비 말단이없는 경우) 모든 "형"과 "루트"비 말단에 대한 주장을 강화하는 데 도움이 될 수 있습니다.
나는 Greibach 정규 형식으로의 변환이 모호성을 유지 한다고 생각 합니다.이 단계를 먼저 적용하면 왼쪽 재귀를 잘 처리 할 수 있습니다.
핵심은 하나 이상의 파생 단계 를 수정하는 모든 단어의 하나의 기능을 식별하는 것 입니다. 나머지는 귀납적으로 따릅니다.
기본적으로, 그것은 어린이 세대 문제입니다. 첫 번째 표현식으로 시작하여 하위 항목을 생성하십시오. ... 반복적으로 (DFS) 계속 수행하고 몇 번의 반복 후에 두 개의 다른 하위에서 동일한 확장 표현식을 생성 할 수 있는지 확인하십시오. 그렇게 할 수 있다면 모호합니다. 이 알고리즘의 실행 시간을 결정할 방법이 없습니다. 아마도 30 레벨의 아이들을 생성 한 후에 안전하다고 가정하십시오 :)