origin =n
から始まる 次元のユークリッド空間に踊るロボットがあると想像してください。P_0
(0,0,...,0)
ロボットはm
さまざまなダンスの動きをすることができますD_1, D_2, ..., D_m
D_i
はn
整数のベクトルです(D_i_1, D_i_2, ..., D_i_n)
ロボットがダンスの動きをするi
と、位置が だけ変化しD_i
ます。
P_{t+1} = P_t + D_i
ロボットは、任意のダンスの動きを好きなだけ何度でも任意の順序で行うことができます。
kダンスを一連のk ダンス ムーブとして定義するとします。
明らかにm^k
可能な k ダンスがあります。
k-dance の可能な終了位置のセットと、各終了位置について、その位置で終了する k-dance の数を知りたいと考えています。
これを行う 1 つの方法は次のとおりです。
P0 = (0, 0, ..., 0);
S[0][P0] = 1
for I in 1 to k
for J in 1 to m
for P in S[I-1]
S[I][P + D_J] += S[I][P]
ここS[k][Q]
で、位置 Q で終了する k ダンスの数がわかります
n
、m
、|D_i|
は小さく (5 未満) k
、40 未満であると仮定します。
もっと速い方法はありますか?S[k][Q]
ある種の線形代数関連のトリックを使用して、何らかの方法で「直接」計算できますか? または他のアプローチ?