Pumping Lemma for Regular Languages
두비니
·2021. 6. 7. 22:50
1. Pumping Lemma
Pumping Lemma는 Regular Language의 일반적인 성질을 기술한 이론입니다. 따라서 어떤 language가 regular language를 판단할 때 사용됩니다.
참고로 한가지 써놓자면, pumping lemma는 언어가 non-finite일때를 한정해서 non-regular 증명용으로 사용합니다.
이에 대한 설명을 몇가지 덧붙이자면,1. 만약 어떤 language가 finite(유한)하다면 무조건 regular합니다. 그에 해당하는 FSM이 무조건 존재하기 때문이죠.2. 그러나 language의 길이가 non-finite(무한)한 경우, 이건 해당하는 FSM이 존재하지 않을지도 모릅니다. 따라서 이 경우에는 regular language가 아니라는 것을 증명하기 위해 pumping lemma를 사용합니다.
기본적으로 pumping lemma는 비둘기 집의 원리를 이용하며, state의 개수보다 긴 string을 accept 하기 위해서는 어디선가 loop을 무조건 돌아야 한다는 개념을 가지고 증명을 진행합니다.
해당 theorem은 다음과 같습니다.
Theorem Let A is a regular language. Then there exists an integer p≥1, called the pumping length, such that the following holds : Every string s in A, with |s| ≥ p, can be written as s = xyz satisfying the following. ① |y| ≥ 1 ② |xy| ≤ p ③ xyⁿz ∈ A for all n ≥ 0 즉, 길이가 p 이상이라면 1, 2, 3 의 조건을 모두 만족함. |
따라서 기본적인 흐름은 다음과 같습니다. (귀류법 이용)
1. language A는 regular, 그리고 정수 p가 p≥1임을 가정
2. s∈A인 string을 임의로 선택
3. |xy|≤p, |y|>1을 만족하도록 A를 x*y*z*의 꼴로 맞춤 (조건 끼워맞추기)
4. Pumping Lemma 조건에 모순이 생기는 부분을 찾기 >> thus proved.
이렇게만 보면 이해하기 힘드니 예시를 하나 같이 봅시다.
2. 예시
1) Prove that L = {0ⁿ1ⁿ : n≥0} is NOT regular.
풀이는 타이핑으로 하기 어려워 필기본으로 대체합니다.
처음 공부할 때는 2번가정을 할 때 y가 0으로 이루어진 string인게 이해가 안됐는데, 어차피 모순법을 이용해 증명하는 과정이라 하나의 케이스라도 부합하지 않음을 보이면 증명이 되는거라 이렇게 한 것 같습니다. 이 문제 말고도 다른 문제들도 이런 가정을 기반으로 푸는 문제들이 많더라구요.
2) Prove that L = {0n! : n≥0} is NOT regular.
뭐 이런늒김이라는거,,
끝!
'수학' 카테고리의 다른 글
finding x and p when we have successive large powers of an integer x, with modulo of prime p (0) | 2021.11.16 |
---|---|
Context-Free Language and Grammar (0) | 2021.06.08 |
Grammar의 정의와 Regular Grammar (0) | 2021.06.07 |
DFA 문제 팁 (0) | 2021.04.20 |
DFA / NFA / Language 개념정리 (0) | 2021.04.20 |