Monge グラフ上の $d$-辺最短路長を計算するアルゴリズム

これはステージング環境です。5 秒後に自動的に本番環境 (https://noshi91.github.io/algorithm-encyclopedia) にリダイレクトされます。リダイレクトを抑止したい場合は #noredirect を付けた URL /algorithm-encyclopedia/d-edge-shortest-path-monge#noredirect を利用してください。
name
Monge グラフ上の $d$-辺最短路長を計算するアルゴリズム
short description
辺の重みが Monge 性を満たすような完全 DAG について、辺を丁度 $d$ 本使う条件下での $0$-$(N - 1)$ 最短路長を $\Theta (N \log(\max _ {e \in E} \lvert c(e) \rvert))$ で計算する。 ラグランジュ双対問題との強双対性が $c$ の Monge 性から成り立ち、ラグランジュ緩和問題もまた Monge 性を利用して高速に解くことができる。
input
Monge 性を満たす整数の辺重み $c : E \to \mathbb{Z}$ 付き完全 DAG $G = (N, E = \lbrace (i, j) \mid i \lt j \rbrace)$ 及び正整数 $d$
output
辺を丁度 $d$ 本使う条件下での $0$-$(N - 1)$ 最短路長
time complexity
$\Theta (N \log(\max _ {e \in E} \lvert c(e) \rvert))$
space complexity
$\Theta (N)$

概要

$G = (N, E = \lbrace (i, j) \mid i \lt j \rbrace)$ を $N$ 頂点の完全 DAG、$c : E \to \mathbb{Z}$ を Monge 性を満たす辺重み、$d$ を正整数とする。 辺を丁度 $d$ 本使う条件下での $0$-$(N - 1)$ 最短路長を計算する問題を考える。

この問題は制約付き最適化であり、そのラグランジュ双対問題との強双対性が $c$ の Monge 性から成り立つ。 この強双対性を利用することで、ラグランジュ緩和問題を $\Theta(\log (\max _ {e \in E} \lvert c(e) \rvert))$ 回解く問題に帰着することができる。

ラグランジュ緩和問題は、全ての辺の重みを $\lambda$ 大きくした場合の (辺の数の制約のない) 最短路問題となる。 $c$ が Monge なら、一様に $\lambda$ を加算したものもまた Monge である。 Monge 性を満たす辺重みについての最短路は LARSCH Algorithm1 を用いて $\Theta (N)$ で計算することができる。

従って、元の問題である Monge グラフ上の $d$-辺最短路長は $\Theta(N \log (\max _ {e \in E} \lvert c(e) \rvert))$ で計算できる。

Aliens2 はこの問題に帰着することができる。 それに由来して、特にラグランジュ緩和問題を用いる発想を指して Alien DP と呼ぶことがある3。 また、WQS binary search とも呼ばれる4

Monge

この記事中では、辺重み $c : E \to \mathbb{Z}$ が Monge であるとは、 \(\forall i, j, k, l.\ 0 \leq i \lt j \lt k \lt l \lt N \rightarrow c(i, l) + c(j, k) \geq c(i, k) + c(j, l)\) を満たすことを言うこととする。

Monge は通常は $M \times N$ 行列に対して定義される概念であるが、ここでは $c$ が上三角部分のみについて定義されているので、制限した形で定義した。

ラグランジュ双対問題

$\mathcal{P}$ を $G$ の $0$-$(N - 1)$ パス全体とする。 $P \in \mathcal{P}$ に対して、$\lVert P \rVert$ を $P$ の辺の本数、$c(P)$ を $P$ の辺の重みの和とする。

求めたい値は $\displaystyle \min _ {P \in \mathcal{P}, \lVert P \rVert = d} c(P)$ である。

任意の $\lambda \in \mathbb{Z}$ に対して、以下の式が成り立つ。 \(\begin{equation} \begin{aligned} \min _ {P \in \mathcal{P}, \lVert P \rVert = d} c(P) & = \min _ {P \in \mathcal{P}, \lVert P \rVert = d} (c(P) + \lambda (\lVert P \rVert - d)) \cr & \geq \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d)) \end{aligned} \end{equation}\) このように制約の一部を除去し、除去した制約について違反した量を一次のペナルティ5 として目的関数に組み込んだ問題をラグランジュ緩和問題と呼ぶ6。 ラグランジュ緩和問題の解は、元の問題の解の下界を与えている。

