How to design Hamiltonian Cycle in Python
In this tutorial, we will learn how to design a hamiltonian cycle in Python.
Firstly we will learn what is a hamiltonian cycle.
Hamiltonian Cycle and Graph
Suppose you got a Graph G. Now if you find a cycle containing all the vertices of that Graph, then we can call the cycle a Hamiltonian Cycle.
Now if the Graph is having a hamiltonian cycle then the graph will be known as a hamiltonian graph.
Hamiltonian path:
A path in a connected graph that includes every vertex but not necessarily every edge, then the connected graph is called a hamiltonian path.
Let’s take a simple graph ‘G’ containing 4 vertices and 5 edges represented as G(4,5).
This is the adjacency matrix for the graph:
[[0,1,0,1]
[1,0,1,1]
[0,1,0,1]
[1,1,1,0]]
Note: The adjacency matrix of a graph ‘G’ with ‘n’ vertices is given by a[ij]=1{if there is an edge between i and j vertices} and a[ij]=0 {if there is no edge}
here is the python code.
class Graph(): def __init__(self, vertex): self.graph = [[0 for column in range(vertex)] for row in range(vertex)] self.V = vertex def isSafe(self, v, pos, hpath): if self.graph[ hpath[pos-1] ][v] == 0: return False for vertex in hpath: if vertex == v: return False return True def hamCycleUtil(self, hpath, pos): if pos == self.V: if self.graph[ hpath[pos-1] ][ hpath[0] ] == 1: return True else: return False for v in range(1,self.V): if self.isSafe(v, pos, hpath) == True: hpath[pos] = v if self.hamCycleUtil(hpath, pos+1) == True: return True hpath[pos] = -1 return False def hamCycle(self): hpath= [-1] * self.V hpath[0] = 0 if self.hamCycleUtil(hpath,1) == False: print ("No hamiltonian cycle\n") return False self.printSolution(hpath) return True def printSolution(self, hpath): print ("it is a hamiltonian graph: the possible", " Hamiltonian Cycle is:") for vertex in hpath: print (vertex, end = " ") print (hpath[0], "\n") g1 = Graph(4) g1.graph = [ [0, 1,0,1], [1,0,1,1], [0,1,0,1],[1,1,1,0],] g1.hamCycle(); g2 = Graph(4) g2.graph = [ [0,1,0,0], [1,0,0,1], [0,0,0,1], [0,1,1,0],] g2.hamCycle();
it is a hamiltonian graph: the possible Hamiltonian Cycle is: 0 1 2 3 0 No hamiltonian cycle
Finally, the applications of the Hamiltonian cycle are it is used in computer graphics and circuit designs.
also, read rfind method in python
Leave a Reply