정규 표현식이 무한 할 수 있습니까?


10

정규 표현식을 사용하여 정의 할 수있는 언어와 DFA / NFA (finite automata)로 인식 할 수있는 언어는 동일합니다. 언어에 대한 DFA도 없습니다 . 하지만 여전히 그것은 (그 문제에 대한 모든 비정규직 언어가 될 수있다)와 같은 정규 표현식을 사용하여 작성 될 수있다 . 그러나 우리는 정규 표현을 가진 모든 언어가 그것을 인식하는 DFA를 가지고 있다는 것을 알고 있습니다 (이전 진술과 모순됨). 나는 이것이 사소한 일이라는 것을 알고 있지만 정규 표현식의 정의에는 유한해야한다는 조건이 포함되어 있습니까?{0n1n|n0}{ϵ}{01}{0011}......


3
이미 자신의 질문에 대답했습니다. REG CFL 인 경우 이러한 용어는 정규식이 될 수 없습니다.
Raphael

1
참고 사항 : DFA / NFA의 요구 사항을 유한 한 수준으로 낮추면 \ {0 ^ n1 ^ n \ mid n \ geq0 \} 을 수락하는 자동 장치를 구축 할 수 있습니다 . {0n1nn0}

3
용어의 관점에서, 단어 'automata'는 'automaton'의 복수형입니다. 'automatas'라는 단어는 없습니다. 기존보다 더 많이 만들 수는 없습니다. (automata는 소유
적이기는

답변:


23

정규식이 무한대로 허용된다면 어떤 언어 라도 규칙적 일 것입니다.

언어 주어지면 항상 을 정확하게 정의하는 정규식 를 정의 할 수 있습니다. (예 : 정규식 는 정의합니다 .)L={w1,w2,}아르 자형=1+2+
아르 자형1=ϵ+0+1+00+01+10+11+1={0,1}

우리는 일부 언어가 정규적이지 않다는 것을 알고 있습니다. 따라서 이것은 무한 정규 표현식이 유한 정규 표현식보다 더 큰 언어 클래스를 나타냅니다.


5
나는 무한한 정규 표현식이 다르다고 말할뿐만 아니라 전체적으로 개념이 의미가 없기 때문에이 답변을 좋아합니다.
jmite

두 번째 단락에 묻힌 요점에 대한 간결한 진술.
Davislor

그러나 그것은 순수한 타우 톨 로지로 끝납니다. 그렇다면이 언어를 사용한다면 모든 언어를 규칙적으로 고려하지 않겠습니까? 우리가 정규 표현식으로하는 일은 더 이상 작동하지 않습니다. 유도 알고리즘으로 끝나지 않고 무한한 상태를 가지므로 상태 머신을 구축 할 수 없습니다. 우리는 목록의 모든 것을 비교할 수 없으며 일치하는 것이 없으면 거부 할 수 없습니다. 어쨌든 우리는 물리적으로 목록을 표현할 수 없습니다. (컴퓨터로 생성 할 수있는 목록은 결정 가능한 언어입니다.) 우리는 모든 언어가이 형식을 가지고 있다는 사실을 사용하여 물건을 증명할 수 있지만 정규 표현식에 대해 아는 것은 아닙니다.
Davislor

@jmite "무의미하지 않습니까"또는 특별한 경우?
BAR

@BAR 무한 정규 표현식으로 설명되는 이상의 언어 클래스에서 즉 모든 언어 집합 처럼 의미가 없습니다 . 유한 RE, CFG 또는 튜링 머신과 같은 방식의 언어는 제공하지 않습니다. Σ2Σ
jmite

5

예, 유한해야합니다. 무한한 가능한 일치 집합이 있고 입력이 011입니다. 당신은 그것을 거부 할 수 있습니까? 당신은 확인하기 위해 경기가 부족합니까?

그 정의에 따르면 규칙적 이지 않은 언어가 있습니까? 주어진 프로그램이 주어진 입력에서 멈추도록 모든 프로그램 및 입력 쌍 세트는 어떻습니까?

자, 당신은 사전 식 순서로 언어로 문자열을 열거하는 프로그램이 있다면 —

최신 정보

의견의 피드백을 바탕으로 비트를 명확히하기 위해이 양식의 모든 언어가 규칙적인 것은 아닙니다. 예를 들어 Kleene 정리의 증거를 찾는 경우 정규식이 유한 상태 기계를 생성 함을 증명하기 위해 유한해야한다는 사실에 따라 다릅니다.

왜 "정규"언어를 그렇게 정의합니까? 모든 형식적인 언어는 알파벳에있는 문자열의 부분 집합이고 모든 문자열 집합은 싱글 톤의 합집합으로 표현 될 수 있으므로 문자열 집합을 "일반적인"언어라고 부르면 일반 언어 는 동의어 일뿐입니다. 언어 . 하드웨어 나 소프트웨어로 실제로 구현할 수 없기 때문에 이는 매우 유용한 정의가 아닙니다. 임의의 무한 목록을 어디에나 저장하거나 무한 상태 머신을 구축 할 수 없습니다.

내가 암시 한 것처럼, 언어로 모든 문자열을 순서대로 열거하는 방법이 있다면, 그로부터 결정자를 만들 수 있습니다 (정확한 문자열을 볼 때를 받아들이고, 당신이 뒤에 오는 문자열을 만날 때 거부하십시오) '찾고) 그 반대의 경우도 (각 문자열을 순서대로 결정자를 통해 실행하고 허용되는 경우에만 출력하십시오). 따라서 열거 가능한 모든 언어를 regular 로 간주하면 모든 결정 가능한 언어 는 "일반적"이되며 유한 상태 기계에 의해 인식되는 언어와 그에 상응하는 인코딩을 유한 표현식으로 인식하는 새로운 용어가 필요합니다.


1
이 답변은 잘못되었습니다. 언어의 일부 표현이 순진한 방식으로 알고리즘 결정자를 작성하는 데 적합하지 않다는 사실 만으로도이 표현이 잘못되었음을 암시하지는 않습니다 . 다른 접근법이있을 수 있습니다. 실제로 모든 결정 가능한 언어는 sasha가 제안한 형식을 나타냅니다! 간단히 말해서, 당신은 "어떻게 볼 수 없어서 불가능해야한다"는 잘못을 저지르고 있습니다.
Raphael

@Raphael : " 모든 결정 가능한 언어는 Sasha가 제안한 형식을 나타냅니다!" 그것은 사실, 내가 대답하고있는 요점입니다. 문제는 이 형식의 모든 언어가 규칙적으로 정의 되었습니까? 글쎄, 모든 결정 가능한 언어는 규칙적인가? (그리고 제가 보여 드렸듯이, 결정 불가능한 것들도 있습니까?) 이것이“정규”의 유용한 정의일까요?
Davislor

또한, 문자열 목록에 대한 무한한 결정을 내릴 수 없다는 결론을 내리지 않고 마지막 문장은 어떻게 할 수 있는지에 대한 힌트였습니다. 주문에서 문자열을 지나칠 때 그러나 유한 상태 머신은 무한 목록의 각 문자열과 비교 한 모든 상태를 나타낼 수 없으며 정규 표현식도 불가능하므로이를 수행 할 수 없습니다. 가능하다면 모든 결정 가능한 언어를 인식 할 수있을만큼 강력 할 것입니다.
Davislor

0

정규 표현식이 무한대로 허용되었다고 가정하십시오.

따라서 {ϵ} ∪ {01} ∪ {0011} ...에 의해 정의 된 언어는 규칙적입니다. 모든 정규 언어에는 NFA가 있습니다. 이 NFA를 얻는 한 가지 방법은 {ϵ}, {01}, {0011} ... 각각에 대해 개별 NFA를 보유하고 ϵ 전환을 사용하여 결합하는 것입니다. 무한한 정규 정규식이 있으므로 무한 하위 NFA를 결합해야합니다. 그러나 NFA는 한정된 수의 상태 만 가질 수 있습니다 (NFA 정의).

따라서 무한 정규 표현식의 결합으로 정의 된 언어를 정의 할 수있는 NFA는 존재하지 않으며 이는 언어가 규칙적이지 않다는 것을 의미합니다.

따라서 무한 정규 표현식의 결합으로 정의 된 언어와 동일한 언어를 정의 할 수있는 정규 표현식이 없습니다.

따라서 정규 표현식은 유한 표현식 만 가질 수 있습니다.


"무한 정규 표현식"은 정규 언어가 아닌 다른 언어 클래스를 정의합니다. 실제로, 그들은 어떤 언어도 정의 할 수 있으며 , 전혀 흥미롭지 않습니다.
vonbrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.