언어가 규칙적이라고 직관적으로 느끼는 방법


9

주어진 언어 L={anbncn}, 생산 규칙을 ​​보지 않고이 언어가 규칙적이지 않다는 것을 직접 말할 수 있습니까?

나는 펌핑 보조 정리를 사용할 수 있지만 일부 사람들은 이것이 규칙적인 것이 아니라는 문법을보고 있다고 말합니다. 그게 어떻게 가능해?


1
누구나 어떤 언어를 보더라도 규칙이 아니라고 말할 수 있습니다. 나는 직관 자체가 경험만큼이나 많이 활약하고 있다고 확신하지 않습니다. 이것은 매우 간단한 언어 (비정규 임에도 불구하고)이며 공식 언어 연구에서 불가피하게 접할 수있는 언어입니다. 규칙적이지 않다는 말을 듣고 유효한 증명 기술을 사용하여 규칙적이지 않다는 사실을 알게되면 일반적으로 다른 사람들을 소개 할 때 스스로 증명 했으므로 다른 사람들을 설득하기위한 증거가 필요하지 않습니다. 제목.
Patrick87

그래,하지만 때로는 강의 그들은 단지 일부 건조 수학은 증명에 따라,하지만 그들은 정말 진짜 간단한 예제와 직관적 인 설명이 부족
doniyor

잊다 anbncn. 당신은 그것을 느끼게 되었습니까anbn규칙적이지 않습니까?
Uday Reddy 2016 년

2
보면 문법 과 문법 정규 아니므로 선포 언어가 정규없는 것은 잘못된 생각이다. 정규 언어에는 많은 비정규 문법이 있습니다. 조심해! 즉, 문법이 규칙적인지 결정하는 것은 쉽다. 프로덕션을 확인하십시오.
Raphael

답변:


11

DFA / NFA의 주요 속성은 무제한 메모리 부족입니다. 당신이 생각할 수있는 언어와 유일한 알고리즘 (나중에 유한 오토 마톤 (Finite Automaton)으로 번역되어야하는)을 보면,이 속성을 필요로합니다. (처럼n 귀하의 예에서) 그 언어는 아마도 규칙적이지 않을 것입니다.

물론, 당신은 항상 수학 직관이 틀릴 수 있다는 것을 기억해야하며, 직관을 확신하는 유일한 방법은 그것을 증명하는 것입니다.

편집 : 공간 부족으로 인해 주석의 마지막 질문에 대답하겠습니다.

너희들은 무한한 기억에 대해 이야기하고 있는데 그것은 당신이 그것이 규칙적이지 않은 이유라는 것을 의미합니다. 그러나 a ^ nb ^ m은 내가 원한다면 무제한 메모리를 가질 수 있습니다. 이것은 여전히 ​​나에게 평화를주지 않습니다.

문제는 단어가 얼마나 커질 수 있는지가 아니라 (모든 유한 언어가 규칙적이고 매우 지루하기 때문에 보통 무한 일반 언어를 접하게 됨) DFA가 얼마나 많이 기억해야 하는가입니다.
에서ambn 예를 들어, 기억할 필요가 없습니다 m,n. 알고리즘은 단지 긍정적이고 단어가 올바르게 정렬되어 있는지 확인하면됩니다. 이것은 유한 목록이며 목록의 각 항목에는 일정한 양의 메모리가 필요합니다.
이것을 다음과 비교하십시오anbn의 수를 기억하기 위해 간단한 알고리즘이 필요합니다. a의 수는 b'에스. 무제한 메모리가 필요합니다. 언어를보고 생각할 수있는 알고리즘이 무한한 메모리가 필요하다는 것을 알면 언어가 규칙적이지 않다는 내 직감이 강해집니다. 합리적인 시간에 (스마트 한) 알고리즘 (일정한 양의 메모리를 필요로하는)을 찾을 수 없다면 (얼마나 많은 시간이 당신에게 달려 있는지) 나는 언어가 규칙적이지 않다는 것을 증명할 것입니다.
이것이 좀 더 명확 해지기를 바랍니다.


감사합니다. 수학은 직관을 가져 오지만이 생산 규칙을 ​​살펴보십시오. S-> ab | aSb. 이것은 또한 a ^ nb ^ n에 대한 것이며 이는 규칙적이지 않다고 말합니다. 그러나 a ^ mb ^ n은 m, n> = 1로 규칙적입니다. 왜 이런거야? 이것들은 실제로 같은 형태입니까? 이 두 언어의 차이점을 이해하지 못합니다
doniyor

