티스토리 뷰
이전포스트
순열과 조합
4명 학생중 3명의 학생을 뽑는 경우의 수는? --> 조합
순열
예제 1
정답
지금 우리가 살펴본 것이 고유한 개체들을 순서대로 나열하는 것에 대한 경우의 수를 본것입니다. 이게 바로 우리가 배울려고 하는 컨텐츠와 연관되어 있는데요
그게 바로 순열입니다. 순열은 고유한 원소들을 포함하고 있는 집합에서 이 원소들을 순서에 상관있게 나열하는 것입니다. 여기서 모든 원소들을 순서에 상관있게 나열하는 것 말고도 일부 원소들만 그렇게 나열하는 것도 있는데요.
둘 다 할거긴 합니다만, 우선 집합에서 r개의 원소들을 뽑아서 나열하는 것을 r-permutation r-순열 이라고 합니다.
예제 2 (문제아님)
Let S = {1, 2, 3}. S의 순열 중에는 3, 1, 2 가 있다. S의 2-permutation에는 2, 3 이 있다. 한 집합에서 r-순열을 표현할 때는 P(n, r) 이라고 할 수 있습니다. 이 때 n은 집합의 전체 원소개수이고, r은 뽑을 원소의 개수입니다.
예제 3 (문제아님)
정리 1
전체 원소의 개수가 n인 집합에서 r-순열의 수. P(n, r)
P(n, r)= n(n-1)(n-2)...(n-r+1), 여기서 1<= r <= n.
증명
참고로 1<=n일때 P(n,0)=1 입니다. 왜냐하면 집합에서 0개의 원소를 뽑아내는 방법은 단 한가지만 존재하기 때문입니다. 그러니까, 공집합인 리스트가 딱 한개 반드시 존재한다는 말입니다.
딸림정리 1
0<=r<=n 일때, P(n,r) = n!/(n-r)! 이다.
증명
예제7
글자 ABCDEFGH에서 ABC를 포함하는 순열은?
풀이
마치 ABC가 블록처럼 발생시켜야하니까. 글자수가 8개임에도 해당 글자 집합이 6개 원소로 이루어져있다고 취급하면된다. ABC, D, E, F, G, H 처럼말이다. 이 여섯개 원소들은 어떠한 순서로도 발생가능하니까 6!=720 개의 경우의 수가 나타난다.
조합
이제는 순서에 상관없는 경우의 수를 살펴봅시다. 그러니까 n개 중 r개를 뽑는데 순서는 상관없는 경우의 수예요.
예제 4
4명 학생들 중 3명을 뽑아서 청소담당 시키려고하는데, 경우의수가 몇 개 일까요?
답
정리 2
0<=r<=n 일 때, n 원소의 r-조합은 다음과 같다. C(n, r) = n!/r!(n-r)!
증명
또, 이 정리를 증명하기위해 경우의 수의 나눗셈 규칙을 이용할 수도 있는데, 조합에서의 원소 정렬은 필요가 없다. n 원소에서의 r-조합에서는 r을 정렬하는 경우의 수가 P(r, r)만큼이 있다. 각 C(n,r)개의 조합에는 정확하게 P(r,r) 만큼의 정렬이 필요없는 것이다. 나눗셈 규칙에 따라, C(n, r)= P(n,r)/P(r,r) 이며, 이건 결국 C(n,r)=n!/(r!*(n-r)!) 이다. 아래의 그림을 참조해보자.
그리고 C(n, r)= n!/r!(n-r)! 을 그대로 쓰는것보다, n!/r!(n-r)!= {n*(n-1)*(n-2)...(n-r+1)}/r! 을 쓰면 조금 더 효율적 일 수 있다.
예제 11
정답
딸림정리2
0<=r<=n 일 때, C(n, r) = C(n, n-r)이다.
증명
예제 14
n 길이의 비트 문자열에 정확하게 r개의 1을 가지고 있는 경우의 수는 몇인가?
정답
예제 15
수학과 9명과 컴퓨터과학과 11명이 있다. 수학과 3명과 컴퓨터과학과 4명을 뽑아서 청소를 시키려고한다. 경우의 수는?
정답
곱의 규칙에 따라, 정답은 C(9, 3)과 C(11, 4)의 곱일것이다. 따라서, 27720가지의 경우가 있다.
자 여기까지 기본적인 순열과 조합이였구요
다음 포스트에서는 본격적인 순열과 조합의 구현을 보겠습니다.
다음포스트
'Discrete mathmatics and Problem Solving > 6, 8 경우의 수와 그 응용(dp)' 카테고리의 다른 글
6 순열과 조합 : 조합의 구현 (0) | 2017.10.16 |
---|---|
6 순열과 조합의 구현 - 순열편 (0) | 2017.10.15 |
6 브루트포스 (0) | 2017.10.13 |
6 경우의 수 덧셈규칙 (0) | 2017.10.11 |
6 경우의 수 (곱셈 규칙) (0) | 2017.10.09 |
- Total
- Today
- Yesterday
- Propositional and Predicate Logic
- javascript
- paul wilton
- 시뮬레이션
- 백준
- 아레나
- 데이터 중심 애플리케이션 설계
- 로젠
- grafana cloud
- 이산 수학
- 가상 면접 사례로 배우는 대규모 시스템 설계 기초
- 대규모 시스템 설계 기초
- Arena
- 최단경로 알고리즘
- arena simulation
- 자바스크립트 예제
- 명제논리
- 이산수학
- 아레나 시뮬레이션
- rosen
- 엄청난 인내심과 시뮬레이션을 위한 아레나 툴
- Simulation
- 항해99
- 그라파나
- 아레나시뮬레이션
- Discrete Mathematics
- flutter
- beginning javascript
- 자바스크립트
- Grafana
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |