소프트웨어 공학용 수학
경우의 수
단점이없어지고싶은개발자
2022. 12. 11. 23:28
반응형
조합론과 경우의 수
조합론(Combinatorics) - 프로그래밍에서 많이 쓰임
- 물건들을 여러 가지 형태로 그룹 짓는 방법을 연구하는 학문
- 예) 16비트 숫자로 표현 가능한 갯수, 알고리즘 복잡도 계산
경우의 수
- 어떤 시도(trail)를 통해 일어날 수 있는 사건(events)의 가짓 수
- 경우의 수 세기 : 몇 개인지 세는 기법
- 대표적인 두 가지 방법 - 곱의 법칙, 합의 법칙
- 곱의 법칙
- 다음과 같은 절차가 있다고 가정해보자.
- 이 절차는 2개의 일(tasks)로 나눠 수행할 수 있다.
- 첫 번째 일을 할 수 있는 방법은 n₁개
- 두 번째 일을 할 수 있는 방법은 n₂개
- 두 번째 일은 첫 번째 일이 끝나야 할 수 있다.
- 총 가짓 수는 n₁ x n₂
- 일의 수가 늘어나도 동일하다 n₁ x n₂ x n₃ x ...
- 다중 for문이 이런 예시
- 합의 법칙
- 첫 번째 일을 할 수 있는 방법은 n1개
- 두 번째 일을 할 수 있는 방법은 n2개
- 두 번째 일은 첫 번째 일은 연결해서 일어날 수 없음, 즉 첫 번째 일 아니면 두 번째 일만 일어남
- 가짓 수는 n1 + n2개
- for문 여러개
- 곱의 법칙
포함 - 배제 원리
- 일 1과 일 2의 경우의 수를 셀 때 중복되는 부분이 있다면 합의 규칙을 그대로 사용할 수 없다.
- 이럴 경우 일 1과 일 2의 경우의 수를 더한 뒤 중복된 만큼 수를 빼야 함.
- 트리를 이용 해서 풀어 줄 수 있다.
순열과 조합
- 둘 다 n개의 물체 중에 r개를 뽑을 때 경우의 수를 의미한다.
- 유일한 차이는 순서를 따지는 순열 / 안 따지는 조합으로 나뉜다.
- 순열과 조합 모두 중복 봅기를 허용하는 경우도 있다.
순열(permutation) : 순서를 따짐
- 프로그래밍의 배열과 같음
- 123 과 132는 다르다.
- 만약 빨간 펜 4개와 노랑 펜 2개가 있는데, 펜을 무작위로 뽑는 순서를 찾아야 한다면
- 처음에는 6개 중 1개를 뽑는다 / 6
- 두번째는 5개 중 1개를 뽑는다 / 5
- 즉 6 * 5 => 30개 => factorial 6! 이 된다.
- 아래와 같은 공식이 된다.
중복 순열
- 예를 들어 8자리 패스워드에 각 자리에 올 수 있는 알파벳 대소문자의 문제를 구한다면?
- n의 r제곱이다.
- 알파벳 대소문자 52개. 패스워드는 총 8개 => 52⁸
조합(combination) : 순서를 안 따짐
- 수학에서 집합과 같음
- 123 과 132는 같다.
- 똑같이 빨간펜 4개, 노랑펜 2개에서 중복된 것을 제거해야 한다.
- 순서가 없다는 것은 집합을 의미하기 때문에 펜 2개를 나열 할 수 있는 경우의 수는 2!
- 즉, r개를 선택 했다면 p(r, r)로 나눈다.
- 아래와 같은 공식이 된다.
- 즉, 순열은 간단히 곱해 나가는게 빠르고, 조합은 보통 공식을 사용하는게 더 빠르다.
[수학] 순열, 조합 공식 총정리
팩토리얼 ( ! ) 팩토리얼이란 서로 다른 n개를 나열하는 경우의 수를 의미합니다. 기호로는 n! 이렇게 쓰고 계산은 n부터 1씩 줄여나가면서 1이 될때까지의 모든 수를 곱합니다. 순열 ( nPr ) 순열이
coding-factory.tistory.com
반응형