1
a ^ nb ^ n의 경우 두 가지를 추적해야합니다. 먼저 a의 수는 b의 수 (DFA에서는 불가능한 부분)와 같고 두 번째는 'b'뒤에 'a'가 없습니다. '. a ^ mb ^ n의 경우 m, n의 값에 신경 쓰지 않습니다. 하나 이상의 'a'와 하나 이상의 'b'가 있고 'b'뒤에 'a'가없는 것만 신경 쓰십시오. 비공식적으로 말하면 3 가지만 기억하면됩니다.
Boris Trayvas 2016 년

오 알았어 이제 알았어
doniyor 2016 년

질서도 중요한 것입니다. aabbcc처럼 수락되었지만 순서가 괜찮지 않기 때문에 aabcbc는 아닙니다. 권리?
doniyor 2016 년

1
"일반 언어의 주요 속성은 무한한 메모리 부족입니다." -무슨 말인지 알지만 그 문장은 말이되지 않습니다. "인식하는 알고리즘은 임의의 수의 많은 것들을 기억할 필요가 있다고 생각합니다."-이것은 실제로 내가 아는 유일한 직관이지만 그 종류는 매우 위험합니다. 여기를 참조 하십시오 .
Raphael

5

나는 펌핑 보조를 사용할 수 있습니다

바로 그거죠. Pumping lemma 또는 다른 기술 을 수십 번 사용한 후에는 규칙이 적용되지 않는 언어로 패턴을 보기 시작 합니다.anbn아마 당신이 이미 마스터했을 매우 기본적인 것입니다. 따라서 이것은 직관뿐만 아니라 경험의 문제이기도합니다.

직감을 테스트하는 좋은 방법은 다음 언어를 보는 것입니다.

  1. {xyyzx,y,z{a,b}+}
  2. {xyyzx,y,z{a,b}}
  3. {xyyzx,y,z{a,b,c}+}
  4. {xyyzx,y,z{a,b,c}}

컨텍스트가없는 것은 무엇입니까?


1
누군가가 일반 언어의 경계와 비슷하게 좋은 예를 알고 있다면 그렇게하십시오. 댓글에 답을 망치지 마십시오.
Raphael

라파엘-잘 했어! 예제를 제공하고 명시 적으로 테스트 해 주셔서 감사합니다.
doniyor 2016 년


4

실제로 전체 증명을 수행하는 대신 상당히 간단한 계산을 사용하여 언어가 규칙적인지 여부를 결정할 수 있습니다. 매우 강력한 기준 하나만 적용하면됩니다. 언어가 유한하게 많은 몫을 가진 경우에만 규칙이 적용됩니다.

직관적으로 몫은 입력의 일부를 이미 읽은 후 단어를 완성하는 데 필요한 것입니다. 보다 공식적으로 언어의 왼쪽 몫L 끈으로 x작성 xL 문자열 집합입니다 w 그런 xwL. 예를 들어L={anbn}그런 다음 aL={an1bn|n1}, 동안 bL=. 우리는 쉽게 그것을 볼 수 있습니다akL={ankbn|nk}. 형태에는 무한히 많은 몫이 있으므로 즉시 다음을 따릅니다.L 규칙적이지 않습니다.

DFA를 구성하면 D L을 결정하고 D 상태에있을 것입니다 S 읽은 후 a그런 다음 aL 언어는 다음에 의해 결정됩니다 D 시작 상태를 갖도록 수정 S. 동일한 아이디어를 사용하여 정의에서 일반 언어를 결정하는 최소 DFA를 직접 구성 할 수 있습니다.


b \ L 의미 : 내가 L을 b로 벗어나면 빈 세트가 나타납니다. 실제로 단어를 처음부터 읽기 시작해야하기 때문입니까? 뒤에서가 아니라?
doniyor 2016 년

1
bL= L로 B로 시작하는 문자열이 없기 때문에 올바른 몫을 정의 할 수 있습니다 L/b마찬가지로 "뒤에서 읽기"에 해당합니다. 정규 언어의 반전이 규칙적이기 때문에 언어가 올바른 지수를 많이 가지고 있다면 언어도 규칙적입니다. (NFA를 사용하여 쉽게 보여줄 수 있습니다.)
James Koppel


오, 고마워 이제 나는 저 작은을 얻는다. 음 ...
잠시만
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.