440 likes | 798 Vues
계산이론개요. 목적. 컴퓨터 공학 분야에는 몇 가지 공통적인 기본 원리가 존재 기본 원리를 이해하기 위해서는 추상적 모델을 설정해야 한다 추상적 모델 => 하드웨어 및 소프트웨어에서 공통적으로 나타나는 특징들을 표현하기 위한 모델. 목적. 추상적 모델 => 오토마타 오토마타는 입력 , 출력 , 기억장소로 구성 형식언어 는 프로그래밍언어들의 일반적인 특성들을 추상화한 개념 형식언어는 심볼 들과 심볼들의 조합인 문장 을 구성하는 형식규칙들의 집합
E N D
목적 • 컴퓨터 공학 분야에는 몇 가지 공통적인 기본 원리가 존재 • 기본 원리를 이해하기 위해서는 추상적 모델을 설정해야 한다 • 추상적 모델=> 하드웨어 및 소프트웨어에서 공통적으로 나타나는 특징들을 표현하기 위한 모델
목적 • 추상적 모델 => 오토마타 • 오토마타는 입력, 출력, 기억장소로 구성 • 형식언어는 프로그래밍언어들의 일반적인 특성들을 추상화한 개념 • 형식언어는 심볼들과 심볼들의 조합인 문장을 구성하는 형식규칙들의 집합 • 형식언어는 이 형성규칙들에 의해 생성되는 모든 문자열들의 집합
한국어 우리는 경일대인이다. 경일대인은 나다.
목적 • 개념탐구 방법 • 직관적인 방법 • 수학적인 방법 • 집합론 • 함수 • 관계 • 트리 • 그래프
수학적 개요 • 집합 • 함수 • 관계 • 그래프 • 트리 • 증명기법
집합 • 추상화 모델 입력 Storage Control unit 출력
집합(1/5) • 집합(set) : 원소들의 모임 • 집합의 표현법 • S = {0, 1, 2} • S = {a, b, …, z} : 의미가 명확할때 생략기호 • S = {x : x > 0, x 는 짝수이다 }
집합(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 }
집합(3/5) • 여집합complementation • S = {x : x U, x S} • DeMorgan’s laws • S1 U S2 = S1 S2 • S1 S2 = S1 U S2 • 부분집합subset S1 S • 진부분집합proper subset S1 S
집합(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} • 한집합의 원소들이 다른 여러 집합 원소들의 순서열인 경우
집합(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에 속하지 않음
0 0 q1 오토마타 1 0 q0 q2 1 1
F : S1 S2 함수(1/2) 함수란 한 집합의 원소들 각각에 대해 다른 집합의 유일한 원소로 배정하는 규칙 range domain S1 S2
range domain 함수(2/2) • 함수의 표현 • {(x1,y1),(x2,y2),…} • xi : 해당함수의 정의역의 원소 • yi : 해당함수의 치역의 대응값 • 각 xi가 이 집합 내에서 순서쌍의 첫 번째 위치에 최대 한번만 나타나야 한다. X Y
0 0 q1 오토마타 1 0 q0 q2 1 1
관계 • 함수의 조건을 만족하지 않는 경우를 관계라함. • 동치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
a b c d e f g 반사성Reflexivity
대칭성Symmetry c a b d e
전이성Transitivity a b c e d
그래프 (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
그래프(2/2) v1 v2 v3
트리(1/2) • 그래프의 한 종류이다. • 사이클을 갖지 않고, 루트라 불리는 특별한 하나의 정점을 가지는 유향 그래프 • 루트root : one distinct vertex • 리프들leaves • 부모parent • 자식child • 레벨level • 높이height
트리(2/2) Root Level 0 Height = 3 Leaf Level 3
증명기법(1/2) • Proof by induction(귀납법) • Example 1.5 • Example 1.6 • Example 1.7 • Proof by contradiction(귀류법)
증명기법(2/2) • Proof by induction • 몇 개의 특정 사례가 참이라는 사실들로부터 여러 문장들이 참임을 추론해 내는 기법 • 예) 참임을 증명하고자 하는 문장들의 순서열 P1,P2,… 이 있다고 하고 다음이 성립함을 가정 • 임의의 k(k>=1)에 대해 P1,P2,…,Pk는 참이다. • n>=k인 모든 n에 대해서 P1,P2,…,Pn이 참인 사실이 Pn+1이 참임을 의미하도록 하는 문제 귀납기저 귀납단계 귀납가정
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
세가지 기초 개념 • 언어Languages • 문법Grammars • 오토마타Automata
언어(1/3) • 알파벳 {a, b, c, d} • 하나 이상의 심볼들의 유한 집합 • 문자열 {ab, aabb, ccdd} • 알파벳에 속한 심볼들의 유한 길이의 순서열
언어(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|
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|
언어(3/3) • 스타폐포star-closure • L* = L0 U L1 U L2 … • 양성폐포positive-closure • L+ = L1 U L2 ...
문법(1/3) • 영어 문법 “문장은 명사절(noun phrase)과 술부(predicate)로 구성”
문법(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
문법(3/3) • 문법 G 는 다음의 항으로 정의된다 G = (V, T, S, P) • V 는 변수라 불리는 유한 집합의 객체 variables • T 는 단말심볼이라 불리는 유한 집합의 객체 terminal symbols • S 는 시작변수라 불리는 V의 특별한 원소 start variable • P 는 생성규칙들의 유한 집합 productions
문법 • 문법의 핵심은 생성규칙들 x -> y • x는 (V U T)+의 원소 • y는 (V U T)*의 원소
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}
Example 1.12 • L = {a^n b^n+1 : n > 0} • G = ({S, A}, {a, b}, S, P) • S -> Ab, • A -> aAb, • A -> • aabbb 유도과정
Input file Storage Control unit Output Automata
Automata • 결정적 오토마타Deterministic automata • 비결정적 오토마타Nondeterministic automata • 인식기Accepter • 변환기Transducer
응용(1/2) • Pascal의 식별자 => 언어 • 영문자로 시작 • 뒤이어 임의의 개수의 영문자나 숫자의 문자열의 집합 • 식별자를 위한 문법 <id> -> <letter><rest> <rest> -> <letter><rest>|<digit><rest>| <letter> -> a|b|…|z <digit> -> 0|1|…|9
응용(2/2) • 식별자 a0를 유도하는 과정 <id> => <letter><rest> => a <rest> => a <digit><rest> => a 0 <rest> => a 0
과제물 • Pascal의 식별자를 인식하는 오토마타 작성(인식기) • 언어선택 : 자신이 가장 자신있는 프로그래밍 언어 • 입력 : 식별자 • 처리 : 인식 가능한 식별자와 불가능한 식별자 구분하는 오토마타 • 출력 : Accept OR Reject • 제출방법 : 전자우편 kim@kiu.ac.kr