Maximization Problem: Time Series Search
이번 포스팅에서는 전 포스팅의 Minimization과 대비되는 형태의 문제인 Maximization 문제를 다루도록 하겠습니다. Time Series Search (이하 TSS)문제는 대표적인 maximization 문제입니다.

한 항공사에서 유럽여행 이벤트를 한다고 가정하겠습니다. 이럴 경우는 없겠지만 이 이벤트는 여러분을 n일 후에 유럽으로 공짜로 보내주는 이벤트입니다. 다만 여러분은 n일이 언제인지 모르고 당일날 통보를 받게 됩니다. 이 여행을 가기 위해서 많은 준비를 해야하겠지만 가장 중요한 건 원화를 유로로 바꿔야합니다. 목표는 환율이 여러가지 요인으로 변동하는 상황에서 가장 이득이 되는 날을 골라서 모든 돈을 바꾸는 것입니다. 하지만 만약에 바꾸지 못한다면 항공사에서 정해준 n일뒤에 바꿔야 하는 불상사가 일어날 수 있습니다. 물론 그 날의 환율이 좋다면 괜찮지만 최악일 수도 있습니다. 그렇다면 한번 문제를 정의해보겠습니다.
문제의 입력은 (p1,p2,...,pn), pj는 j번째 날 환율입니다. 1원에 pj달러라고 합시다. 그리고 환율 pj는 L≤pj≤U를 만족하는 bound를 가지고 있다고 가정합시다..
문제의 출력은 pi가 최대가 되는 i입니다.
그럼 이 문제를 reservation price policy 줄여서 RPP 알고리즘으로 분석을 해보도록 하겠습니다. 우선 파라미터 ϕ=U/L를 정의하겠습니다. 최대 환율과 최소 환율의 비율입니다. 알고리즘은 매우 단순합니다. pj≥p∗=√UL를 만족하는 날에 모든 돈을 환전합니다. 물론 n번째날 까지 그런 날이 없다면 n번째 날 모든 돈을 바꿔야합니다. 이 알고리즘은 다음 3가지를 만족합니다.
- RPP 알고리즘의 competitive ratio는 n의 값을 아느냐 모르냐에 상관없이 √ϕ를 만족합니다
- n의 값을 알더라도 √ϕ-competitive ratio보다 작을 수 없습니다.
- U와 L을 모르고 ϕ만 안다고 할 경우에 competitive ratio는 적어도 ϕ를 보장합니다.
1번 Proof.
만약에 모든 n에 대하여 pj≤p∗라고 하면, RPP 알고리즘은 모든 돈을 마지막 날에 환전을 할 것이고 pn≥L을 보장합니다. 최적해는 pj≥p∗=√UL이므로 ratio는 다음과 같습니다.
OPTALG≤√ULL=√ϕ
pj≥p∗를 만족하는 j가 존재한다고 하면, RPP 알고리즘은 pj≥√UL를 만족하는 값을 보장합니다. 그리고 최적해는 pj≤U 입니다. 둘 사이의 ratio는 다음과 같습니다.
OPTALG≤U√UL=√ϕ
2번 Proof.
1번 증명에서 밝혔듯이 n에 따라서 competitive ratio가 바뀌지는 않습니다.
3번 Proof.
우리가 ϕ를 알고 있고 입력 시퀀스 (p1,p2,...,pn)에서 pi=1,i∈[n−1]을 RPP 알고리즘 ALG에 대입합시다. 이럴경우, L≤U이므로, ϕ≥1을 만족해야 합니다.
만약 ALG가 day i∈[n−1]에 트레이드를 한다면, pn=ϕ라고 할 때, 최적해는 pn에 트레이드하는 것입니다.
OPTALG≤ϕ1=ϕ
만약 ALG가 n번째 날에 pn=1/ϕ에 환전을 한다고 하면, 최적해는 1이 되므로 ϕ ratio를 만족합니다.
OPTALG≤11/ϕ=ϕ
One-Way Trading
One-Way Trading은 TSS 알고리즘의 기본적인 접근방식입니다. 앞서 정리한 알고리즘에서는 특정한 환율에서 모든 돈을 바꿔야 했다면 이제는 분할해서 환전을 할 수 있다고 합시다. 물론 모든 돈을 n일이 되기전에 바꿔야합니다. 만약 n일 되었는데 환전을 안한 돈이 남아있다면, n일의 환율로 환전을 해야합니다.
문제의 입력은 이전 문제와 같습니다. (p1,p2,...,pn), pj는 j번째 날 환율입니다. 그리고 환율 pj는 L≤pj≤U를 만족하는 bound를 가지고 있다고 가정합시다.
문제의 출력은 f1,f2,...,fn∈[0,1] fi는 i번째 날에 환전하는 전체 금액의 비율입니다. 즉, ∑ni=1fi=1를 만족해야합니다. 결과적으로, 총 환전하는 금액을 최대로 하는 비율의 시퀀스를 구하면 됩니다.
분할구매는 일괄구매보다 당연히 훨씬 강력합니다. 쉬운 알고리즘으로 competitive ratio를 logϕ로 구현할 수 있습니다. 알고리즘을 설명하도록 하겠습니다. 우선 보기쉽게 하기 위해서 ϕ=2k,k>0로 가정합시다. 그렇다면 우리는 i번째 날의 환율을 L2i,i∈0,1,...,k−1이라고 할 수 있습니다.
처음 pi을 알았을 때, 알고리즘은 i에 현재까지 가장 큰 환율을 구합시다. 그리고 (i+1)/k 만큼의 비율을 환전합니다. 그리고 i를 i∗에 저장합니다. 이 알고리즘을 계속 반복합시다. 그리고 i≤i∗인 경우에는 그 날은 생략합니다. 아니면 (i−i∗)/k 비율의 돈을 환전합니다. 이로써 i∗에는 가장 좋은 환율인 날을 기록합니다. 이것이 mixture of RPP 알고리즘입니다.
Mixture of RPP 알고리즘은 c(ϕ)logϕ,(c(ϕ)→1,ϕ→∞)의 competitve ratio를 가지고 있습니다. 한번 증명해보도록 하겠습니다.
입력 시퀀스 (p1,p2,...,pn)라고 합시다. 만약, ij가 L2ij≥pj를 만족하는 가장 큰 인덱스라고 할 때, pl=max(p)를 만족하는 l이 있다고 할 때, OPT=pl≤L2il+1이라고 할 수 있습니다. 그렇다면 환율이 꾸준히 내려가는 형태가 아니면 우리는 −1=i∗0<i∗1<i∗2<...<i∗p=il라고 할 수 있습니다. 그리고 알고리즘을 적용하면 다음과 같은 값이 나올 것입니다.
p∑j=1i∗j−i∗j−1kL2i∗j+k−ilkL
앞에는 l까지의 환전 값이고 뒤는 마지막날 남은 돈을 전부 환전한 값입니다. 앞에 값의 bound를 구해보자면, 값의 증가에서 skip이 없이 계속 시퀀스가 −1,0,1,2,...,il로 모든 환율을 구매하는 경우입니다. 이유는 당연히 계속 일정한 비율을 최고 환율이 아닌 환율에서 스킵없이 구매를 하기 때문입니다. 그리고 우리는 다음과 같은 ALG의 바운드를 구할 수 있습니다.
ALG≥2il+1−1kL+k−ilkL
다음은 Randomized online 알고리즘에 대해서 정리해보도록 하겠습니다.
'알고리즘 > online algorithm' 카테고리의 다른 글
Online 알고리즘 (5) - Randomized Online Algorithms (MBG 문제) (0) | 2020.05.02 |
---|---|
Online 알고리즘 (4) - Randomized Online Algorithms (1) (0) | 2020.04.28 |
Online 알고리즘 (2) - Deterministic Online Algorithms (1) (0) | 2020.04.05 |
Online 알고리즘 (1) - Online Algorithm (0) | 2020.04.05 |