F# の 2D で単純な動的計画法アルゴリズムを実装する必要があります。単純な 1D の場合、Seq.unfold が適しているようです。たとえば、https ://stackoverflow.com/a/7986083/5363 を参照してください。
2D で同様の結果を達成するための適切な (かつ効率的な) 方法はありますか?
let alpha =
let result = Array2D.zeroCreate N T
for i in 0 .. N-1 do
result.[0, i] <- (initialPi i) * (b i observations.[0])
for t in 1 .. T-1 do
for i in 0 .. N-1 do
let s = row t-1 result |> Seq.mapi (fun j alpha_t_j -> alpha_t_j * initialA.[i, j]) () |> Seq.sum
result.[t, i] <- s * (b i observations.[t])
result
不足しているすべての関数と配列が上記で定義されていると仮定します。