# Dijkstra()

`alg.Dijkstra`

is an implementation of the Dijkstra's shortest path algorithm.
It can efficiently find the shortest path in both directed and undirected graphs. This implementation
uses a binary heap based priority queue. The time complexity of this algorithm is `O(|E| + |V| log |V|)`

,
where |E| is the number of edges in the graph and |V| is the number of nodes.

Even though `alg.Dijkstra`

is listed as a separate plugin, you usually don't use it directly. Instead, you can use the graphUtils plugin
which extends the `joint.dia.Graph`

with a convenience method for finding the shortest path between two nodes `shortestPath(source, target [, opt])`

.
However, it could be useful to use `alg.Dijkstra`

directly in some situations. The reason is that `alg.Dijkstra`

calculates not only the shortest path
between two nodes but the shortest path between a node and all the other nodes in the graph.

`alg.Dijkstra(`

adjacencyList: any,

source: string | number, weight: (aNode: any, bNode: any) => number

): any;

Find the shortest path between the node source and all the other nodes in the graph represented as adjacencyList. See the usage
section for more info. weight can optionally contain a function that takes two nodes and returns the distance between them. This
function defaults to: `function(u, v) { return 1; }`