我需要在F#中實現2D中的簡單動態編程算法。對於簡單的一維病例,Seq.unfold似乎是要走的路,參見例如。 https://stackoverflow.com/a/7986083/5363F中的2D動態編程#
是否有一種很好(有效)的方法來實現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
假定所有缺少的函數和數組都在上面定義。
什麼是你要改寫這個動機是什麼?這僅僅是爲了教育目的嗎?看起來像上面的陣列版本將是你的最佳投注製作.. – t0yv0 2012-07-11 20:54:45