ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 얼마나 복잡한 문제인가?
    2022 프로야구 일정 톺아보기 2022. 3. 31. 12:02

    경우의 수 확인하기

    모든 알고리즘 책의 첫번째 시작은 문제의 복잡도를 분석하는 것입니다. 즉 경우의 수를 따져보는 것이지요.

     

    현재 KBO 리그는 10개 팀으로 운영되고 있습니다. 그렇다면 한 경기에서 나올 수 있는 경우의 수는 어떻게 될까요?

    10개 팀에서 2개 팀을 고르는 경우의 수는 90개입니다. (10개에서 2개를 고르는 조합이 아닌 순열 의 개수입니다. 순서가 변경되면 홈/어웨이의 차이가 발생하게 됩니다.) 그러면 남은 8개 팀에서 2개 팀을 고르는 경우의 수는 56입니다.

     

    그렇다면 10개 팀에서 5개의 경기를 만드는 경우의 수는 3,628,800개가 됩니다. (10!입니다. 물론 Feasible한 것만 따져보면 경우의 수가 많이 줄어들겠지만, 일반적으로 알고리즘에서 문제의 복잡도를 따져볼 때는 처음부터 Feasible한 것까지 고려하지 않습니다.)

     

    일반적으로 동일한 팀과 3경기를 연속하여 게임을 하게 됩니다. 아래 그림을을 보시면 4월 2일은 개막전이므로 토,일에 동일한 팀과 연속하여 2개의 경기를 치루고, 그 다음주 화요일인 4월 5일은 동일한 팀과 3개의 경기를 치룹니다. 이런 2게임, 3게임의 연속을 시리즈라 말하도록 하겠습니다.

     

    그렇다면 총 몇 개의 시리즈를 치루는 것일까요? 아래 그림을 확인해보면 2022년 KBO 일정은 총 54개의 시리즈로 구성된 것을 알 수 있습니다.

     

    2022년 시리즈 분석

    시작일 요일 연속 경기 주말 휴일 휴일 상세
    2022-04-02 2 1 0  
    2022-04-05 3 0 0  
    2022-04-08 3 1 0  
    2022-04-12 3 0 0  
    2022-04-15 3 1 0  
    2022-04-19 3 0 0  
    2022-04-22 3 1 0  
    2022-04-26 3 0 0  
    2022-04-29 3 1 0  
    2022-05-03 3 0 1 어린이날
    2022-05-06 3 1 0  
    2022-05-10 3 0 0  
    2022-05-13 3 1 0  
    2022-05-17 3 0 0  
    2022-05-20 3 1 0  
    2022-05-24 3 0 0  
    2022-05-27 3 1 0  
    2022-05-31 3 0 1 지방선거
    2022-06-03 3 1 0  
    2022-06-07 3 0 0  
    2022-06-10 3 1 0  
    2022-06-14 3 0 0  
    2022-06-17 3 1 0  
    2022-06-21 3 0 0  
    2022-06-24 3 1 0  
    2022-06-28 3 0 0  
    2022-07-01 3 1 0  
    2022-07-05 3 0 0  
    2022-07-08 3 1 0  
    2022-07-12 3 0 0  
    2022-07-22 3 1 0  
    2022-07-26 3 0 0  
    2022-07-29 3 1 0  
    2022-08-02 3 0 0  
    2022-08-05 3 1 0  
    2022-08-10 3 0 0  
    2022-08-13 2 1 0  
    2022-08-16 2 0 0  
    2022-08-18 2 0 0  
    2022-08-20 2 1 0  
    2022-08-23 2 0 0  
    2022-08-25 2 0 0  
    2022-08-27 2 1 0  
    2022-08-30 2 0 0  
    2022-09-01 2 0 0  
    2022-09-03 2 1 0  
    2022-09-06 2 0 0  
    2022-09-08 2 0 1 추석
    2022-09-10 2 1 1 추석
    2022-09-13 2 0 0  
    2022-09-15 2 0 0  
    2022-09-17 2 1 0  
    2022-09-20 2 0 0  
    2022-09-22 2 0 0  

    다만 2022년 프로야구 일정표를 확인하니 개막전과 어린이날은 고정이므로, 우리는 52개 시리즈에 대한 일정을 세워야 합니다. 이에 대한 경우의 수는 얼마나 될까요? 아까 한 경기의 경우의 수가 3,628,800개이므로 대략적으로 3628800^52 개가 됩니다.  어마어마하네요. (다시 말씀드리지만 그 모든 경우의 수가 feasible한 해가 아닙니다만 이를 걸러낸다면 그 경우의 수는 줄어들 것입니다. 그럼에도 불구하고 엄청난 숫자입니다.)

     

    이 문제를 빠른 시간 내로 풀 수 있는 어떤 알고리즘도 없습니다.

    모든 경우의 수를 다 시도해봐야 가장 좋은 해를 찾을 수 있습니다. 그러나 그러기에는 우리 인생은 너무나 짧습니다.

    • 이 문제를 Brute-force 방식(모든 경우의 수를 다 접근해 보는 것)으로 접근한다면 계획을 수립하다가 시즌이 끝나버릴 것입니다. (어떤 복잡한 TSP문제는 한 평생 풀어도 시간이 부족하다고 하지요.)
    • 혹 누가 자신있게 이것이 정답이라 말한더 하더라도 정답인지 확신할 수 없습니다. (어딘가 더 좋은 해가 있을지 누가 알까요?)
    • 이런 문제를 대표적인 NP-Hard 문제 로 추정되는 문제로 볼 수 있습니다. (이산적인 조합최적화 관점에서는 NP-Hard가 맞다고 생각합니다. Decision 관점이 아니니까... )
    • 보다 개념적인 정의를 원하신다면 아래 링크를 참조 부탁드립니다.

     

    우리는 타협이 필요합니다.

    • 현실적인 목표는 최적해일지 모르는 어떤 근사한 해를 찾는 것입니다.

     

    과연 KBO는 이 복잡한 문제를 어떻게 풀었을까요?

    • 문제의 복잡도를 파악하면서, 일정을 수립하는 KBO의 고충을 충분히 이해할 수 있었습니다.
    • 다음 글에서는 지금까지 많은 논란이 있었던 일정 편성 문제를 2022년에는 어떻게 풀었을지 확인해보도록 하겠습니다.
     

    '2022 프로야구 일정 톺아보기' 카테고리의 다른 글

    내가 만든 2022 KBO 일정  (0) 2022.03.31
    2022 KBO 일정을 세워보자(2)  (0) 2022.03.31
    2022 KBO 일정을 세워보자(1)  (0) 2022.03.31
    2022 KBO 일정 톺아보기  (0) 2022.03.31
    드디어 시작하다.  (0) 2022.03.31

    댓글

Designed by Tistory.