강의일자: 24.11.28
강사님: 오영석 강사님
순열과 조합: 개념, 공식, 코드 구현
순열(Permutation)
정의
순열은 서로 다른 n개 원소 중 r개를 선택하고 순서를 고려해 나열하는 경우의 수를 말합니다.
순열에서는 순서가 중요하므로, 순서가 다르면 다른 순열로 간주합니다.
수학적 표현
- 전체 순열: $$n!$$
- 부분 순열: $$P(n,r) = \frac{n!}{(n−r)!}$$
예시
{A, B, C} 중 2개를 선택하는 경우:
$$P(3,2) = \frac{3!}{(3-2)!} = \frac{3 \cdot 2 \cdot 1}{1} = 6$$
결과: {AB, AC, BA, BC, CA, CB}
코드 구현 (Python)
itertools 모듈 사용
Python의 표준 라이브러리인 itertools를 활용하면 반복 작업을 간단하고 효율적으로 처리할 수 있습니다.
import itertools
a = ["A", "B", "C"]
permutation = itertools.permutations(a, 2)
result = list(permutation)
print(result)
출력
[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
조합(Combination)
정의
조합은 서로 다른 n개 원소 중 r개를 선택하는 경우의 수로, 순서를 고려하지 않습니다.
수학적 표현
$$C(n, r) = \frac{n!}{r! \cdot (n-r)!}$$
조합의 식은 순열에서 중복을 제거한 형태로, 다음과 같은 관계가 있습니다:
$$C(n, r) = \frac{P(n, r)}{r!}$$
예시
{A, B, C, D} 중 2개를 선택하는 경우:
$$C(4, 2) = \frac{4!}{2! \cdot (4-2)!} = \frac{4 \cdot 3}{2 \cdot 1} = 6$$
결과: {AB, AC, AD, BC, BD, CD}
코드 구현 (Python)
itertools 모듈 사용
import itertools
cards = [1, 2, 3, 4]
combination = itertools.combinations(cards, 2)
result = list(combination)
print(result)
출력
[(1, 2), (1, 3), (1, 4), (2, 3), (2, 4), (3, 4)]
순열과 조합 비교
예시: {A, B, C}에서 2개를 선택
- 순열
- {AB, AC, BA, BC, CA, CB}
- 조합
- {AB, AC, BC}
정리
- 순열: 순서를 고려해 배열합니다.
- 조합: 순서를 고려하지 않고 선택합니다. (중복 제거)
마무리
순열과 조합의 정의와 차이점을 통해 각 개념의 활용 방식을 이해할 수 있었다.
'프로그래밍 > AI' 카테고리의 다른 글
통계학(3) 통계적 확률 (1) | 2024.12.02 |
---|---|
통계학(2) 확률론(Probability Theory) (0) | 2024.12.02 |
유튜브 인기동영상 시각화 (0) | 2024.11.24 |
아나콘다란? (1) | 2024.11.22 |
서울시 범죄현황 통계자료 분석 및 시각화 (0) | 2024.11.19 |