순열, 조합, 중복순열, 중복조합을 파이썬 라이브러리인 itertools을 이용해 쉽게 구현하여 계산할 수 있습니다.
TABLE OF CONTENTS
순열 (Permutations)
서로 다른 n개에서 r개를 중복 없이 뽑아 특정한 순서로 나열하는 것
중복을 허용하지 않으며, 순서가 의미가 있을 때 사용합니다.
이때, n = r이면,
n != r이면,
순열의 파이썬 구현
permutions(순열을 구할 객체(리스트 등으로 표현 가능), 뽑아서 순서를 정할 개수)
위의 예시는, 3개의 대상 중 서로 다른 2개의 대상을 뽑아 순서를 정할 때의 경우의 수를 구하는 예시입니다.
조합 (Combinations)
서로 다른 n개에서 r개를 중복 없이 뽑는 것 (순서를 고려하지 않고)
중복을 허용하지 않으며, 순서가 의미가 없을 때 사용합니다.
이때,
조합의 파이썬 구현
combinations(조합을 구할 객체(리스트 등으로 표현 가능), 뽑을 개수)
위의 예시는, 3개의 대상 중 서로 다른 2개의 대상을 뽑을 때의 경우의 수를 구하는 예시입니다.
중복 순열 (product)
서로 다른 n개에서 r개를 중복을 포함해 뽑아 특정한 순서로 나열하는 것
중복을 허용하며, 순서가 의미가 있을 때 사용합니다.
이때,
중복 순열의 파이썬 구현
product(중복 순열을 구할 객체(리스트 등으로 표현 가능), repeat = 뽑아서 순서를 정할 개수)
위의 예시는, 3개의 대상 중 중복을 포함해 2개의 대상을 뽑아 순서를 정할 때의 경우의 수를 구하는 예시입니다.
중복 순열에서 사용하는 인자 표현방법 ‘repeat = int’?
중복 순열을 계산하는 product 함수에서 ‘repeat = int’ 형태의 인자를 사용하는 이유는 해당 함수의 특성을 보다 명확하게 표현하기 위해서 입니다. 이를 통해 코드의 의도를 분명히 하고, 순열, 조합, 중복 조합 등의 다른 함수들과의 차이를 명확히 할 수 있습니다.
순열, 조합, 중복 조합은 반복 횟수가 아닌 얻고자 하는 순열의 조합의 길이만 인자로 받으면 됩니다.
반면에, 중복 순열을 계산하는 product 함수는 Cartesian Product (카테시안 곱, 모든 가능한 조합을 출력하는 연산)을 사용합니다. 이때, 인자를 표현할 때 ‘repeat = int’을 사용함으로써 해당 함수가 Cartesian Product을 int 수만큼 반복(repeat)하여 조합하는 과정을 거친다는 것을 보다 명확하게 표현할 수 있습니다.
이러한 구분을 위해, 중복 순열을 계산하는 product 함수에는 ‘repeat = int’ 형태로 해당 인수를 받아줍니다.
중복 조합 (combinations with replacement)
서로 다른 n개에서 r개를 중복을 포함해 뽑는 것 (순서를 고려하지 않고)
중복을 허용하며, 순서가 의미가 없을 때 사용합니다.
이때,
중복 조합의 파이썬 구현
combinations_with_replacement(중복 조합을 구할 객체(리스트 등으로 표현 가능), 뽑을 개수)
위의 예시는, 3개의 대상 중 중복을 포함해 2개의 순서를 정할 때의 경우의 수를 구하는 예시입니다.
각각을 이용해, 파이썬에서 순열, 조합, 중복 순열, 중복 조합을 손쉽게 구할 수 있습니다.
해당 각각의 함수에 대한 구현 코드와 실제 활용 예/딥러닝 예는 별도의 포스팅으로 추가로 공유하겠습니다.