3D マトリックスを反復処理する
特定の苦境に対するすべての可能な解決策を確認する必要があります。
私は通過する可能性のあるノードを表す行列[x] [y] [z]を持っています。私はすでに一連のソリューションを提供するメソッドを終了しました(反復ごとに単一のパスを無効にし、ソリューション全体を再計算します。無効化の優先度は最後のソリューションの移動容量に基づいています)が、私のメソッドがどれほど効果的かを確認する必要がありますセットの計算にかかった合計時間の項。このために、これらのパスのすべての順列でソリューションを計算するメソッドが必要です。
現在、2 つのメイン レイヤー (L1) の間に 1 つのレイヤーしかなく、0 はフリー パス、1 はアクセス不可のパスです。これは、レイヤー L1 の値を 0 から 1 に切り替えてパスと最短パス検索アルゴリズムの基礎を無効にできる開始レイアウトです。
L0 0 0 0 0 0 L1 0 1 0 1 0 L2 0 0 0 0 0
0 1 0 1 0 1 1 1 1 1 0 1 0 1 0
0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
0 1 0 1 0 1 1 1 1 1 0 1 0 1 0
0 0 0 0 0 0 1 0 1 0 0 0 0 0 0
マトリックスの次元が一定でない場合 (つまり、コンパイル時に既にユーザーが定義されており、いつでも変更できることを意味します)、自由パスを無効にするすべての可能な組み合わせを反復するにはどうすればよいですか? 2^n 個の解があり、n はすべての中間層の自由パスの数です。(CまたはC++での簡単な説明が最適です。疑似コードでも良いです)現在、組み合わせを作成するための9つのフリーパスがあるため、テストする必要がある約2 ^ 9のソリューションがあるはずです。私は以前にブルートフォースアルゴリズムを行ったことがないので、作成方法がわかりません。