This algorithm design assignment implements Dijkstra's algorithm for finding shortest paths in a weighted graph. The graph represents a city's road network with nodes as intersections and edges as roads with travel times.
The algorithm uses a priority queue (min-heap) to efficiently select the unvisited node with smallest distance. Time complexity is O((V+E) log V) with binary heap implementation. Space complexity is O(V) for distance and visited arrays.
Alternative approaches include Bellman-Ford (handles negative weights, O(VE)) and A* search (heuristic optimization). The assignment requires analyzing trade-offs and proving correctness using loop invariants. Performance testing compares runtime on sparse vs dense graphs.