Bellman-Ford is an algorithm for finding shortest paths in a graph with positive or negative edge weights. It uses dynamic programming to iteratively update the shortest path costs from a source node to all other nodes. If the shortest path costs have not converged after |V|-1 iterations, there must be a negative weight cycle present in the graph. The Bellman-Ford algorithm returns both the shortest path costs and a predecessor graph that implicitly represents the shortest paths.