Introduction to the Theory of Computation

Download Report

Transcript Introduction to the Theory of Computation

계산이론개요
목적
• 컴퓨터 공학 분야에는 몇 가지 공통적인
기본 원리가 존재
• 기본 원리를 이해하기 위해서는 추상적
모델을 설정해야 한다
• 추상적 모델 => 하드웨어 및 소프트웨어
에서 공통적으로 나타나는 특징들을 표
현하기 위한 모델
2/44
목적
• 추상적 모델 => 오토마타
• 오토마타는 입력, 출력, 기억장소로 구성
• 형식언어는 프로그래밍언어들의 일반적인 특
성들을 추상화한 개념
• 형식언어는 심볼들과 심볼들의 조합인 문장을
구성하는 형식규칙들의 집합
• 형식언어는 이 형성규칙들에 의해 생성되는 모
든 문자열들의 집합
3/44
우리는 경일대인이다.
한국어
경일대인은 나다.
4/44
목적
• 개념탐구 방법
– 직관적인 방법
– 수학적인 방법
•
•
•
•
•
집합론
함수
관계
트리
그래프
5/44
수학적 개요
• 집합
• 함수
• 관계
• 그래프
• 트리
• 증명기법
6/44
집합
• 추상화 모델
입력
Storage
Control unit
출력
7/44
집합(1/5)
• 집합(set) : 원소들의 모임
• 집합의 표현법
– S = {0, 1, 2}
– S = {a, b, …, z} : 의미가 명확할때 생략기호
– S = {x : x > 0, x 는 짝수이다 }
8/44
집합(2/5)
• 합집합union (U)
– S1 U S2 = {x:x S1 or x
S2}
• 교집합intersection ()
– S1
S2 = {x : x S1 and x S2}
• 차집합difference(-)
– S1 - S2 = { x : x S1 and x S2 }
9/44
집합(3/5)
• 여집합complementation
– S = {x : x U, x
S}
• DeMorgan’s laws
– S1 U S 2 = S 1 S2
– S1 S2 = S 1 U S 2
• 부분집합subset S1 S
• 진부분집합proper subset S1
S
10/44
집합(4/5)
• 멱집합Powerset S = {a, b, c}
– 2s = {O, {a}, {b}, {c}, {a,b}, {a,c}, {b,c},
{a,b,c}}
– |2s| = 2|s|
• 카티션곱Cartesian product
– S = S1 * S2 = {(x,y) : x S1, y S2}
– 한집합의 원소들이 다른 여러 집합 원소들의
순서열인 경우
11/44
집합(5/5)
• 두집합 S1={2,4}이고 S2={2,3,5,6}일때
S1*S2
– {(2,2),(2,3),(2,5),(2,6),(4,2),(4,3),(4,5),(4,6)}
– 집합내의 원소의 순서는 중요하지 않다.
– 그러나 하나의 순서쌍 내의 원소의 순서는
중요하다.
• 순서쌍 (4,2)는 집합 S1*S2에 속함
• 순서쌍 (2,4)는 집합 S1*S2에 속하지 않음
12/44
오토마타
0
0
1
0
q0
q1
1
q2
1
13/44
함수(1/2)
함수란 한 집합의 원소들 각각에 대해 다른 집합의 유일한
원소로 배정하는 규칙
F
domain
S1
:
S1
S2
range
S2
14/44
domain
range
X
Y
함수(2/2)
• 함수의 표현
– {(x1,y1),(x2,y2),…}
– xi : 해당함수의 정의역의 원소
– yi : 해당함수의 치역의 대응값
– 각 xi가 이 집합 내에서 순서쌍의 첫 번째 위
치에 최대 한번만 나타나야 한다.
15/44
오토마타
0
0
1
0
q0
q1
1
q2
1
16/44
관계
• 함수의 조건을 만족하지 않는 경우를 관계라함.
• 동치equivalence x ≡ y
• 반사성reflexivity x ≡ x for all x
• 대칭성symmetry if x ≡ y then y ≡ x
• 전이성transitivity if x ≡ y and y ≡ z, then x ≡ z
17/44
반사성Reflexivity
a
b
c
d
e
f
g
18/44
대칭성Symmetry
a
b
d
e
c
19/44
전이성Transitivity
a
b
c
e
d
20/44
그래프 (1/2)
• 그래프는 두개의 유한집합으로 구성된 구조
– 정점들의 집합the set of vertices
– 간선들의 집합the set of edges
– 간선들의 순서열a sequence of edges - 보행walk
– 어느 간선도 중복하여 지나지 않는 보행a walk in which no
edge is repeated - 경로path
– vi로 부터 vi로 경로no repeated edge - 사이클cycle
21/44
그래프(2/2)
v1
v2
v3
22/44
트리(1/2)
• 그래프의 한 종류이다.
• 사이클을 갖지 않고, 루트라 불리는 특별한 하
나의 정점을 가지는 유향 그래프
–
–
–
–
–
–
루트root : one distinct vertex
리프들leaves
부모parent
자식child
레벨level
높이height
23/44
트리(2/2)
Root
Level 0
Height = 3
Leaf
Level 3
24/44
증명기법(1/2)
• Proof by induction(귀납법)
– Example 1.5
– Example 1.6
– Example 1.7
• Proof by contradiction(귀류법)
25/44
증명기법(2/2)
• Proof by induction
– 몇 개의 특정 사례가 참이라는 사실들로부터 여러
문장들이 참임을 추론해 내는 기법
– 예) 참임을 증명하고자 하는 문장들의 순서열
P1,P2,… 이 있다고 하고 다음이 성립함을 가정
귀납기저
• 임의의 k(k>=1)에 대해 P1,P2,…,Pk는 참이다.
• n>=k인 모든 n에 대해서 P1,P2,…,Pn이 참인 사실이 Pn+1
이 참임을 의미하도록 하는 문제
귀납가정
귀납단계
26/44
Example 1.5 : 높이가 n인 이진트리의
리프 노드의 총 개수는 최대 2n 임
l(n)  2n
Basis l(0) = 1 = 20
Inductive Assumption: l(i)2i
For i = 0, 1, …, n
Inductive Step : l(n+1) = 2l(n)
l(n+1) 2 * 2n = 2n+1
27/44
언어, 문법, 오토마타
세가지 기초 개념
• 언어Languages
• 문법Grammars
• 오토마타Automata
29/44
언어(1/3)
• 알파벳 {a, b, c, d}
– 하나 이상의 심볼들의 유한 집합
• 문자열 {ab, aabb, ccdd}
– 알파벳에 속한 심볼들의 유한 길이의 순서열
30/44
언어(2/3)
• w = a1a2…an v = b1b2…bn
–
–
–
–
–
접합concatenation : wv = a1a2…anb1b2…bn
전도reverse : wr = an…a2a1
길이length : |w| = n
빈문자열empty string : | | = 0, w = w = w
부문자열substring : w = vu v = 접두부prefix,
u = 접미부suffix
– |uv| = |u| + |v|
31/44
Example 1.8: 임의의 문자열 u와 v에
대해 |uv| = |u| + |v|이 성립함을 증명
• |uv| = |u| + |v|
|a| = 1
|wa| = |w| + 1
• v = wa
|v| = |w| + 1
|uv| = |uwa| = |uw| + 1
|uw| = |u| + |w|
• |uv| = |u| + |w| + 1 = |u| + |v|
32/44
언어(3/3)
• 스타폐포star-closure
– L* = L0 U L1 U L2 …
• 양성폐포positive-closure
– L+ = L1 U L2 ...
33/44
문법(1/3)
• 영어 문법
“문장은 명사절(noun phrase)과 술부
(predicate)로 구성”
34/44
문법(2/3)
• A boy runs
– <sentence> -> <noun_phrase><predicate>
– <noun_phrase> -> <article><noun>
– <predicate> -> <verb>
• Pascal identifier
– <id> -> <letter><rest>
– <rest> -> <letter><rest> | <digit><rest> |
– <letter> -> a|b|…| <digit> -> 0|1|…9
35/44
문법(3/3)
• 문법 G 는 다음의 항으로 정의된다
G = (V, T, S, P)
– V 는 변수라 불리는 유한 집합의 객체 variables
– T 는 단말심볼이라 불리는 유한 집합의 객체 terminal
symbols
– S 는 시작변수라 불리는 V의 특별한 원소 start variable
– P 는 생성규칙들의 유한 집합 productions
36/44
문법
• 문법의 핵심은 생성규칙들
x -> y
– x는 (V U T)+의 원소
– y는 (V U T)*의 원소
37/44
Example 1.11
• G = ( {S}, {a, b}, S, P)
• P : S -> aSb
S ->
• S => aSb => aaSbb => aabb
• L(G) = {a^n b^n : n > 0}
38/44
Example 1.12
• L = {a^n b^n+1 : n > 0}
• G = ({S, A}, {a, b}, S, P)
– S -> Ab,
– A -> aAb,
– A ->
• aabbb 유도과정
39/44
Automata
Input file
Storage
Control unit
Output
40/44
Automata
• 결정적 오토마타Deterministic automata
• 비결정적 오토마타Nondeterministic automata
• 인식기Accepter
• 변환기Transducer
41/44
응용(1/2)
• Pascal의 식별자 => 언어
– 영문자로 시작
– 뒤이어 임의의 개수의 영문자나 숫자의 문자열의
집합
• 식별자를 위한 문법
<id> -> <letter><rest>
<rest> -> <letter><rest>|<digit><rest>|
<letter> -> a|b|…|z
<digit> -> 0|1|…|9
42/44
응용(2/2)
• 식별자 a0를 유도하는 과정
<id> => <letter><rest>
=> a <rest>
=> a <digit><rest>
=> a 0 <rest>
=> a 0
43/44
과제물
• Pascal의 식별자를 인식하는 오토마타 작
성(인식기)
– 언어선택 : 자신이 가장 자신있는 프로그래
밍 언어
– 입력 : 식별자
– 처리 : 인식 가능한 식별자와 불가능한 식별
자 구분하는 오토마타
– 출력 : Accept OR Reject
– 제출방법 : 전자우편 [email protected]
44/44