언어가 규칙적이지 않다는 것을 증명하는 방법이 많이 있지만, 어떤 언어 가 규칙적 이라는 것을 증명하려면 어떻게해야 합니까?
예를 들어, 이 규칙적이라고한다면 다음 도 규칙적 임을 어떻게 증명할 수 있습니까?
이것을 결정하기 위해 비 결정적 유한 오토 마톤을 그릴 수 있습니까?
언어가 규칙적이지 않다는 것을 증명하는 방법이 많이 있지만, 어떤 언어 가 규칙적 이라는 것을 증명하려면 어떻게해야 합니까?
예를 들어, 이 규칙적이라고한다면 다음 도 규칙적 임을 어떻게 증명할 수 있습니까?
이것을 결정하기 위해 비 결정적 유한 오토 마톤을 그릴 수 있습니까?
답변:
예, 다음 중 하나를 생각 해낼 수 있다면 :
일부 언어 의 경우 은 규칙적입니다. 있습니다 더 해당 모델은 있지만, 위의 가장 일반적이다.L
"계산"세계 이외의 유용한 속성도 있습니다. 도 규칙적인 경우
일반 언어로 특정 작업을 수행하여 구성 할 수 있으며 이러한 작업은 다음 과 같은 일반 언어에 대해 닫힙니다.
그리고 더 , 또는
주어진 예에서, 우리는 몇 가지 (일반) langage의이 기준으로하고 언어에 대해 뭔가 말하고 싶은 에서 파생합니다. 첫 번째 방법을 따르면 -에 적합한 모델 구축 - 우리가 동등한 중 모델을 가정 할 수 우리가 원하는; 물론 은 알려지지 않았기 때문에 초록으로 남아있을 것입니다 . 두 번째 방법에서는 에 대한 설명에 도달하기 위해 직접 사용 하고 클로저 속성을 적용 할 수 있습니다 .L ' L ' L의 L의 L의 L '
기본 방법
논리적 방법 (종종 공식 검증에 사용됨)
고급 방법
정교한 펌핑 보조기구. 예를 들어
[1] J. Jaffe, 정규 언어에 필요한 충분하고 충분한 펌핑 보조, Sigact News-SIGACT 10 (1978) 48-49를 참조하십시오.
[2] A. Ehrenfeucht, R. Parikh 및 G. Rozenberg, SIAM J. Comput. 10 (1981), 536-541.
[3] S. Varricchio, SIAM J. Comput. 26 (1997) 764-771.
잘 준 명령.
[4] W. Bucher, A. Ehrenfeucht, D. Haussler를 참조하십시오 . 파생 관계에 의해 생성 된 총 레귤레이터에 대해서는 Theor . 계산. 공상 과학 40 (1985) 131–148.
[5] M. Kunz, 언어 불평등의 정식 솔루션 및 유사 준 주문 .
지원 -rational 시리즈.
변환을 기반으로하는 대수적 방법 ( 일반 언어를 보존하는 작업 참조 ).
Ran G.의 답변은 일반 언어를 지정하는 데 사용할 수있는 동등한 모델의 상당히 광범위한 목록을 제공합니다 (그리고 목록은 양방향 자동 제어, MSO 논리로 이어지지 만 '더 동등한 모델'링크에 포함되어 있습니다. '). 라파엘이 강조한 것처럼, 우리는 관객이 선택한 표현이 실제로 정확하다는 것을 확신시키기 위해 논쟁이 필요합니다.
질문을 다시 고려하면 'For example '가 추가됩니다. 즉 , 위의 모델 중 언어 지정한다고 가정 하면 해당 모델을 대한 모델로 변환 하는 유효한 구성 을 제공 해야합니다 . 이것은 일반적으로 같은 유형의 모델 일 것이지만 반드시 그럴 필요는 없습니다. 예를 들어 대한 결정 론적 FSA로 시작하여 대한 비결정론 적 FSA로 끝날 수 있습니다.L L ' L L '
여기에는 클로저 연산을 사용할 수있는 가능성이 포함됩니다. 예제에서 명시 적으로 지정된 연산에는 있습니다.
따라서 요점은 대답이 훌륭하지만 특정 언어를 처음부터 작성하지 않을 때 " 에서 로 구성" 을 추가해야한다는 것 입니다.L '
위의 답변으로 다루지 않은 또 다른 방법은 유한 자동 변환 입니다. 간단한 예를 들어, 다음과 같이 정의 된 셔플 작업 에서 일반 언어가 닫혀 있음을 보여 드리겠습니다 . 클로저 속성을 사용하여 셔플 아래에 클로저를 표시 할 수 있지만 DFA를 사용하여 직접 보여줄 수도 있습니다. 한다고 가정 받는 DFA이다 (위한 ). 다음과 같이 새로운 DFA 을 구성합니다.
이 방법의보다 복잡한 버전은 추측과 관련이 있습니다. 예를 들어, 일반 언어가 반전 으로 닫혀 있음을 보여주십시오 . 즉, (여기서 입니다.) 이것은 표준 클로저 연산 중 하나이며, 반전시 클로저는 정규 표현식 조작 (쉽게 수행되는 유한 오토 마톤 변환의 대응으로 간주 될 수 있음)에서 쉽게 따릅니다. 정규 표현식) – 정규 표현식을 반대로 바꿉니다. 그러나 NFA를 사용하여 폐쇄를 증명할 수도 있습니다. 이 DFA 의해 허용 된다고 가정하십시오 . 우리는 NFA를 구성
( 여러 초기 상태를 허용하면 제거 할 수 있습니다 .) 여기서 추측 구성 요소는 반전 후 단어의 최종 상태입니다.
추측은 종종 검증도 필요합니다. 간단한 예 중 하나는 회전 중인 클로저입니다 . 이 DFA 의해 허용 된다고 가정하십시오 . NFA 을 구성하면 다음과 같이 작동합니다. NFA는 먼저 추측 합니다. 그런 다음 및 를 확인하여 에서 비 결정적으로 이동 하는지 확인합니다. 이것은 다음과 같이 공식화 될 수 있습니다.
이 기술의 다른 변형은 경계 카운터를 통합합니다. 예를 들어, 편집 거리 폐쇄 변경을 고려해 봅시다 : DFA에 주어 대 , E 구조체를 NFA 위한 다음과 같이 :
당신은 그들이보다 더 이상 사용 언어에 속하는하지 여부를 임의의 문자열을 결정 스캐너 쓸 수 IFF에 언어는 정기적 인 고정 즉 인식을 수행 할 수 있습니다 - 메모리의 양이 O (1) 공간.
정규식 변환 은 특정 작업에서 클로저를 증명하는 한 가지 방법입니다. 가장 간단한 두 가지 예는 반전 하에서의 폐쇄와 동형 하에서의 폐쇄 이다.
정규 표현식을 감안할 때 언어 나타내는 , 우리에 대한 정규 표현식 구성 할 수 있습니다 , 모든 단어의 역의 언어 재귀를 :
모든 조치는 최종 규칙 합니다. 예를 들어 있습니다. 구조적 유도는 의 언어 가 실제로 임을 확립합니다 . ( 0 * 1 * ) R = 1 * 0 * r R L R
또 다른 간단한 예는 동질성 하에서의 폐쇄이다. 동형의 주어 및 일반 식 언어에 대한 , 우리는에 대한 정규 표현 얻을 수 모든 인스턴스로 대체함으로써 에서 로 . r L h ( L ) σ r h ( σ )