F #의 2D에서 간단한 동적 프로그래밍 알고리즘을 구현해야합니다. 간단한 1D의 경우 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