それぞれ1000 × 2と2 × 1000の次元の2つの行列とBがあり、(A B )5000を計算する場合、最初に式をA (B A )4999 Bとして書き換えてから、A Bは1000 × 1000の次元ですが、B Aは2 × 2の次元であるため、数値的に評価します。
この問題の一般化されたバージョンを解決したいと思います。以下を含む式を最適化するための合理的な効率的なアルゴリズム(ブルートフォースではない)はありますか?
- 既知の次元の自由行列変数
- 任意の部分式の積
- 自然な力に引き上げられた任意の部分式
...フリーマトリックス変数を具体的なマトリックス値で置き換えた後、数値的に評価するのに必要な作業が最小になるようにするには?
行列チェーン乗算問題は私の問題の特殊なケースです。
編集:
これは暫定的な答えです。直感的には正しいようですが、それが正しいことを証明するものはありません。それが正しいことが判明した場合でも、証明に興味があります。(もちろん、正しくない場合は修正してください。)
などのべき乗されたすべての積について、因子のすべての巡回置換を検討します。
- ...
...再帰的に。各指数は(明らかに)二乗による指数を使用して計算され、他のすべての積は、マトリックスチェーン乗算アルゴリズムによって返される最適な次数を使用して計算されます。
編集:
私の以前の編集で概説したアイデアは、まだいくらか最適ではありません。二乗アルゴリズムによるべき乗は、実際にはまたはA n Kの形式の式を評価します。ここで、Kは必ずしも単位行列ではありません。しかし、私のアルゴリズムでは、単位行列と等しくないKを使用してアルゴリズムを二乗することにより指数を使用する可能性を考慮していません。