$(1)$ から、さらに以下の式が成り立つ。 \(\begin{equation} \min _ {P \in \mathcal{P}, \lVert P \rVert = d} c(P) \geq \max _ {\lambda \in \mathbb{Z}} \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d)) \end{equation}\) これは、$\lambda$ を調整することで得られる最もよい下界を考えていると解釈できる。 この最良の下界を求める問題をラグランジュ双対問題と呼ぶ。

$(2)$ において、一般には等号が成立するとは限らないが、この問題の設定では等号が成立する。 主問題と双対問題の解が一致することを、強双対性と呼ぶ。 以降の補題の主な目的は強双対性 (定理 $3$) を示すことである。

$P _ k ^ {\ast}$ を、丁度 $k$ 本の辺を使う条件下の $0$-$(N-1)$ 最短路と定義する。 複数存在する場合、任意に $1$ つとる。

補題 $1$

\[\forall k.\ 2 \leq k \leq N - 2 \rightarrow c(P _ k ^ {\ast}) - c(P _ {k - 1} ^ {\ast}) \leq c(P _ {k + 1} ^ {\ast}) - c(P _ k ^ {\ast})\]

証明

$\lVert P \rVert = \lVert P ^ {\prime} \rVert = k$ を満たすパス $P, P ^ {\prime} \in \mathcal{P}$ であって $c(P _ {k - 1} ^ {\ast}) + c(P _ {k + 1} ^ {\ast}) \geq c(P) + c(P ^ {\prime})$ であるものの存在を示す。 もしそれが示されたならば、$c(P _ {k - 1} ^ {\ast}) + c(P _ {k + 1} ^ {\ast}) \geq c(P) + c(P ^ {\prime}) \geq c(P _ k ^ {\ast}) + c(P _ k ^ {\ast})$ を移項することで求める式を得る。

パスを頂点の列として表現する。 $P _ {k - 1} ^ {\ast} = (s _ 0, s _ 1, \dots, s _ {k - 1}), P _ {k + 1} ^ {\ast} = (t _ 0, t _ 1, \dots, t _ {k + 1})$ とする。 $s _ 0 = t _ 0 = 0, s _ {k - 1} = t _ {k + 1} = N - 1$ である。 各 $0 \leq x \leq k - 1$ について、$s _ x$ と $t _ {x + 1}$ の大小を比較する。 $s _ 0 \lt t _ 1$ かつ $s _ {k - 1} \gt t _ k$ であるから、$s _ x = t _ {x + 1}$ を満たす $x$ が存在するか、さもなくば $s _ x \lt t _ {x + 1} \land s _ {x + 1} \gt t _ {x + 2}$ を満たす $x$ が存在する。

$\blacksquare$

補題 $1$ は $k \mapsto c(P _ k ^ {\ast})$ が下に凸であることを意味している。

補題 $2$

$\displaystyle \lVert P ^ {\ast} \rVert = d \land P ^ {\ast} \in \argmin _ {P \in \mathcal{P}} (c(P) + \lambda ^ {\ast} (\lVert P \rVert - d))$ を満たす $\lambda ^ {\ast} \in \mathbb{Z}, P ^ {\ast} \in \mathcal{P}$ が存在する。

証明

補題 $1$ を用いて、$- (c(P _ {d + 1} ^ {\ast}) - c(P _ d ^ {\ast})) \leq \lambda ^ {\ast} \leq - (c(P _ d ^ {\ast}) - c(P _ {d - 1} ^ {\ast}))$ を満たすように $\lambda ^ {\ast}$ をとる。 $\forall k.\ c (P _ k ^ {\ast}) + \lambda ^ {\ast} (k - d) \geq c (P _ d ^ {\ast})$ を示せば、$\displaystyle P _ d ^ {\ast} \in \argmin _ {P \in \mathcal{P}} (c(P) + \lambda ^ {\ast} (\lVert P \rVert - d))$ であるから、$P ^ {\ast}$ として $P _ d ^ {\ast}$ をとることができる。

$\blacksquare$

定理 $3$

\[\min _ {P \in \mathcal{P}, \lVert P \rVert = d} c(P) = \max _ {\lambda \in \mathbb{Z}} \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d))\]

