조합에서 모든 경우의 수를 생성하는 체계적인 방법 중 하나는 조합 트리를 구성 하는 것이며 조합 트리를 구성하는 시간 복잡도는 O()이다. 조합 트리는 그래프 동형 문제나 빈발 항목집합을 계산하는 초기 모델 등 다양한 목적으로 활용된다. 그러나 조합의 모든 경우의 수를 탐색해야 하는 알고리즘은 높은 시간 복잡도로 인해 현실적으로 활용되기 어렵다. 그럼에도 불구하고 데이터의 양이 방대해지고 이를 활용하기 위한 다양한 연구가 진행되면서 모든 경우의 수를 탐색해야만 하는 경우가 늘고 있다. 최근 GPU환경이 보급되고 쉽게 접할 수 있게 되면서 직렬 환경에서 높은 시간 복잡도를 가지는 알고리즘들을 병렬화 하여 시간을 줄이려는 다양한 시도가 이루어지고 있다. 조합에서 모든 경우의 수를 생성하는 방법은 순차적으로 진행되고 하부 작업의 크기가 편향되기 때문에 병렬 구현에 적합하지 않다. 병렬 알고리즘의 성능은 모든 스레드가 비슷한 크기의 작업을 가질 때 극대화될 수 있다. 본 논문에서는 모든 경우의 수를 구하는 문제를 병렬화하기 위하여 CPU와 GPU가 효율적으로 협업하기 위한 방법을 제안한다. 제안한 알고리즘의 성능을 검증하기 위하여 이론적인 측면에서 시간 복잡도를 분석하고, CPU와 GPU환경에서 다른 알고리즘과 본 연구에서 제안한 알고리즘의 실험 시간을 비교한다. 실험 결과 본 연구에서 제안한 CPU와 GPU의 협업 알고리즘은 이전 알고리즘에 비하여 CPU의 수행시간과 GPU의 수행시간의 균형을 유지하였고 아이템의 개수가 커질수록 괄목할 만한 시간 개선을 보였다.
본 연구에서는 모든 경우의 수를 구하는 문제를 병렬화하기 위하여 CPU와 GPU가 효율적으로 협업하기 위한 방법을 제시하였다. 제안한 알고리즘의 성능을 검증하기 위해 이론적인 측면에서 시간 복잡도를 분석하였고, CPU와 GPU환경에서 다른 알고리즘과 이 연구에서 제안한 알고리즘의 실험 시간을 비교하였다.