楕円体法(だえんたいほう、英: ellipsoid method)とは数理最適化において凸集合内での凸関数最小化問題に対する反復法の一種である。楕円体法では各反復において楕円体を以前の反復より体積が小さくなるように生成し、凸関数の最小解集合を求める。
楕円体は有理数の入力データによる線形計画問題に対する多項式時間で解くアルゴリズムとなる。
楕円体法には長い歴史が存在する。楕円体法は反復法としてナウム・ショールによって始めて提案された。1972年には実数の凸最小化問題に対する近似アルゴリズムとしてアルカディ・ネミロフスキ(英語版)とデビッド・B・ユーディンによって研究されていた。
有理数入力データの線形計画問題に対する楕円体法としてはレオニード・カチヤン(英語版)によって多項式時間で解くアルゴリズムとして提案・証明された。当時まで主に研究されていた単体法に関しては実用上では高速に動く解法であったが、理論的には指数時間アルゴリズムであったため、理論的に重要な成果であった。このことから、任意の入力に対して多項式時間を保証する楕円体の登場は大きな影響を与えた。
多項式時間を保証する線形計画問題に対するアルゴリズムがカチヤンの研究によって初めて示された。しかしながら実用上における楕円体法は計算速度が遅く、研究者の関心は低かった。にもかかわらず、後の線形計画問題に関する研究に大きな影響を与え、より実用的で多項式時間を保証する解法の提案につながった。特に初の多項式時間を保証する線形計画問題に対する内点法のカーマーカー法は実用上も楕円体法よりも高速で実行し、最悪時間計算量も楕円体法よりも勝る。
楕円体法は最悪時において制約の行数に依らず問題の次元・サイズにのみ依存する計算量を持つことから、組合せ最適化理論において重要な役割を長年果たしてきた[1][2][3][4]。21世紀になり楕円体法と同等の計算量を持つ内点法も登場するようになった[要出典]。
凸最適化問題は以下の式から構成される。
初期の楕円体 E ( 0 ) ⊂ R n {\displaystyle {\mathcal {E}}^{(0)}\subset \mathbb {R} ^{n}} を
と最小解 x ∗ {\displaystyle x^{*}} が含まれるように定義する。ただし、 P ( 0 ) ≻ 0 {\displaystyle P_{(0)}\succ 0} とし、 x 0 {\displaystyle x_{0}} は楕円体 E {\displaystyle {\mathcal {E}}} の中心とする。
最後に凸集合 Q {\displaystyle Q} に対する分離オラクル(英語版)の存在性について説明する。 点 x ∈ R n {\displaystyle x\in \mathbb {R} ^{n}} が与えられたとして、オラクルは二つの回答のうち一つを返す[5]:
不等式制約付き最小化問題の実行可能点において目的関数が常にゼロをとるとき、この問題は単に実行可能解を見つける問題と等価である。線形計画問題は線形の許容性判定問題に書き換えることができる(意味としては目的関数がゼロで制約条件に不等式あるいは等式の制約が存在する問題である。)。書き換える方法として線形計画問題の主問題と双対問題を組み合わせて一つの問題として扱う方法が挙げられる。 これは主実行可能解と双対実行可能解には弱双対性が成り立っていることから、主実行可能解における目的関数値と双対実行可能解における目的関数値の差が0以上であるという制約を新たに加える[6]:84。もう一つの方法としては線形計画問題の目的関数を新たな制約として扱い、二分探索によって最適値を見つける方法が挙げられる[6]:7–8。
k {\displaystyle k} 番目の反復における楕円体を説明する。ここで楕円体の中心を x ( k ) {\displaystyle x^{(k)}} とする。
ここで分離オラクルによってベクトル g ( k + 1 ) ∈ R n {\displaystyle g^{(k+1)}\in \mathbb {R} ^{n}} を得る。すなわち、
このことから最小解は反復を通じて以下の通りに含まれなければならない:
新たな楕円体 E ( k + 1 ) {\displaystyle {\mathcal {E}}^{(k+1)}} は現在の半楕円体を含む最小体積の楕円体となり、新たな楕円体の中心 x ( k + 1 ) {\displaystyle x^{(k+1)}} を求める。更新式は以下のように与えられる:
ただし、
である。楕円体法は以下の停止基準を満たせば終了する:
制約付き最適化問題に対するk番目の反復における楕円体法について説明する。点 x ( k ) {\displaystyle x^{(k)}} は楕円体 E ( k ) {\displaystyle {\mathcal {E}}^{(k)}} の中心であると仮定する。また反復を通じて得られた実行可能解で最良の目的関数値を記録し、このリストを f b e s t ( k ) {\displaystyle f_{\rm {best}}^{(k)}} とする。点 x ( k ) {\displaystyle x^{(k)}} が実行可能な点であるかでないかによって以下のどちらかの手続きを行う: