SlideShare uma empresa Scribd logo
1 de 38
3 집합, 조합 및 확률 2010-03-13 김명관
3.1 집합 3.2 계산 3.3 내포와 외포의 원칙 : 비둘기집 원리
3.1 집합 정의 객체들의 모임 한 집합 내의 모든 객체들은 공통된 속성을 공유 그 속성을 갖는 객체는 그 집합의 맴버 그 속성을 갖지 않는 객체는 맴버에서 제외 표기법 집합 : 대문자 원소 :소문자 임의의 원소가 어떤 집합의 맴버: ∈ 집합 : {}
집합을 설명하기 위한 방법 원소나열법 집합 S는 {2, 4, 6, …} 원소들이 생성되는 방법을 재귀적으로 설명 2 ∈ S 만약 n∈S이라면 (n+2)∈S 집합 원소들의 특징을 표현하는 속성 P를 설명 S = {x|x는 양의 짝수인 정수}
조건제시법 {x|P(x)}  속성 P를 갖는 특징적인 원소들로 구성된 임의의 집합 속성 P 일항술어(unary predicate) 술어 변수가 가질 수 있는 성질 S = {x|P(x)} (∀x)[(x∈S->P(x)) ∧ (P(x)->x∈S)] 집합 S의 모든 원소는 속성 P를 가지며,  속성 P를 갖는 모든 원소는 집합 S의 원소이다.
STL에서 술어(조건자, predicate) list::remove_if template <typenameT> structEven : public std::unary_function<T, bool> { bool operator() (T& val) const { 		return (val%2 == 0); } }; int_tmain(){ 	std::list<int> numbers; for(inti=0; i<10; ++i){ numbers.push_back(i); } // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 numbers.remove_if(Even<int>()); // 1, 3, 5, 7, 9 return 0; } template<class Predicate>  void remove_if(    Predicate _Pred )
특정표준 집합 = 모든 음이 아닌 정수들의 집합 = 모든 정수들의 집합 = 모든 유리수들의 집합 = 모든 실수들의 집합 = 모든 복소수들의 집합
부분집합(subset) 부분집합 A = {2, 3, 5, 12} B = {2, 3, 4, 5, 9, 12} 집합 A의 모든 원소는 집합 B의 원소  A⊆B 집합A가 집합 B의 부분 집합 (∀x)(x∈A->x∈B) A⊂B 진부분집합 A⊆B 이지만 A≠B
상속 ,[object Object],집합A의 모든 원소는 또한 집합B의 원소 P는 집합B의 모든 원소의 속성이므로 집합 A의 모든 원소들 역시 속성 P를갖는다. 집합A의 원소들을 속성P를 상속 받는다. 자식형은 부모형으로부터 모든 속성과 연산을 상속받는다. 필요하다면 자신만의 지역적인 속성들과 연산을 추가 예제4 B = {x|x는 4의 배수} A = {x|x는 8의 배수}
상속 - 클래스들 사이의 올바른 관계를 파악하는 것은 어렵다. - 우리는 객체지향 설계 원리를 이용해서 상속 구조에 숨겨진 문제점을 찾을 수 있다. 리스코프 치환 원리 자식 타입들은 부모 타입들이 사용되는 곳에 대체될 수 있어야 한다. - 그러나 쉽지 않을 때가 종종 있다. - 집합과 부분집합의 관점에서 살펴보면 어떨까?
멱집합(powerset) 임의의 집합 S에 대해 S의 부분집합들 모두를자신의 원소로 갖는 집합 S = {0, 1} P(S) = {Ø, {0}, {1}, {0, 1}} 특징 원소들 자체가 집합 P(S)는적어도 Ø과 S를 항상 원소로 가짐 n개의 원소를갖는 집합 S의 멱집합은 2n개의 원소를 가짐
이항 연산 순서쌍 (ordered pair) (x, y)로 표현 집합과 다르게 순서에 의미가 있다. 순서쌍 (1, 2)와 (2, 1)은 동일하지 않다. 이항 연산의 정의 만약 임의의 집합 S의 원소들의 모든 순서쌍 (x, y)에 대해서x∙y가 유일하게 존재하고, 또한 그것이 집합 S의 원소 중의 하나 라면 ∙는 S상에서 이항연산(binary operation)이다. 이항연산은 함수의 부분집합 함수 f는 다음과 같은 조건을 만족하는 관계(relation)이다. 1. X의 모든 원소 x에 대해 x f y(x와 y는 f 관계를 갖는다.)인 원소 y가 Y에 반드시 존재한다.  2. f(x) = y이고 f(x) = z이면, y = z이다.
일항연산 잘 정의되어 있다. 값 x∙y가항상 존재하며 유일하다. 집합 S가 연산∙에 대해닫혀 있다. x∙y가 항상 집합 S에 속한다. 정의 임의의 x∈S에 대해, x#이 잘 정의되어 있고, 집합 S가 #에 대해 닫혀 있어야 한다. x#이 유일하게 존재하며, 집합 S의 원소들 중 하나.
O/X 퀴즈 나눗셈은 모든 정수에서 이항연산이다. 뺄셈은 자연수상에서 이항연산이다. 논리곱, 논리합은 명제 정형식의 집합상에서 이항연산이다. x∙y = x/y; S = 모든양의 정수들의 집합 x∙y = x/y; S = 모든양의 유리수들의 집합 x∙y = x y; S = 모든양의 실수들의 집합 x y= √x; S = 모든 양의 실수들의 집합
집합 상에서의 연산 임의의 집합 S가 주어진 경우그 집합의 P(S)상에서의이항 연산과 일항 연산을 정의 할 수 있다. S는 전체집합(universal set) 연산되는 객체들의 범위로 정의 P(S)상에서의 이항 연산은 집합 S의 임의의 두 부분 집합들 간에 수행 결과로 S의 부분 집합 하나를 만든다.
예제 16 A = {1, 3, 5, 7, 9}, B = {3, 5, 6, 10, 11} 이라고 하자. 집합 A와 B를 P(N)의 원소라고 생각할 수 있다. A∪B = {1, 3, 5, 6, 7, 9, 10, 11} A∩B = {3, 5} 가 된다. 따라서 A∪B와 A∩B는 모두 P(N)의 원소
여집합과 차집합 여집합 (complement) 임의의 집합 A∈P(S)에 대해,집합 A의 여집합 A’은 {x|x∈S그리고 x   A} 차집합(set difference) A-B = {x|x∈A그리고 x   B} A-B = {x|x∈A그리고 x∈B’} 즉 A-B = A∩B’ 서로소(disjoint) A-BØ = Ø인 두 집합 A와 B를 서로소라 한다 / ∈ / ∈
카티션 곱 (Cartesian product) 정의 집합 A와 B가 집합 S의 부분집합이라고 하자. A X B = {(x, y)|x∈A그리고 y∈B} 첫 번째 요소가 집합 A의 원소이고두 번째 요소가 집합 B의 원소인모든 순서쌍들의 집합. 결과 집합은 S의 부분 집합이 아니다. 결과 집합은 P(S)의 원소가 아니다. 실습 17) A = {1, 2}, B = {3, 4}일 때 A X B = { (1,3), (1,4), (2,3), (2,4) }
집합 항등성 교환 성질 A ∪ B = B ∪ A A ∩ B = B ∩ A 결합 성질 (A ∪ B) ∪ C = A ∪ (B ∪ C) (A ∩ B) ∩ C = A ∩ (B ∩ C) 배분 성질 A ∪ (B ∩ C) = (A ∪ B) ∩(A ∪ C) A ∩ (B ∪ C) = (A ∩ B) ∪(A ∩ C) 항등 성질 A ∪ Ø = A A ∩ S = A 상보 성질 A ∪ A’ = S A ∩ A’ = Ø
Redefinable Binary Operators  (c++)
Redefinable Unary Operators (c++)
해운대의 남과 여 만약 해운대 모래밭에 사람들이 가득 찼다고 하자.그때 남자와 여자의 수가 어느 쪽이 많은지 보려면 어떻게 할까?
해법 한 쪽을 세어보고 다른 쪽을 세어 그 결과를 견줄 수 있을 수 있겠지만 남자의 집합과 여자의 집합을 구성하는 원소의 수가 많으면 많을수록 어려워진다. 남녀 한 사람씩 짝을 지어 보면 된다.남녀 한 사람씩 손을 잡게 하고 춤을 추게 한 다음 짝이 없어서 못 추는 사람이 있는 쪽이 더 많은 것이다. 한 사람씩 짝을 짓게 할 수 있는 것이 하나라도 있으면 그것으로 이 두 집단이 어느 쪽이 더 많은지 파악할 수 있다.
가산 및 불가산 집합 가산 집합(countable set) 원소를 모두 세거나 열거할 수 있는 집합 자연수의 집합으로의 단사 함수가 존재하는 집합.  무한가산 (denumerable) 무한집합 이면서 가산집합 같은 세기 어떤 집합 A 와 B 에 일대일 대응을 정할 수 있으면, 집합 A 와 집합 B 는 같은 세기를 가졌다고 한다. ,[object Object],[object Object]
피타고라스 수 찾기 주어진 두 수 Low와 High 사이에 있는 피타고라스 수를 찾아라. for(inti=low; i<=high; ++i) for(intj=i; j<=high; ++j) for(intk=j; k<high; ++k) if(IsPythagoreanTriple(i,j,k)) ... … Low High … High Low … High Low
SICP 연습문제 4.36 상한값을 두지 않고 피타고라스의 세 수를 뽑아내는 프로시저를 짜라. for(inti=1;  ; ++i) for(intj=i;  ; ++j)         for(intk=j;  ; ++k) if(IsPythagoreanTriple(i,j,k))                 ... … 1 2 3 4 5 6 7 ∞ … 2 3 4 1 ∞ … 1 2 3 4 ∞ 너비가 무한대인 나무
풀이 비결정적 계산을 이용한 Scheme 코드 (define (a-pythagorean-triple)     (let ((triple (a-triple-starting-from '(1 1 1))))       (let ((i (car triple))             (j (cadr triple))             (k (caddr triple)))         (require (= (+ (* ii) (* j j)) (* k k)))         (list i j k)))) (define (a-triple-starting-from triple)     (amb triple (a-triple-starting-from (next triple)))) (define (next triple)     (let ((i (car triple))           (j (cadr triple))           (k (caddr triple)))       (cond ((= i j k) (list 1 1 (+ k 1)))             ((= i j)   (list 1 (+ j 1) k))             (else      (list (+ i 1) j k))))) for(intk=1;   ;++k) 	for(intj=1; j<=k; ++j) for(inti=1; i<=j; ++i) if(IsPythagoreanTriple(i,j,k)) 				... for(inti=1;   ; ++i) for(intj=i;   ; ++j) for(intk=j;   ; ++k) if(IsPythagoreanTriple(i,j,k)) ...
Cantor의 대각선화 방법 실수의 집합이 불가산집합임을 증명 자연수 집합은 실수 집합과 세기가 같지 않다. 자연수의 집합은 무한 실수의 집합은 무한 하지만 자연수의 집합보다 실수의 집합이 크다. 증명과정
컴퓨터의 한계 유한 집합만을 관리할 수 있다. 제한 범위 정밀도
3.2 계산 조합론(combinatorics) 계산(counting)을 다루는 수학의 한 분야 어떤 시스템에서 유한 자원(finite resources)에 관심을 가질 때 효율성(efficiency)에 관심을 가질 때 임의의 유한 집합 내에 존재하는 원소들의 수를 구하는 문제
곱셈원리 한 아이가 각각 빨간색(R)과검정색(B)인두 개의 젤리과자 중 하나와 각각 노란색(Y), 초록색(G), 하얀색(W)인세 개의 포장지 중 하나를 선택한다면, 이 아이가 가질 수 있는 과자세트는 모두 몇 가지 인가? 젤리과자 선택 R B Y W Y W 포장지 선택 G G 곱셈원리 만일 첫 번째 사건에 대해서 n1가지의 경우의 수가 존재하고, 두 번째 사건에 대해서 n2가지의 경우의 수가 존재 한다면, 두 사건이 연속해서 일어날 경우 n1*n2가지의 경우의 수가 존재 한다. {R,Y} {R,G} {R,W} {B,Y} {B,G} {B,W}
덧셈원리 한 고객이 판매상으로부터 차 1대를 구입하려고 한다. 판매상은 자동차 23대와 트럭 14대를 소유하고 있다. 이 고객이 선택할 수 있는 경우의 수는 몇 가지 인가? 트럭을 선택하는 14가지 또는 자동차를 선택하는 23가지경우의 수는 23 + 14 = 37 덧셈원리 만일 집합 A와집합 B가 각각 n1, n2가지의 경우의 수를 갖는 서로 별개의 사건들 이라면,사건 “A 또는 B”에 대한 경우의 총 수는 n1+n2이다. 서로 별개인 사건들로 나누어질 수 있는 하나의 작업에 대한 경우의 수를 계산하고자 할 때 유용하다.
원리 함께 사용하기 IPv4 하나의 주소를 32비트로 표현 IP주소는 netid와 hostid로 구성 가능한 IP주소의 수는? (A netid의 수)(A hostid의 수) + (B netid의 수)(B hostid의 수) + (C netid의 수)(C hostid의 수) = 27224 + 214216 + 22128 = 3,758,096,384
내포와 외포의 원칙 두 집합 버전(two-set version) |A∪B| = |A| + |B| - |A∩B| 세 집합 버전(three-set version) |A∪B∪C| = |A| + |B| + |C|                - |A∩B| - |A∩C| - |B∩C|                + |A∩B∩C| n≥2 일때, 유한집합 A1, … , An이 주여졌다면, 다음의 식이 성립한다. S S A B A B C
비둘기집 원리 만일 k+1마리 이상의 비둘기들이k개의 비둘기집을 행해서 날아든다고 하면,그 중 적어도 하나의 비둘기집에는 둘 이상의 비둘기가 들어가 있게 된다. 컴퓨터과학에서도 비둘기집 원리의 예 해쉬 테이블에서 가능한 모든 키의 숫자는 테이블 인덱스의 개수보다 많으므로충돌은 불가피하다.따라서 어떤 해쉬 알고리즘도 충돌을 피할 수는 없다. 모든 파일을 임의의 크기 S 이하로 압축하는 비손실 압축 알고리즘은존재하지 않는다.S 이하의 크기를 갖는 파일의 개수는 정해져 있으므로,그런 알고리즘이 존재한다면동일한 파일로 압축되는 두 개의 서로 다른 파일이 반드시 존재할 것이므로두 파일을 다시 원래대로 복원하는 것이 불가능할 것이다.
정리 집합 집합의 표현 이항/일항 연산 집합의 연산 집합 항등성을 증명 특정 집합의 무한가산성 증명 Cantor의 대각화 방법 계산 곱셈원리 연속된 사건에 대한 경우의 수를 계산 할 때 사용 덧셈원리 서로 별개인 사건들에 대한 경우의 수를 계산 할 때 사용 내포와 외포의 원칙 어떤 집합의 합집합 내에 있는 원소의 수를 계산 비둘기집의 원리 중복 속성을 갖는 원소들이 존재하도록 하는 원소들의 최소수를 계산
- 끝 -
집합

Mais conteúdo relacionado

Semelhante a 집합

이산치수학 Project3
이산치수학 Project3이산치수학 Project3
이산치수학 Project3
KoChungWook
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
Yong Joon Moon
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
KyeongWon Koo
 
Taocp11.2.2
Taocp11.2.2Taocp11.2.2
Taocp11.2.2
duaa83
 
Taocp11.2.3
Taocp11.2.3Taocp11.2.3
Taocp11.2.3
duaa83
 
이산치수학 데이터베이스
이산치수학 데이터베이스이산치수학 데이터베이스
이산치수학 데이터베이스
mil23
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
홍준 김
 

Semelhante a 집합 (20)

파이썬 확률과 통계 기초 이해하기
파이썬 확률과 통계 기초 이해하기파이썬 확률과 통계 기초 이해하기
파이썬 확률과 통계 기초 이해하기
 
파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기파이썬 Numpy 선형대수 이해하기
파이썬 Numpy 선형대수 이해하기
 
07. PCA
07. PCA07. PCA
07. PCA
 
python 수학이해하기
python 수학이해하기python 수학이해하기
python 수학이해하기
 
프로젝트 보고서
프로젝트 보고서프로젝트 보고서
프로젝트 보고서
 
이산치수학 Project3
이산치수학 Project3이산치수학 Project3
이산치수학 Project3
 
확률 통계 (파이썬)
확률 통계 (파이썬)확률 통계 (파이썬)
확률 통계 (파이썬)
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 
선형연립방정식 가우스소거법
선형연립방정식 가우스소거법선형연립방정식 가우스소거법
선형연립방정식 가우스소거법
 
확률과 통계 1.확률이론
확률과 통계 1.확률이론확률과 통계 1.확률이론
확률과 통계 1.확률이론
 
Taocp11.2.2
Taocp11.2.2Taocp11.2.2
Taocp11.2.2
 
Taocp11.2.3
Taocp11.2.3Taocp11.2.3
Taocp11.2.3
 
이산치수학 데이터베이스
이산치수학 데이터베이스이산치수학 데이터베이스
이산치수학 데이터베이스
 
RUCK 2017 베이즈 모형의 꽃 - 계층 모형
RUCK 2017 베이즈 모형의 꽃 - 계층 모형RUCK 2017 베이즈 모형의 꽃 - 계층 모형
RUCK 2017 베이즈 모형의 꽃 - 계층 모형
 
Eigendecomposition and pca
Eigendecomposition and pcaEigendecomposition and pca
Eigendecomposition and pca
 
01.r 기초 확률분포
01.r 기초   확률분포01.r 기초   확률분포
01.r 기초 확률분포
 
Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1Start IoT with JavaScript - 4.객체1
Start IoT with JavaScript - 4.객체1
 
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
1.3장 차수 높은 프로시저(higher order procedure)로 요약하는 방법
 
Prime numbers, factorization
Prime numbers, factorizationPrime numbers, factorization
Prime numbers, factorization
 

집합

  • 1. 3 집합, 조합 및 확률 2010-03-13 김명관
  • 2. 3.1 집합 3.2 계산 3.3 내포와 외포의 원칙 : 비둘기집 원리
  • 3. 3.1 집합 정의 객체들의 모임 한 집합 내의 모든 객체들은 공통된 속성을 공유 그 속성을 갖는 객체는 그 집합의 맴버 그 속성을 갖지 않는 객체는 맴버에서 제외 표기법 집합 : 대문자 원소 :소문자 임의의 원소가 어떤 집합의 맴버: ∈ 집합 : {}
  • 4. 집합을 설명하기 위한 방법 원소나열법 집합 S는 {2, 4, 6, …} 원소들이 생성되는 방법을 재귀적으로 설명 2 ∈ S 만약 n∈S이라면 (n+2)∈S 집합 원소들의 특징을 표현하는 속성 P를 설명 S = {x|x는 양의 짝수인 정수}
  • 5. 조건제시법 {x|P(x)} 속성 P를 갖는 특징적인 원소들로 구성된 임의의 집합 속성 P 일항술어(unary predicate) 술어 변수가 가질 수 있는 성질 S = {x|P(x)} (∀x)[(x∈S->P(x)) ∧ (P(x)->x∈S)] 집합 S의 모든 원소는 속성 P를 가지며, 속성 P를 갖는 모든 원소는 집합 S의 원소이다.
  • 6. STL에서 술어(조건자, predicate) list::remove_if template <typenameT> structEven : public std::unary_function<T, bool> { bool operator() (T& val) const { return (val%2 == 0); } }; int_tmain(){ std::list<int> numbers; for(inti=0; i<10; ++i){ numbers.push_back(i); } // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 numbers.remove_if(Even<int>()); // 1, 3, 5, 7, 9 return 0; } template<class Predicate>  void remove_if( Predicate _Pred )
  • 7. 특정표준 집합 = 모든 음이 아닌 정수들의 집합 = 모든 정수들의 집합 = 모든 유리수들의 집합 = 모든 실수들의 집합 = 모든 복소수들의 집합
  • 8. 부분집합(subset) 부분집합 A = {2, 3, 5, 12} B = {2, 3, 4, 5, 9, 12} 집합 A의 모든 원소는 집합 B의 원소 A⊆B 집합A가 집합 B의 부분 집합 (∀x)(x∈A->x∈B) A⊂B 진부분집합 A⊆B 이지만 A≠B
  • 9.
  • 10. 상속 - 클래스들 사이의 올바른 관계를 파악하는 것은 어렵다. - 우리는 객체지향 설계 원리를 이용해서 상속 구조에 숨겨진 문제점을 찾을 수 있다. 리스코프 치환 원리 자식 타입들은 부모 타입들이 사용되는 곳에 대체될 수 있어야 한다. - 그러나 쉽지 않을 때가 종종 있다. - 집합과 부분집합의 관점에서 살펴보면 어떨까?
  • 11. 멱집합(powerset) 임의의 집합 S에 대해 S의 부분집합들 모두를자신의 원소로 갖는 집합 S = {0, 1} P(S) = {Ø, {0}, {1}, {0, 1}} 특징 원소들 자체가 집합 P(S)는적어도 Ø과 S를 항상 원소로 가짐 n개의 원소를갖는 집합 S의 멱집합은 2n개의 원소를 가짐
  • 12. 이항 연산 순서쌍 (ordered pair) (x, y)로 표현 집합과 다르게 순서에 의미가 있다. 순서쌍 (1, 2)와 (2, 1)은 동일하지 않다. 이항 연산의 정의 만약 임의의 집합 S의 원소들의 모든 순서쌍 (x, y)에 대해서x∙y가 유일하게 존재하고, 또한 그것이 집합 S의 원소 중의 하나 라면 ∙는 S상에서 이항연산(binary operation)이다. 이항연산은 함수의 부분집합 함수 f는 다음과 같은 조건을 만족하는 관계(relation)이다. 1. X의 모든 원소 x에 대해 x f y(x와 y는 f 관계를 갖는다.)인 원소 y가 Y에 반드시 존재한다. 2. f(x) = y이고 f(x) = z이면, y = z이다.
  • 13. 일항연산 잘 정의되어 있다. 값 x∙y가항상 존재하며 유일하다. 집합 S가 연산∙에 대해닫혀 있다. x∙y가 항상 집합 S에 속한다. 정의 임의의 x∈S에 대해, x#이 잘 정의되어 있고, 집합 S가 #에 대해 닫혀 있어야 한다. x#이 유일하게 존재하며, 집합 S의 원소들 중 하나.
  • 14. O/X 퀴즈 나눗셈은 모든 정수에서 이항연산이다. 뺄셈은 자연수상에서 이항연산이다. 논리곱, 논리합은 명제 정형식의 집합상에서 이항연산이다. x∙y = x/y; S = 모든양의 정수들의 집합 x∙y = x/y; S = 모든양의 유리수들의 집합 x∙y = x y; S = 모든양의 실수들의 집합 x y= √x; S = 모든 양의 실수들의 집합
  • 15. 집합 상에서의 연산 임의의 집합 S가 주어진 경우그 집합의 P(S)상에서의이항 연산과 일항 연산을 정의 할 수 있다. S는 전체집합(universal set) 연산되는 객체들의 범위로 정의 P(S)상에서의 이항 연산은 집합 S의 임의의 두 부분 집합들 간에 수행 결과로 S의 부분 집합 하나를 만든다.
  • 16. 예제 16 A = {1, 3, 5, 7, 9}, B = {3, 5, 6, 10, 11} 이라고 하자. 집합 A와 B를 P(N)의 원소라고 생각할 수 있다. A∪B = {1, 3, 5, 6, 7, 9, 10, 11} A∩B = {3, 5} 가 된다. 따라서 A∪B와 A∩B는 모두 P(N)의 원소
  • 17. 여집합과 차집합 여집합 (complement) 임의의 집합 A∈P(S)에 대해,집합 A의 여집합 A’은 {x|x∈S그리고 x A} 차집합(set difference) A-B = {x|x∈A그리고 x B} A-B = {x|x∈A그리고 x∈B’} 즉 A-B = A∩B’ 서로소(disjoint) A-BØ = Ø인 두 집합 A와 B를 서로소라 한다 / ∈ / ∈
  • 18. 카티션 곱 (Cartesian product) 정의 집합 A와 B가 집합 S의 부분집합이라고 하자. A X B = {(x, y)|x∈A그리고 y∈B} 첫 번째 요소가 집합 A의 원소이고두 번째 요소가 집합 B의 원소인모든 순서쌍들의 집합. 결과 집합은 S의 부분 집합이 아니다. 결과 집합은 P(S)의 원소가 아니다. 실습 17) A = {1, 2}, B = {3, 4}일 때 A X B = { (1,3), (1,4), (2,3), (2,4) }
  • 19. 집합 항등성 교환 성질 A ∪ B = B ∪ A A ∩ B = B ∩ A 결합 성질 (A ∪ B) ∪ C = A ∪ (B ∪ C) (A ∩ B) ∩ C = A ∩ (B ∩ C) 배분 성질 A ∪ (B ∩ C) = (A ∪ B) ∩(A ∪ C) A ∩ (B ∪ C) = (A ∩ B) ∪(A ∩ C) 항등 성질 A ∪ Ø = A A ∩ S = A 상보 성질 A ∪ A’ = S A ∩ A’ = Ø
  • 22. 해운대의 남과 여 만약 해운대 모래밭에 사람들이 가득 찼다고 하자.그때 남자와 여자의 수가 어느 쪽이 많은지 보려면 어떻게 할까?
  • 23. 해법 한 쪽을 세어보고 다른 쪽을 세어 그 결과를 견줄 수 있을 수 있겠지만 남자의 집합과 여자의 집합을 구성하는 원소의 수가 많으면 많을수록 어려워진다. 남녀 한 사람씩 짝을 지어 보면 된다.남녀 한 사람씩 손을 잡게 하고 춤을 추게 한 다음 짝이 없어서 못 추는 사람이 있는 쪽이 더 많은 것이다. 한 사람씩 짝을 짓게 할 수 있는 것이 하나라도 있으면 그것으로 이 두 집단이 어느 쪽이 더 많은지 파악할 수 있다.
  • 24.
  • 25. 피타고라스 수 찾기 주어진 두 수 Low와 High 사이에 있는 피타고라스 수를 찾아라. for(inti=low; i<=high; ++i) for(intj=i; j<=high; ++j) for(intk=j; k<high; ++k) if(IsPythagoreanTriple(i,j,k)) ... … Low High … High Low … High Low
  • 26. SICP 연습문제 4.36 상한값을 두지 않고 피타고라스의 세 수를 뽑아내는 프로시저를 짜라. for(inti=1; ; ++i) for(intj=i; ; ++j) for(intk=j; ; ++k) if(IsPythagoreanTriple(i,j,k)) ... … 1 2 3 4 5 6 7 ∞ … 2 3 4 1 ∞ … 1 2 3 4 ∞ 너비가 무한대인 나무
  • 27. 풀이 비결정적 계산을 이용한 Scheme 코드 (define (a-pythagorean-triple) (let ((triple (a-triple-starting-from '(1 1 1)))) (let ((i (car triple)) (j (cadr triple)) (k (caddr triple))) (require (= (+ (* ii) (* j j)) (* k k))) (list i j k)))) (define (a-triple-starting-from triple) (amb triple (a-triple-starting-from (next triple)))) (define (next triple) (let ((i (car triple)) (j (cadr triple)) (k (caddr triple))) (cond ((= i j k) (list 1 1 (+ k 1))) ((= i j) (list 1 (+ j 1) k)) (else (list (+ i 1) j k))))) for(intk=1; ;++k) for(intj=1; j<=k; ++j) for(inti=1; i<=j; ++i) if(IsPythagoreanTriple(i,j,k)) ... for(inti=1; ; ++i) for(intj=i; ; ++j) for(intk=j; ; ++k) if(IsPythagoreanTriple(i,j,k)) ...
  • 28. Cantor의 대각선화 방법 실수의 집합이 불가산집합임을 증명 자연수 집합은 실수 집합과 세기가 같지 않다. 자연수의 집합은 무한 실수의 집합은 무한 하지만 자연수의 집합보다 실수의 집합이 크다. 증명과정
  • 29. 컴퓨터의 한계 유한 집합만을 관리할 수 있다. 제한 범위 정밀도
  • 30. 3.2 계산 조합론(combinatorics) 계산(counting)을 다루는 수학의 한 분야 어떤 시스템에서 유한 자원(finite resources)에 관심을 가질 때 효율성(efficiency)에 관심을 가질 때 임의의 유한 집합 내에 존재하는 원소들의 수를 구하는 문제
  • 31. 곱셈원리 한 아이가 각각 빨간색(R)과검정색(B)인두 개의 젤리과자 중 하나와 각각 노란색(Y), 초록색(G), 하얀색(W)인세 개의 포장지 중 하나를 선택한다면, 이 아이가 가질 수 있는 과자세트는 모두 몇 가지 인가? 젤리과자 선택 R B Y W Y W 포장지 선택 G G 곱셈원리 만일 첫 번째 사건에 대해서 n1가지의 경우의 수가 존재하고, 두 번째 사건에 대해서 n2가지의 경우의 수가 존재 한다면, 두 사건이 연속해서 일어날 경우 n1*n2가지의 경우의 수가 존재 한다. {R,Y} {R,G} {R,W} {B,Y} {B,G} {B,W}
  • 32. 덧셈원리 한 고객이 판매상으로부터 차 1대를 구입하려고 한다. 판매상은 자동차 23대와 트럭 14대를 소유하고 있다. 이 고객이 선택할 수 있는 경우의 수는 몇 가지 인가? 트럭을 선택하는 14가지 또는 자동차를 선택하는 23가지경우의 수는 23 + 14 = 37 덧셈원리 만일 집합 A와집합 B가 각각 n1, n2가지의 경우의 수를 갖는 서로 별개의 사건들 이라면,사건 “A 또는 B”에 대한 경우의 총 수는 n1+n2이다. 서로 별개인 사건들로 나누어질 수 있는 하나의 작업에 대한 경우의 수를 계산하고자 할 때 유용하다.
  • 33. 원리 함께 사용하기 IPv4 하나의 주소를 32비트로 표현 IP주소는 netid와 hostid로 구성 가능한 IP주소의 수는? (A netid의 수)(A hostid의 수) + (B netid의 수)(B hostid의 수) + (C netid의 수)(C hostid의 수) = 27224 + 214216 + 22128 = 3,758,096,384
  • 34. 내포와 외포의 원칙 두 집합 버전(two-set version) |A∪B| = |A| + |B| - |A∩B| 세 집합 버전(three-set version) |A∪B∪C| = |A| + |B| + |C| - |A∩B| - |A∩C| - |B∩C| + |A∩B∩C| n≥2 일때, 유한집합 A1, … , An이 주여졌다면, 다음의 식이 성립한다. S S A B A B C
  • 35. 비둘기집 원리 만일 k+1마리 이상의 비둘기들이k개의 비둘기집을 행해서 날아든다고 하면,그 중 적어도 하나의 비둘기집에는 둘 이상의 비둘기가 들어가 있게 된다. 컴퓨터과학에서도 비둘기집 원리의 예 해쉬 테이블에서 가능한 모든 키의 숫자는 테이블 인덱스의 개수보다 많으므로충돌은 불가피하다.따라서 어떤 해쉬 알고리즘도 충돌을 피할 수는 없다. 모든 파일을 임의의 크기 S 이하로 압축하는 비손실 압축 알고리즘은존재하지 않는다.S 이하의 크기를 갖는 파일의 개수는 정해져 있으므로,그런 알고리즘이 존재한다면동일한 파일로 압축되는 두 개의 서로 다른 파일이 반드시 존재할 것이므로두 파일을 다시 원래대로 복원하는 것이 불가능할 것이다.
  • 36. 정리 집합 집합의 표현 이항/일항 연산 집합의 연산 집합 항등성을 증명 특정 집합의 무한가산성 증명 Cantor의 대각화 방법 계산 곱셈원리 연속된 사건에 대한 경우의 수를 계산 할 때 사용 덧셈원리 서로 별개인 사건들에 대한 경우의 수를 계산 할 때 사용 내포와 외포의 원칙 어떤 집합의 합집합 내에 있는 원소의 수를 계산 비둘기집의 원리 중복 속성을 갖는 원소들이 존재하도록 하는 원소들의 최소수를 계산