# Introduction

Shortest path refers to a graph theory problem in which one wishes to find the shortest path between two vertices. Single source shortest path is where you are given a starting node and wish to find the minimal distance to every other node. All pairs shortest path is where you want to find the shortest path between every pair of two vertices. There are quite a few algorithms suited for this problem. They are:

# List of Algorithms

## Single source algorithms

Dijkstra's Algorithm - $O(E+V^2)$ normally, $O((E+V)\log V)$ with a binary heap, $O(E + V\log V)$ with a fibonacci heap. Only works for positive edge-weights.

Bellman-Ford - $O(EV)$. Works for graphs with negative edge weights

## All pairs algorithms

Floyd-Warshall - $O(V^3)$. Very short code to write, easy to remember.

Any single source shortest path run from each vertex. Dijkstra's has a best case running time of $O(EV + V^2\log V)$ with this method.