Matrix chain multiplication: Difference between revisions

m
(+Racket)
Line 973:
(cond
[(= 1 (- right left)) ($ 0 left)]
[else (for/fold ([ans ($ +inf.0 #f)]) ([mid (in-range (add1 left) right)])
[else
(for/fold ([ans ($ +inf.0 #f)]) ([midmin: ans (in-range+: (add1loop left mid) (loop mid right)])
(min: ans (+:$ (loop* (@ dims left) (@ dims mid) (loop@ middims right)) #f)
($ (* (@ dims left) #:combine (@ dims mid)λ (@ dimsleft-answer right))-answer #f_)
#:combine (list left-answer right-answer _)))))]))))
(list left-answer '× right-answer)))))]))))
(loop 0 (sub1 (vector-length dims))))
 
Anonymous user