warning: question requires initial effort understood
this question not duplicate of dynamic programming : traversal of cities. let's suppose have following graph 4 cities [0-3]:
d[0][1] = 1; d[0][2] = 2; d[0][3] = 5; d[1][2] = 3; d[1][3] = 6; d[2][3] = 4;
the solution proposed in link is
c[i,j] = { c[i,j-1] + d[j-1,j] (if < j-1) min c[k,i] + d[k,j] 0 <= k < (if = j-1) }
but let's calculate c[1][2]:
c[1][2] = min between { k = 0 => c[0,1] + d[0][2] }
this makes sense it not path evaluate @ step, since have grouped cities [0,1] first set , had [2] alone second set. in case have been
c[1][2] = min between { k = 0 => c[0,1] + d[0][2] d[0][1] }
at point i'd ask if objection makes sense @ all. in case did , algorithm proposed in link above wrong, how should include occurrence in solution? tried formulate recursively couldn't come simple.
the solution referring indeed incomplete , not account case when second traveler starts @ j
. account that, update recurrent relation to:
c[i,j] = { c[i,j-1] + d[j-1,j] (if < j-1) min c[k,i] + d[k,j] 0 <= k < , c[0,i] (if = j-1) }
here exception c[0,1]
should set d[0,1]
this way account case when second traveler started (c[0,i]
cost of first traveler traveling 0 i
, , there's no cost second traveler start @ j = i+1
).
note can replace 0 <= k < i
0 < k < i
, because k = 0
results in c[0,i] + d[0,j]
strictly greater c[0,i]
Comments
Post a Comment