Shortest Path First algorithm
We maintain three lists
- UNKNOWN list: all nodes start on this list
- TENTative list: all nodes we are currently examining. Also called candidate list
- PATHS list: all nodes to which we have calculated final paths. Also called known list