Running shortest path algorithm on a Directed Acyclic Graph (DAG) via dynamic programming which uses memoization has a runtime complexity of O(V + E) which can be verified using the following equation:
d(s,v) = min{ d(s,u) + w(u,v) }, over all vertices u->v
Now, Dijkstra's algorithm also requires the graph to be directed. And the algorithm has a runtime complexity of O(E + V.log(V)) using min priority queues and this is clearly slower than the memoized version of DP.
According to wiki:
This is asymptotically the fastest known single-source shortest-path algorithm for arbitrary directed graphs with unbounded non-negative weights.
Am I missing something here? I am just not able to digest the contradiction here..