언어가 규칙적인지 테스트하는 알고리즘


11

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

다시 말해, 대수 형태로 지정된 언어 ( 와 같은 것으로 )에 언어가 정규 언어인지 여부를 테스트하십시오. 학생들이 모든 숙제를하도록 돕기 위해 웹 서비스를 작성한다고 상상해보십시오. 사용자는 언어를 지정하고 웹 서비스는 "일반", "정규 아님"또는 "모름"으로 응답합니다. (웹 서비스가 가능한 한 자주 "모름"이라고 대답하고 싶습니다.) 이것을 자동화하는 좋은 방법이 있습니까? 다루기 쉬운가요? 결정할 수 있습니까 (즉, "모름"이라고 대답 할 필요가 없음을 보장 할 수 있습니까)? 이 문제를 해결하기 위해 합리적으로 효율적인 알고리즘이 있습니까? "모름"이외의 답변을 제공 할 수 있어야합니다.={:}

언어가 규칙적이지 않다는 것을 증명하는 고전적인 방법은 펌핑 보조입니다. 그러나 어떤 시점에서 수동 통찰력이 필요한 것처럼 보입니다 (예 : 펌핑 할 단어 선택). 이것이 알고리즘으로 바뀔 수 있는지 확실하지 않습니다.

언어가 규칙적임을 증명하는 고전적인 방법은 Myhill–Nerode 정리를 사용하여 유한 상태 오토 마톤을 도출하는 것입니다. 이것은 유망한 접근법처럼 보이지만 대수적 형태로 언어에 대한 기본 작업을 수행하는 능력이 필요합니다. 대수적인 언어로 필요한 모든 연산을 상징적으로 수행 할 수있는 체계적인 방법이 있는지는 분명하지 않습니다.


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

={이자형:에스}

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

  • 각각의 워드 표현이다. (이 단어는 Σ ∗의 모든 단어를 취할 수있는 변수를 나타냅니다 .)엑스,와이,,Σ

  • 각각 워드 표현이다. (여기서 x r 은 문자열 x 의 역을 나타냅니다 .)엑스아르 자형,와이아르 자형,아르 자형,엑스아르 자형엑스

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

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

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

  • 길이 변수이다. (이것은 모든 자연수를 취할 수있는 변수를 나타냅니다.)m,n,p,q,

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

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


아직 당신이 선택한 언어 표현에 대해 많이 생각할 시간이 없었습니다. 대략 어떤 종류의 언어를 다루고 있습니까? 단어 변수가 한 번만 발생한다는 제약 조건을 추가하면 모든 해당 언어에 컨텍스트가 있습니까?
Gilles 'SO- 악마 그만해

어쩌면 문법으로 자체 를 쓸 수 있습니까? 마찬가지로 E : : = C η | X | E E | E의 연구η : : = N | | x | 간결하게 당신이 묘사 한 것입니까? 이자형E::=cηxEEErη::=n|x|
jmad

1
표현할 수 있으므로 문맥없는 언어를 훨씬 능가합니다. 아직도, 나는 문맥이없는 문법이 정규 언어를 정의 하는지를 결정하는 것만 큼 문제가 적어도 어렵다고 생각합니다. {anbncnnN}
Gilles 'SO- 악마 그만해

@jmad, 예, 그것은 완벽하게 합리적입니다. 나는이 언어 표현 선택에 얽매이지 않았다. 만약 당신이 더 적절한 것을 본다면, 다른 것을 선택할 수있다. 질, 큰 공격 각도! (관찰자에게는 임의의 문맥이없는 문법이 정규 언어를 정의하는지 여부를 테스트 한 결과를 확인할 수 없다는 알려진 결과가 있습니다.) 문제를 결정할 수없는 경우 웹 서비스가 "나는하지 않습니다. '알지 못함'을 입력 한 다음 가능한 한 "알지 못합니다"라고 대답하는 알고리즘을 요청하십시오.
DW

이 클래스는 Kleene 스타 아래에서 닫히지 않습니다. 균형 괄호를 표현할 수 있습니까?
Gilles 'SO- 악마 그만해

