심플렉스 메소드의 사이클링
정의
행렬 과 와 에 대해 선형계획문제가 위와 같이 방정식 폼으로 나타난다고 하고, 에 대해 그 딕셔너리를 다음과 같이 나타내자.
어떤 에 대해 이면 이 딕셔너리가 타락했다degenerate라 하고, 이 때문에 심플렉스 메소드에 진전이 없는 현상을 사이클링cycling이라 한다1.
설명
타락…?
네이버에 검색해보면 Degenerate는 악화되다, 퇴폐적인, 타락한, 퇴보한, 퇴화한 등으로 번역된다. 당연하지만 이공계에서 가장 유명한 용례는 서로 다른 두 파동함수가 같은 고유값을 가질 때를 말하는 양자역학에서의 축퇴고, 선형대수학에서도 어떤 벡터가 다른 벡터들의 선형결합으로 나타날 때 간혹 사용하기도 한다. 이러한 의미에서 영어 그대로를 받아들이자면 일 때 Degenerate라 하는 것은 굉장히 상식적이다. 문제는 한국어로 번역할 때 축퇴랑 의미가 전혀 안 맞다는 것이다. 아예 다른 표현을 찾을 수도 있었겠지만, 생각해보니 어차피 심플렉스 메소드가 잘 돌아가지 않는다는 의미에서 타락도 아주 틀린 말은 아닌 것 같아 그냥 타락으로 순화했다.
예시
가령 위와 같은 선형계획문제를 딕셔너리로 적어보면 다음과 같다.
이때 에 대해 인데, 이 때문에 변수를 치환해봐도 목적값objective value은 변하지 않고 빙빙 돌게 된다. 다시 말해, 번째 딕셔너리를 라 했을때 다음을 만족하는 어떤 이 존재하게 되는 것이다.
이게 아주 간단한 예시로 보니까 저런 일이 왜 있나 싶지만 사람의 눈으로 한번에 읽기 힘들 정도로 큰 만 돼도 언제 어떤 사이클이 일어날지 알 수가 없다. 예를 들어보면 치환을 하다가 기가 막히게 가 맞물려서 이 생겨나는 식이다. 프로그래밍적으로 이것을 감지하는 것 자체는 별로 어렵지 않겠지만, 이를 어떻게 헤쳐나갈지가 문제다.
해법: 브랜드 룰
진입 변수entering variable과 이탈 변수를leaving variable을 각각의 과 에서 인덱스가 가장 작은 걸로 고르면 사이클에 빠지지 않는다. 이러한 선택법을 브랜드 룰Brand’s rule이라 부른다.
반대로는 심플렉스 메소드가 끝나지 않을 때 딕셔너리가 사이클에 빠졌음을 다음의 정리로 보장할 수 있다.
정리
만약 심플렉스 메소드가 끝나지 않는다면, 딕셔너리가 사이클에 빠진 것이다.
증명
선형계획문제에서 기저가용해가 되는 모든 경우를 그리디 알고리즘으로, 다시 말해 우리가 상상할 수 있는 최악의 방법으로 찾는다고 생각해보자. 개의 변수 중 개의 기저변수를 찾는 경우의 수는 으로, 상당히 큰 수지만 어쨌든 유한하다. 이 모든 경우를 다 계산해보면 반드시 최적화를 끝낼 수 있음에도 불구하고 심플렉스 메소드가 멈추지 않는다는 것은 사이클에 빠져있다는 의미가 된다.
■
선형계획법의 기본정리
이 정리는 선형계획법의 기본정리 증명에 사용된다.
Vanderbei. (2020). Linear Programming(5th Edition): p27~28. ↩︎