Pseudo-polynomial DP

// dp[u][t] = min cost to reach u using resource exactly t
for each vertex u in topo order (or via BFS)
  for each edge (u, v, cost, res)
    for each t from B down to res
      dp[v][t] = min(dp[v][t], dp[u][t - res] + cost)
Advertisement

Complexity

O(E × B). Pseudo-polynomial: exponential in log(B).

Advertisement

Lagrangian relaxation

Add penalty λ × (used_resource - B) to objective. Binary search on λ. Get approximate answer.

FPTAS

Fully polynomial approximation exists via rounding costs. Provable (1+ε) approx.