답변:


13

대답은 '아니오. 주어진 문맥이없는 문법이 정규 언어를 생성하는지 여부를 결정하는 것은 결정 불가능한 문제입니다.

업데이트 . 나는 일반적인 질문에이 부정적인 대답을 주었다

대수 형태로 지정된 언어가 주어지면 언어가 규칙적인지 여부를 테스트하십시오.

문맥이없는 언어는 언어로 된 대수 방정식의 솔루션이므로 J. Berstel 변환 및 문맥이없는 언어 의 책에서 II 장, 정리 1.4 및 1.5를 참조하십시오 .

그러나, 동일한 문제는 결정적 문맥 자유 언어 decidable이다 인해 스턴 [1]에 사소 결과 [2] 용감한 향상 :
[1] RE 스턴, 푸시 기계에 대한 규칙적인 테스트 정보 및 제어 (11) 323- 340 (1967). DOI : 10.1016 / S0019-9958 (67) 90591-8.
[2] LG Valiant. 결정 론적 푸시 다운 오토마타 J. ACM 22 (1975), pp. 1–10의 규칙 및 관련 문제 .

케이케이케이아르 자형케이

(아르 자형)={11케이케이(1,...,케이)아르 자형}
(아르 자형)아르 자형케이케이

S. Ginsburg and EH Spanier., Semigroups, Presburger formulas and languages , Pacific J. Math. 16 (1966), 285-296.

S. Ginsburg 및 EH Spanier. 묶인 정규 세트 , Proc. 미국 수학의. Soc. 17 , 1043–1049 (1966).

이것은 문제의 두 번째 부분을 해결하지 못하는데, 단어 변수로 인해 결정 불가능할 수도 있지만 시작하기에는 합리적인 조각이됩니다.


(a) Pedantic nit : 위의 대수적 구문이 모든 문맥이없는 문법을 표현하기에 충분히 일반적인지 여부는 확실하지 않으므로 (Gilles와 내가 주석에서 암시 한 바와 같이) 특정 결과가 여기에 적용되는지 여부는 명확하지 않습니다. . (b) 더 중요한 : 웹 서비스가 "모름"으로 응답 할 수 있도록 적절하게 조정 된 문제점 설명을 고려하십시오. "알지 못합니다"라고 대답하는 알고리즘을 거의 찾지 않습니다. 가능한 한. 나는 이전에 의견에서 이것을 제안했다. 질문 자체를 명확하게하기 위해 질문을 편집하겠습니다.
DW

나는 당신이 증거를 조정할 수 있다고 생각하지만 결과는 따르지 않습니다. 이 형식으로 표현할 수없는 문맥이없는 언어가 있다고 생각합니다. 예를 들어 균형 괄호를 어떻게 표현합니까? Kleene 별 아래에서 언어 클래스가 닫히지 않습니까?
Gilles 'SO- 악의를 그만두십시오

@Gilles, 그래, 나는 그것에 대해 생각했다. 증거를 어떻게 적용해야하는지 즉시 알 수 없습니다. 문맥이없는 문법이 규칙적인지 판단 할 수 없다는 표준 증거는 Greibach의 정리를 통하는 것입니다. 그러나이 클래스의 언어가 Greibach 정리의 전제를 충족시키는 것처럼 보이지 않습니다 (정규 세트와 연결하여 닫히고 노조에서 닫히지 않을 것 같습니다). 어쩌면 내가 익숙하지 않은 다른 증거 접근법이있을 수 있습니다. 이 대수 형태로 균형 괄호의 언어를 표현하는 방법이 명확하지 않다는 데 동의합니다.
DW

참조를 추가했습니다.
J.-E.

게시물이 다른 언어 클래스를 다루므로 질문에 답변하지 않습니다. 여기에서 허용되는 대수 형태 (단일 단어 표현)는 임의의 문맥이없는 언어를 표현하는 데 필요한 대수 형태만큼 일반적이지 않습니다 (우리가 말할 수있는 한). 두 사람의 교집합에 대해 문제가 결정될 수 있습니다.
Gilles 'SO- 악마 중지
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.