This is a generic library for performing Dijkstra's Algorithm for finding the shortest path between two vertices in a directed, weighted graph.
A directed, weighted graph is comprised of vertices connected by edges from one to another, each edge with a weight value that represents the "distance".
Implement the Edge and Vertex interfaces and populate a Graph instance with them to represent your problem. Then use Search.shortestPath(...) to find the best (shortest) way to get from one place (the start vertex) to another (the finish vertex.)