Skip to content
Related Articles

Related Articles

teachmedijkstra library in Python

View Discussion
Improve Article
Save Article
Like Article
  • Last Updated : 06 Jun, 2021

Dijkstra’s algorithm is very similar to Prim’s algorithm for minimum spanning trees. Like Prim’s MST, we generate a SPT (shortest path tree) with a given source as root. We maintain two sets, one set contains vertices included in the shortest path tree, other set includes vertices not yet included in the shortest path tree. At every step of the algorithm, we find a vertex that is in the other set (set of not yet included) and has a minimum distance from the source.

teachmedijkstra: Utility library helping in rendering explained Dijkstra’s alogirithm in latex format for teaching purposes. The rows of the matrix represent vertex of graph and column represent each unit time step of explanation, gets the shortest path tree constructed for shortest distance algorithm.


This module does not come built-in with Python. To install it type the below command in the terminal.

pip install teachmedijkstra

After installation of the library, steps to proceed with are :

  • Initializing the Undirected/Directed Graph
  • Addition of Vertex and Edges to Graph
  • Using Dijaskstra(), to input created graph with a starting point.
  • run(), runs the algorithm.
  • At the end, the latex file produced can be saved by the required name.

Function Used :

  • teachmedijkstra.UndirectedGraph() : Initializes the graph with undirected Graph.
  • graph.addVertex(name, coordinate) : Adds name of vertex along with graphical coordinate it should belong to.
  • graph.addEdge(strt, end, weight) : Adds edge from 1 node to another with particular weight.
  • teachmedijkstra.Dijkstra(graph_obj, strt_point) : Initializes the variable with graph instance with starting point.
  • : Runs the dijkstra algorithm.
  • dijkstra.saveToLaTeXFile(file_name) : Saves the constructed graph in file_name in latex format.

Example 1:


import teachmedijkstra
# getting graph
graph = teachmedijkstra.UndirectedGraph()
# initializing vertices
graph.addVertex("i", (0, 1))
graph.addVertex("j", (2, 1))
graph.addVertex("k", (2, 2))
graph.addVertex("l", (0, 2))
# initializing edges
graph.addEdge("i", "j", 7)
graph.addEdge("i", "l", 8)
graph.addEdge("j", "k", 6)
graph.addEdge("l", "j", 1)
graph.addEdge("k", "i", 5)
# creating graph from i.
dijkstra = teachmedijkstra.Dijkstra(graph, "i")
# saving file

Produced Latex File :

Output ( After converting Latex ):


Example 2: Directed Graph 

In this example, we will create a directed graph with this module.


import teachmedijkstra
# initializing Directed graph
graph = teachmedijkstra.DirectedGraph()
# initializing vertices
graph.addVertex("a", (0, 2))
graph.addVertex("b", (1, 2))
graph.addVertex("c", (2, 2))
graph.addVertex("d", (0, 1))
graph.addVertex("e", (1, 1))
graph.addVertex("f", (2, 1))
graph.addVertex("g", (0, 0))
graph.addVertex("h", (1, 0))
graph.addVertex("i", (2, 0))
# adding edges
graph.addEdge("a", "b", 9)
graph.addEdge("b", "c", 3)
graph.addEdge("c", "f", 4)
graph.addEdge("e", "f", 3)
graph.addEdge("e", "d", 6)
graph.addEdge("d", "g", 1)
graph.addEdge("g", "h", 3)
graph.addEdge("h", "i", 8)
graph.addEdge("a", "d", 1)
graph.addEdge("e", "b", 3)
graph.addEdge("e", "h", 9)
graph.addEdge("f", "i", 6)
graph.addEdge("a", "e", 4)
graph.addEdge("c", "e", 5)
graph.addEdge("g", "e", 1)
graph.addEdge("i", "e", 4)
graph.addEdge("c", "i", 6)
graph.addEdge("a", "g", 1)
# calling Dijkstra fnc to perform algo.
dijkstra = teachmedijkstra.Dijkstra(graph, "a")
# saving file

Latex Output : 

Output : 

My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!