언어에 컨텍스트가 없는지 테스트하는 알고리즘 / 체계적인 절차가 있습니까?
다시 말해, 대수 형태로 지정된 언어 ( 와 같은 것으로 생각)가 주어지면 언어에 컨텍스트가 없는지 테스트하십시오. 학생들이 모든 숙제를 도와 줄 수 있도록 웹 서비스를 작성한다고 상상해보십시오. 언어를 지정하면 웹 서비스는 "문맥없는"또는 "문맥없는"를 출력합니다. 이것을 자동화하는 좋은 접근 방법이 있습니까?
물론 펌핑 렘마, 오그 덴 렘마, 파리 크 렘마, 인터체인지 렘마 등과 같은 수동 증명을위한 기술이 있습니다 . 그러나, 그들은 각각 어느 시점에서 수동 통찰력을 필요로하므로, 그것들을 알고리즘으로 바꾸는 방법이 명확하지 않습니다.
나는 Kaveh가 문맥이없는 언어 세트를 재귀 적으로 열거 할 수 없다고 다른 곳에서 썼다는 것을 알기 때문에 모든 가능한 언어에서 알고리즘이 작동하는 것은 희망이없는 것 같습니다. 따라서 웹 서비스가 "컨텍스트가없는", "컨텍스트가없는"또는 "알 수없는"을 출력 할 수 있어야한다고 생각합니다. 교과서에서 볼 수있는 많은 언어에서 "알 수없는"이외의 대답을 제공 할 수있는 알고리즘이 있습니까? 그러한 웹 서비스를 어떻게 구축 하시겠습니까?
이 질문을 잘 만들려면 사용자가 언어를 지정하는 방법을 결정해야합니다. 나는 제안에 열려 있지만 다음과 같은 생각을하고 있습니다.
여기서 는 단어 표현이고 S 는 길이 변수에 대한 선형 불평등 시스템이며 다음과 같은 정의를 갖습니다.
각각의 워드 표현이다. (이 단어는 Σ ∗의 모든 단어를 포함 할 수있는 변수를 나타냅니다 .)
각 , B , C는 , ... 워드 표현이다. 묵시적으로 Σ = { a , b , c , … } 이므로 a , b , c , … 는 기본 알파벳의 단일 기호를 나타냅니다.
각 η , B η , C η는 , ... 경우, 워드 표현 η는 길이가 가변된다.
단어 표현의 연결은 단어 표현입니다.
각 길이 변수이다. (이는 자연수를 보유 할 수있는 변수를 나타냅니다.)
각각 길이 변수이다. (이는 해당 단어의 길이를 나타냅니다.)
이것은 우리가 교과서 연습에서 볼 수있는 많은 경우를 처리 할만큼 충분히 넓은 것 같습니다. 물론 원하는 경우 언어를 대수 형태로 지정하는 다른 텍스트 방법을 대체 할 수 있습니다.