我需要在 F# 中实现一个简单的 2D 动态规划算法。对于简单的一维案例 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
假设所有缺少的函数和数组都在上面定义。