カーマーカーの
アルゴリズムは、
1984年にナレンドラ・カーマーカーによって発表された線形計画問題を解くための
アルゴリズムです。線形計画問題とは、与えられた制約条件の下で、ある目的関数を最大化または最小化する問題であり、多くの分野で応用されています。
カーマーカーの
アルゴリズムは、
内点法と呼ばれる手法を用いています。
内点法は、実行可能領域(制約条件を満たす解の集合)の内部を通って解を
探索する方法です。従来の
シンプレックス法が実行可能領域の境界を辿って解を
探索するのに対し、カーマーカーの
アルゴリズムは、実行可能領域の内部を移動しながら解を改善していきます。
具体的には、以下の手順で最適解を
探索します。
1.
初期点の決定: 実行可能領域の内側の点から
探索を開始します。
2.
最適化実行可能方向の計算: 現在の点から、目的関数を改善する方向に進むベクトルを計算します。
3.
ステップ幅の決定: 現在の点からどれだけ移動するかを示すステップ幅を決定します。このステップ幅は、実行可能領域から外に出ないように調整されます。
4.
解の更新: 現在の点を、計算した方向にステップ幅分だけ移動させて更新します。
5.
収束判定: 解が十分に最適解に近づいたかを判定します。収束していない場合は、ステップ2に戻り、再度
探索を繰り返します。
これらのステップを繰り返すことで、最適解に収束します。
正準形式で表された線形計画問題、すなわち
maximize c
Tx
subject to Ax ≤ b
を考えます。ここで、Aは
行列、bとcはベクトル、xは変数ベクトルです。この問題を解くために、カーマーカーの
アルゴリズムは以下の手順を実行します。
1.
初期化: 初期点 x
0、停止条件、パラメータγを設定します。
2.
反復: 停止条件を満たすまで以下の処理を繰り返します。
残差ベクトル v
k = b - Ax
k を計算します。
対角
行列 D
v を計算します。D
vの対角成分はv
kの各要素です。
探索方向ベクトル h
x = (A
TD
v-2A)
-1c を計算します。
探索方向ベクトル h
v = -Ah
x を計算します。
もし h
v ≥ 0 なら、問題は非有界であり、
アルゴリズムを終了します。
ステップ幅 α を計算します。
解を x
k+1 = x
k + αh
x によって更新します。
反復回数kをインクリメントします。
計算量
カーマーカーの
アルゴリズムは、
多項式時間で解を求めることができる
アルゴリズムです。変数の個数をn、入力
ビット数をLとしたとき、計算量はO(n
3.5L)となります。これは、従来の
シンプレックス法が最悪の場合に指数時間を要するのに対し、カーマーカーの
アルゴリズムが実用的な効率を持つことを意味します。
楕円体法も
多項式時間アルゴリズムですが、実用的な効率はカーマーカーの
アルゴリズムの方が高いとされています。
カーマーカーの
アルゴリズムは、その画期的な手法から
特許を取得しました。この
特許取得は、
アルゴリズムの
特許化という観点から大きな論争を巻き起こしました。
数学者や研究者の多くは、
アルゴリズムは
自由であるべきだと主張し、
特許化に反対しました。一方で、カーマーカーの雇用主である
AT&Tは、この
アルゴリズムが商業的に大きな価値を持つと判断し、
特許を取得しました。この
特許は、米国や日本で認められましたが、その後に
特許権が放棄されたり、
特許期間が満了したりしたため、現在は
パブリックドメインとなっています。
まとめ
カーマーカーの
アルゴリズムは、線形計画問題を効率的に解くための重要な手法です。
内点法というアプローチによって、従来の
シンプレックス法よりも高速に解を求めることができる場合があります。また、
特許を取得したことからも、その革新性が伺えます。
この
アルゴリズムは、様々な分野で広く応用されており、現代の
最適化問題を解く上で不可欠なツールの一つとなっています。
関連項目
線形計画法
シンプレックス法
内点法
ナレンドラ・カーマーカー
ソフトウェア
特許
今野浩