언어에 컨텍스트가 없는지 테스트하는 알고리즘


18

언어에 컨텍스트가 없는지 테스트하는 알고리즘 / 체계적인 절차가 있습니까?

다시 말해, 대수 형태로 지정된 언어 ( 와 같은 것으로 생각)가 주어지면 언어에 컨텍스트가 없는지 테스트하십시오. 학생들이 모든 숙제를 도와 줄 수 있도록 웹 서비스를 작성한다고 상상해보십시오. 언어를 지정하면 웹 서비스는 "문맥없는"또는 "문맥없는"를 출력합니다. 이것을 자동화하는 좋은 접근 방법이 있습니까?L={anbnan:nN}

물론 펌핑 렘마, 오그 덴 렘마, 파리 크 렘마, 인터체인지 렘마 등과 같은 수동 증명을위한 기술이 있습니다 . 그러나, 그들은 각각 어느 시점에서 수동 통찰력을 필요로하므로, 그것들을 알고리즘으로 바꾸는 방법이 명확하지 않습니다.

나는 Kaveh가 문맥이없는 언어 세트를 재귀 적으로 열거 할 수 없다고 다른 곳에서 썼다는 것을 알기 때문에 모든 가능한 언어에서 알고리즘이 작동하는 것은 희망이없는 것 같습니다. 따라서 웹 서비스가 "컨텍스트가없는", "컨텍스트가없는"또는 "알 수없는"을 출력 할 수 있어야한다고 생각합니다. 교과서에서 볼 수있는 많은 언어에서 "알 수없는"이외의 대답을 제공 할 수있는 알고리즘이 있습니까? 그러한 웹 서비스를 어떻게 구축 하시겠습니까?


이 질문을 잘 만들려면 사용자가 언어를 지정하는 방법을 결정해야합니다. 나는 제안에 열려 있지만 다음과 같은 생각을하고 있습니다.

L={E:S}

여기서 는 단어 표현이고 S 는 길이 변수에 대한 선형 불평등 시스템이며 다음과 같은 정의를 갖습니다.ES

  • 각각의 워드 표현이다. (이 단어는 Σ ∗의 모든 단어를 포함 할 수있는 변수를 나타냅니다 .)x,y,z,Σ

  • , B , C는 , ... 워드 표현이다. 묵시적으로 Σ = { a , b , c , } 이므로 a , b , c , 는 기본 알파벳의 단일 기호를 나타냅니다.a,b,c,Σ={a,b,c,}a,b,c,

  • η , B η , C η는 , ... 경우, 워드 표현 η는 길이가 가변된다.aη,bη,cη,η

  • 단어 표현의 연결은 단어 표현입니다.

  • 길이 변수이다. (이는 자연수를 보유 할 수있는 변수를 나타냅니다.)m,n,p,q,

  • 각각 길이 변수이다. (이는 해당 단어의 길이를 나타냅니다.)|x|,|y|,|z|,

이것은 우리가 교과서 연습에서 볼 수있는 많은 경우를 처리 할만큼 충분히 넓은 것 같습니다. 물론 원하는 경우 언어를 대수 형태로 지정하는 다른 텍스트 방법을 대체 할 수 있습니다.


규칙적인 언어로 시작하는 것이 쉽지 않습니까?
유발 Filmus

@YuvalFilmus, 확실합니다! 당신이 그것을 언급 했으므로, 그것은 좋은 생각입니다. 일반 언어에서 문제가 발생한다고 생각하십니까? 귀중한 것으로 생각되면 일반 언어에 대해 문의하십시오.
DW

2
일반 언어에서는 더 쉬울 것입니다. 그건 그렇고, 일반적인 결정 불가능 성이 반드시 언급 한 형식의 언어에 적용되는 것은 아닙니다.
Yuval Filmus

4
cstheory.stackexchange.com/questions/17976 :이 문제가 아마도 열려있을 것입니다 . 더 일반적인 문제에 대한 결정을 내리는 방법이있을 수 있지만 보이지 않습니다.
sdcvvc

