본문 바로가기
프로그래밍/AI

통계학(1) 순열과 조합

by slowin 2024. 12. 2.

강의일자: 24.11.28

강사님: 오영석 강사님

순열과 조합: 개념, 공식, 코드 구현

순열(Permutation)

정의

순열은 서로 다른 n개 원소 중 r개를 선택하고 순서를 고려해 나열하는 경우의 수를 말합니다.
순열에서는 순서가 중요하므로, 순서가 다르면 다른 순열로 간주합니다.

수학적 표현

  1. 전체 순열: $$n!$$
  2. 부분 순열: $$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개를 선택

  1. 순열
    • {AB, AC, BA, BC, CA, CB}
  2. 조합
    • {AB, AC, BC}

정리

  • 순열: 순서를 고려해 배열합니다.
  • 조합: 순서를 고려하지 않고 선택합니다. (중복 제거)

마무리

순열과 조합의 정의와 차이점을 통해 각 개념의 활용 방식을 이해할 수 있었다.