Я занимаюсь упражнением динамического программирования, и, похоже, я не могу его удержать. Я напишу здесь проблему, а также это решение, в котором явным образом заявляю, что я не понимаю.Упражнение на динамическое программирование
Нам дается 2 последовательностей u1,u2,...,un
и d1,d2,...,dm
и матрицу размеров n x m
, построенные из натуральных чисел C=[cij]
. Список k пар ((ui1, dj1),(ui2,dj2),...,(uik,djk))
считается непересекающимся, если i1 < 12 <..< ik
и j1 < j2 <...< jk
. «Совместимостьс из списка» называется совместимость суммы пар, что он сделан из, то есть Ci1j1 + Ci2j2 + ... + Cikjk
Пример: Рассмотрим матрицу C = [Cij]
, поэтому Cij = squared(i + j)
. Пусть i будет i = 1, 2, 3, j = 1, 2, 3, 4
и k = 2
. Некоторые списки из двух непересекающихся пар - это ((u1, d2),(u3, d3))
с совместимостью 9 + 36 = 45
, ((u2, d2),(u3, d4))
с совместимостью 16 + 49 = 65,
и ((u1, d1),(u2, d4)),
с совместимостью 4 + 36 = 40
. Некоторые списки, которые не являются непересекающихся являются следующие: ((u2, d2),(u3, d1)),((u1, d4),(u3, d3)),((u3, d2),(u2, d3))
Решение:
М (I, J, T) = максимальная стоимость т непересекающихся пар взяты из щ, ..., ип и ди-джей, ... дм
Рецидив уравнение:
M(i, j, t) = max {M(i + 1, j + 1, t − 1) + c(i, j), M(i, j + 1, t),M(i + 1, j, t).}
M(i, j, 0) = 0
M(i, j, t) = −∞, if t > min{n − i + 1, m − j + 1}
M(i, j, t) = 0, if i > n or j > m
Я не под reccurrence очень хорошо, и почему мы относим −∞
к M(i, j, t)
когда t > min{n − i + 1, m − j + 1}
но 0, когда i > n
или j > m
Раствор М (1, 1, к) ,