証明

補題 $2$ を用いて、$\displaystyle \lVert P ^ {\ast} \rVert = d \land P ^ {\ast} \in \argmin _ {P \in \mathcal{P}} (c(P) + \lambda ^ {\ast} (\lVert P \rVert - d))$ を満たす $\lambda ^ {\ast}, P ^ {\ast}$ をとる。

\[\begin{aligned} \min _ {P \in \mathcal{P}, \lVert P \rVert = d} c(P) & \leq c(P ^ {\ast}) \cr & = c(P ^ {\ast}) + \lambda ^ {\ast} (\lVert P ^ {\ast} \rVert - d) \cr & = \min _ {P \in \mathcal{P}} (c(P) + \lambda ^ {\ast}(\lVert P \rVert - d)) \cr & \leq \max _ {\lambda \in \mathbb{Z}} \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d)) \end{aligned}\]

$(2)$ と合わせることで求める式が示される。 $\blacksquare$

アルゴリズム

ラグランジュ双対問題 $\displaystyle \max _ {\lambda \in \mathbb{Z}} \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d))$ を解く。 $\displaystyle L: \lambda \mapsto \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d))$ は $1$ 次関数群の $\min$ であるから、上に凸である。 したがって、$L$ の最大値は三分探索を用いて計算することができる。 定理 $3$ より、得られた $L$ の最大値が、求める出力 $\displaystyle \min _ {P \in \mathcal{P}, \lVert P \rVert = d} c(P)$ である。

残る問題は $\lambda$ が与えられたとき $L(\lambda)$ を計算することである。 辺重み $c _ {\lambda} : E \to \mathbb{Z}$ を $c _ {\lambda} (e) = c(e) + \lambda$ によって定義する。 すなわち、$c _ {\lambda}$ は全ての辺の重みを $c$ と比べて $\lambda$ 大きくした重みである。 すると、以下のように変形できる。 \(\begin{aligned} L (\lambda) & = \min _ {P \in \mathcal{P}} (c(P) + \lambda (\lVert P \rVert - d)) \cr & = \min _ {P \in \mathcal{P}} (c (P) + \lambda \lVert P \rVert - \lambda d) \cr & = - \lambda d + \min _ {P \in \mathcal{P}} c _ {\lambda} (P) \end{aligned}\) よって、$c _ {\lambda}$ についての最短路長を計算することで $L(\lambda)$ の値を得ることができる。

$c$ が Monge であるから、$c _ {\lambda}$ もまた Monge である。 辺の重みが Monge 性を満たす完全 DAG の最短路の計算は LARSCH Algorithm1 を用いて $\Theta (N)$ で行うことができる。 Aliens2 では $c _ {\lambda}$ の性質が Monge よりさらに良く、Convex Hull Trick を用いることで同じく $\Theta (N)$ で最短路を計算することができる。

$\lambda = - 3 \max _ {e \in E} \lvert c(e) \rvert$ とすると辺を $N - 1$ 本含むパスが最短となる。 $\lambda$ をそれ以上小さくすると $L(\lambda)$ は単調減少するため、$- 3 \max _ {e \in E} \lvert c(e) \rvert$ は三分探索の下界として用いることができる。 同様に、$3 \max _ {e \in E} \lvert c(e) \rvert$ を上界に用いることができる。

時間計算量は全体で $\Theta (N \log (\max _ {e \in E} \lvert c(e) \rvert))$ となる。

その他

参考文献

注釈

  1. Larmore, L. L., & Schieber, B. (1991). On-line dynamic programming with applications to the prediction of RNA secondary structure. Journal of Algorithms, 12(3), 490-515.  2

  2. IOI 2016 Aliens archive.org  2

  3. kort0n によるツイート https://twitter.com/kyort0n/status/1260986271314227206archive.org 

  4. $\lambda (\lVert P \rVert - d)$ は負にもなり得るため、ペナルティとしての解釈が難しい部分もある。厳密な議論は式変形を参照せよ。 

  5. ラグランジュ緩和問題 - 数理計画用語集 archive.org 

  6. 厳密には、$c _ {\lambda} (P)$ を最小化する $P$ が複数存在した場合にどれを選ぶかによって、そのような $\lambda$ が存在しない場合もある。その場合、適切な復元を行うなどの対処が必要となる。