Theorem 1. Pumping Lemma
정규 언어 L이 주어졌다고 하자.
이때 L이 무한집합이면:
우리는 (1)을 만족시키는 어떤 양의 정수 m을 획득한다:
(1) 길이가 m 이상이고 L에 속하는 모든 문자열 w에 대하여 (2), (3), (4)를 만족시키는 세 문자열 x, y, z를 획득한다:
(2) w = x y z.
(3) |x y| ≤ m && |y| ≥ 1.
(4) { x y^i z : i ≥ 0 } ⊆ L.
Proof.
생략한다.
■
Example 2.
L := { a^n b^n : n ≥ 0 }은 정규언어가 아니다.
Proof.
L이 정규언어라고 가정하자:
분명히 f(n) := a^n b^n for n ≥ 0으로 정의된 함수 f : N → L은 전단사함수이다.
그러므로 L은 무한 언어이다.
그러므로 정리 1에 의하여 성질 (1)을 만족시키는 어떤 양의 정수 m을 획득한다.
w := a^m b^m라 하자.
이 문자열은 분명히 L에 속하고 길이가 m 이상이다.
그러므로, 성질 (1)에 의하여, 성질 (2), (3), (4)를 만족시키는 세 문자열 x, y, z을 획득한다.
그런데, 성질 (3)에 의하여, 문자열 x y의 길이는 m을 넘을 수 없기 때문에,
w의 접두사로서 x y에는 a 밖에 들어갈 수 없고 y에도 a 밖에 들어갈 수 없다.
이때 k := |y|라 하자.
성질 (3)에 의하여, k ≥ 1이다.
그런데, x y^0 z = a^(m - k) b^m은, m - k ≠ m이기 때문에, L에 속하지 않는다.
이는 성질 (4)에 모순이다.
귀류법을 적용하여 L이 정규언어가 아니라는 결론을 얻는다.
■
해당 댓글은 삭제되었습니다.
y^0은 i값에 0을 집어 넣은 것이고요, k는 문자열 y의 길이라서 성질 3에 의하여 1 이상의 정수에요.
이해 안 되시면 계속 물어보셔도 돼요
저는 알려주는 거 좋아하거든요
혹시 왜 y^0 = ""이 k = 0을 암시한다고 생각하셨는지 알 수 있을까요??
아하!!! 문자열 w = x y z와 문자열 w_0 = x y^0 z는 다르기 때문에
음 그러니까요, =를 대입으로 이해하신 건가요?
아 알겠다!!!
w_0 = x y^0 z와 w = x y z가 모두 L에 속한다고 해서 둘이 같아야 될 필요는 없습니다
이해 안 되셨으면 다시 질문하셔도 좋습니다
저도 가르치는 거를 연습해야 돼서, 제발 질문해주시고, 제 설명이 마음에 안 드시는 부분 있으면 지적해주세요.
그러니까 m - k = 0이라고 생각하시는 건가요??
정말 죄송하지만 아닙니다. k값의 범위는 0 이상 m 미만인 것 밖에 알 수 없습니다. 계속 질문해주세요.
해당 댓글은 삭제되었습니다.
네!!!
x y^0 z는 w가 아닙니다
해당 댓글은 삭제되었습니다.
축하드립니다!!! 맞으셨습니다!!!!
다음에도 막히시면 질문해주세요.
타고타고 오더니 20년도 글까지 왔네 왜 i를 마음대로 0으로 바꿀 수 있는 거지 a^m b^m에서 a에 반복이 덜 들어갔으면 b에서도 똑같이 덜 들어가야 하는 거 아닌가 w w_R 도 w에서 a^m-k b를 했으면 w_R도 똑같이 줄여야 하는 거 아닌가 대체 뭘 놓치고 있는거지 강의 유투브 블로그 글 다 읽고 있는데 이해가 안되네 지능이....
그러니까 분명 반복되는 부분이 존재하니 그 부분을 없애거나 증폭시켜도 된다! 여기까진 아해했는데 그럼 a반복 b반복이 있으면 a반복 부분을 없앴으면 b반복 부분도 없애야지 왜 a는 m-k고 b는 m이니까 서로 다르네! 너 틀렸어 이게 되는거지 분명 ab이게 정규표현이 안되는건 알겠는데 음.... 뭐지
아 nfa구현을 하면 제자리에서 반복하는 부분이니까 앞에서 아무리 돌려도 상관이 없다는 소리가 되는건가 오 잠시만 이거 맞는거 같은데 그러니까 a^m b^m이 모순이 되는거지 a^m-k b^m도 언어에 포함이 되는거니까 이 언어는 정규표현으로 안되고 무친 깨달아 버린듯 아니라고 해도 댓글 쓰는 사람 없을테니 뭐