次の問題を解決しようとしていました。
mn 迷路は、左上の正方形から他の正方形へのパスが 1 つだけ存在するように、グリッド セルの間に壁が配置された mn の長方形のグリッドです。以下は、912 迷路と 1520 迷路の例です。
C(m,n) を個別の mn 迷路の数とします。別の迷路からの回転と反射によって形成される迷路は、別個のものと見なされます。
C(1,1) = 1、C(2,2) = 4、C(3,4) = 2415、および C(9,12) = 2.5720e46 (科学表記法では 5 桁に丸められる) であることが確認できます。数字)。
C(100,500) を求める
現在、正しい結果を与える明示的な式があり、完全に計算可能です。ただし、私が理解しているように、Project Euler の問題の解決策は、明示的な数式計算ではなく、より巧妙なアルゴリズムに似ている必要があります。解決策を再帰として定式化しようとすると、迷路のサイズに応じて変数の数が指数関数的に増加する線形システムにしか到達できませんでした (より正確には、m を固定して mxn 迷路の数の再帰を記述しようとすると、変数の数が m とともに指数関数的に増加するような線形システムに到達します。変数の 1 つは、問題 380 の宣言で指定されたプロパティを持つ mxn 迷路の数であり、他の変数は mxn 迷路の数です。特定の「迷路の境界に接する複数の連結成分」
問題をより簡単に解決できる部分問題に減らし、より大きな部分問題の解決策を構築するときに部分問題の解決策を再利用することも考えました (動的計画法のアプローチ) が、ここで、部分問題には不規則な迷路が含まれているように見えるという事実に出くわしました。このような迷路の数は m,n で指数関数的です。
誰かが明示的な式やアドホックな定理を使用する以外に実行可能なアプローチ (m=100、n=500) を知っていて、どこを見ればよいかを示唆できる場合、私にとっては非常に興味深いものです。