Characteristics of regular language

Download Report

Transcript Characteristics of regular language

정규언어의 특성
폐포성질?
• 정규 언어에 연산을 수행할 경우 그 결과가 정
규 언어인가?
폐포(closure) 성질
• 언어군을 결정
• 유한언어
• 무한언어
정규언어의 폐포 성질
• 주어진 두 정규언어 L1과 L2에 대해, 이
들의 합집합이 역시 정규 언어인가?
Yes
페포(closed) 되어 있음
집합연산에 대한 폐포 성질
• L1과 L2가 정규 언어일때
–
–
–
–
–
L1  L2
L1  L2
L1L2
L1
L1*
• 정규언어는 합집합, 교집합, 접합, 여집합, 스타
-폐포 연산에 대해 모두 폐포 성질이 성립 함
집합연산에 대한 폐포 성질
• 증명)
– L1과 L2가 정규 언어이면 L1=L(r1)과
L2=L(r2)를 만족하는 정규 표현 r1과 r2가 존
재
– L1  L2, L1L2, L1*를 표현하는 정규 표현도
r1 + r2, r1r2, r1* 로 존재 => 폐포 성질 만족
집합연산에 대한 폐포 성질
• 증명)
– M=(Q, , , q0, F)를 L1을 인식하는 dfa라 하
면, L1의 여집합 L1을 인식하는 dfa M은 다
음과 같다.
M=(Q, , , q0, Q-F)
(dfa의 정의에서 *는 전체함수임)
즉, wL 인 경우 *(q0,w)는 항상 종료 상태
이고, wL 인 경우 *(q0,w) Q-F 가 된다.
=> 폐포 성질 성립
집합연산에 대한 폐포 성질
• 증명)
– L1=L(M1), L2=L(M2)라 하면 M1=(Q, , 1, q0, F1),
M2=(P, , 2, p0, F2)는 dfa 들이다.
– 여기서 교집합에 대한 폐포 성질을 위해서 M1과
^ ^ , ,
^ (q , p ), F)
^ 를구
M2가 결합된 오토마타 M=(Q,
0
0
성한다.
^ = Q  P 은 쌍 (q , p )들로 이루어 짐
– 상태집합 Q
i
j
– 전이함수 는 M1이 상태 qi 에 있고, M2가 상태 pj 에
있을 경우 M이 항상 상태 (qi , pj)에 있도록 한다. 즉
^((q , p ),a) = (q , p )
i
j
k
l
2(pj),a) = pl, 1(qi),a) = qk
집합연산에 대한 폐포 성질
– F는 qi  F1이고 pj  F2 인 모든 쌍 (qi , pj) 들
의 집합
– 그러면 w  L1  L2 이고 오직 그럴때에만
^
w가 M에 의해 승인됨은 당연함 => 폐포 성
질 성림
비정규 언어의 식별
비정규 언어의 식별
• 지금까지의 예 => 정규언어는 무한 집합일 수
있음
• But 정규 언어는 DFA에 의해 인식(유한개의 상
태를 가짐)
=> 문자열을 처리하는 데에 있어, 모든 단계에서
기억되어야 할 정보가 엄격히 제한적일 경우에
만 그 언어가 정규 언어가 될 수 있음
피전홀 원리
1
4
7
5 76
2
1
3
4
9 10
8
2
5
8
11
12
3
6
9
피전홀 원리
• m개의 상자에 n개의 물건을 넣는 경우
– n > m 이면 적어도 한 개 상자에는 두개의 물
건을 넣어야 한다
예제 4.6
• 언어 L={anbn : n >= 0}이 정규 언어인가?
– 가정) 언어 L이 정규 언어이다.
• L을 인식하는 결정적 유한 오토마타 dfa M=(Q,
{a, b}, , q0, F)가 존재
• 모든 i 에 대한 확장 전이함수 *(q0,ai)고려
– i 의 개수는 무한
– M의 상태의 개수는 유한
=> 피전홀 원리 적용
예제 4.6
• i 의 개수=>무한, M의 상태의 수=>유한
• 다음 조건을 만족하는 상태 q가 존재
– *(q0,an) = q
– *(q0,am) = q 단, n  m
• 가정에 의해 M은 anbn 을 승인하므로 다음이 성
립해야 함
– *(q,bn) = qf  F
• 또한 다음이 성립
– *(q0,ambn) = *(*(q0, am),bn) = *(q,bn) = qf
– M이 ambn 을 승인할 수 있음
예제 4.6
• 언어 L={anbn : n >= 0}이 정규 언어인가?
• 답 => No
• 모든 i 에 대한 확장 전이함수 *(q0,ai)고려
– i 의 개수는 무한
– M의 상태의 개수는 유한
• 유한 오토마타는 한정된 기억장소를 가짐
펌핑 보조정리
• n개의 정점을 갖는 전이 그래프
• 길이가 n 이상인 모든 보행
• 어떤 정점이 반복 되어야 함
• 즉 사이클을 포함해야 함
정리 4.8
• L을 무한 정규 언어(infinite regular language) 라
하면 다음을 만족하는 양의 정수 m 이 존재
• |w| >= m 인 모든 문자열 w  L는 아래의 조건
을 만족하도록 분할 가능
w = xyz
여기서 |xy| <= m
이고, |y| >= 1
이고, 모든 정수 i=0,1,2,…에 대하여
wi = xyiz
는 언어 L에 속함
펌핑 보조정리
L을 무한 정규 언어라 할때 |w| >= m 에 대해서
wi = xyiz
• L에 속한 충분히 긴 모든 문자열
– 세부분으로 분리 가능
– 중간부분을 임의의 횟수 반복하더라도 결과의 문자
열은 L에 속함
• 반복되는 중간 부분을 “펌프”된다고 말함
정리 4.8
• 증명)
– L이 정규 언어라면
• L을 인식하는 dfa M=(Q, {a, b}, , q0, F)가 존재
• M의 상태들의 라벨이 q0, q1, q2, … qn로 주어진다고 가정,
길이가 m=n+1이상인 문자열 w  L을 고려
– 이 순서열은 정확히 |w|+1 개의 상태들로 구성
• |w| >= m
• 이들 중 반드시 반복되는 상태가 최소한 하나 존재
• 반복은 n번째 이동보다 그 이전에 시작하여야 함
– q0, qi, qj, …, qr, …, qr, …, qf
정리 4.8
• 이러한 속성은 w가 다음 조건을 만족하는 세
개의 부 문자열 x, y, z 로 분할 되어야 함
– *(q0,x) = qr
– *(qr,y) = qr
– *(qr,z) = qf
• 단, |xy| <= n+1= m 이고 |y| >= 1 임
• 즉 다음의 결과를 즉시 얻을 수 있다.
– *(q0,xz) = qf
– *(qr,xy2z) = qf
– *(qr,xy3z) = qf
펌핑 보조정리
• 무한언어(infinite language)
– 펌핑 보조정리 만족
• 유한언어(finite language)
– 정규언어
– 펌프될 수 없음
• 펌프된다 => 무한집합
펌핑 보조정리
• 펌핑 보조정리, 피존홀
어떤 언어가 정규 언어가 아님을 증명
• 어떤 언어가 정규 언어인가를 증명하는
데 사용할 수 없음
예제 4.7
• 펌핑 보조정리를 이용하여 L={anbn : n >= 0}이
정규 언어가 아님을 보이시오
– L이 정규 언어라 가정하면, 펌핑 보조정리가 반드시
성립해야 함
– If n = m, 부분자열 y는 전부 a로 이루어져야 함
– If |y|=k, 반복인수 i가 0이라면 다음의 문자열
w0 = am-kbm
은 분명히 L에 속하지 못함
– 펌핑 보조정리에 모순, L이 정규 언어라는 가정에
모순
예제 4.8
• ={a, b}일때 다음이 정규 언어가 아님을
보여라
L={wwR : w  *}
m m m m
a…ab…bb…ba…a
xy
z