언어로 예제 단어를 제공하면 도움이 될 것입니다. 에서 추가 연구 / 협력 제안 컴퓨터 과학 채팅
vzn

답변:


0

하여 쌀의 정리 튜링 기계에서 허용하는 언어가 아닌 사소한 재산이있는 경우, 볼 (여기서는 문맥 무료가되는) decidable 없습니다. 따라서 튜링이 완전한 답변을 얻지 못하도록 인식 기계 (또는 설명)의 힘을 제한해야합니다.

일부 언어 설명의 경우 정답은 간단합니다. 정규식을 사용하는 경우에는 정기이므로 문맥에 맞지 않습니다. 문맥에 따라 자유로운 문법이라면, ditto.


1
귀하의 모든 의견에 동의하지만 이것이 어떻게 질문에 대답하는지 또는 어떻게 대답하는지 잘 모르겠습니다. 나는 그 모든 사실을 알고 있습니다. 언어를 지정하는 특정 방법을 설명합니다. Turing-complete라는 것을 제안하고 있습니까? 그것은 나에게 Turing-complete 일 것 같지 않다. 선형 불평등 시스템은 Turing-complete가 아니므로 Turing-complete가 아닌 것으로 이미 제한했다고 생각합니다. 또한 언어를 지정하기 위해 제공 한 방법의 경우 정규 표현식이 아니며 컨텍스트가없는 문법이 아니기 때문에 사소한 것이 아닙니다.
DW

-2

모든 언어는 Push Down Automata에 의해 허용되며 CFL입니다. 다음은 언어가 CFL인지 여부를 결정하는 자세한 분석입니다. 언어가 CFL인지 아닌지 확인


이것은 알고리즘이 아닙니다.
xskxzr

이것이 어떻게 질문에 대답하는지 모르겠습니다. PDA가 언어를 받아들이면 언어가 컨텍스트가 없다는 것을 알고 있지만 질문에서 요청한 형식의 알고리즘을 찾는 데 도움이되지 않는 것 같습니다. 링크 한 geeksforgeeks 기사는이 문제에 대한 완전한 알고리즘을 제공하지 않습니다. 그것은 더 쉬운 비 포괄적 인 특수 사례를 나열합니다 (일부 진술은 약간 스케치 적이거나 모호하기 때문에 큰 참조는 아닙니다).
DW

AFAIK, 아직 잘 구성된 알고리즘이 없습니다. (내가 틀렸다면 나를 교정하십시오). 우리가 할 수있는 최선은 사례를 확인하는 것입니다.
SiluPanda

-3

CFG 만 확인하려면 JFLAP 소프트웨어를 사용해보십시오. JFLAP 개발자에게 소프트웨어의 코드 나 알고리즘을 제공하도록 요청할 수도 있습니다. 여기에서 JFLAP를 얻을 수 있습니다 http://www.jflap.org/jflaptmp/ 무료이지만 JDK 또는 JRE 또는 무언가가 필요합니다. 또는 다른 유사한 소프트웨어 및 해당 개발자를 사용해 볼 수도 있습니다.


1
이것이 질문에 대한 대답인지 확실하지 않습니다. JFLAP에는 수학 표기법으로 언어를 받아들이고 컨텍스트가 없는지 여부를 알려주는 기능이 없습니다.
유발 Filmus

Sipser book의 THEOREM 2.20 일부 푸시 다운 오토 마톤이 인식하는 경우에만 언어에 컨텍스트가 없습니다. 그리고 당신은 문법에서 JFLAP에 PDA를 구축 할 수 있습니다
해시 브 하산 아시프

당신은 JFLAP에 넣을 수없는 수학적 표기법에 대해서는 맞을 것입니다.하지만 여전히 문법의 모든 규칙을 적용 할 수 있으며 PDA로 변환하거나 CFG 나 다른 오류가 아니라고 말할 수 있습니다
Haseeb Hassan Asif

{anbncn:nN}

2
JFLAP가 문맥이없는 문법을 동등한 PDA 로 변환 할 수 있다고 생각 하지만, 여기서는 전혀 도움이되지 않습니다.
유발 Filmus
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.