1+ from Vertex import Vertex
2+ from Queue import Queue
3+
4+ class Graph :
5+ def __init__ (self , maxNumberOfVertices = 0 ):
6+ self .maxNumberOfVertices = maxNumberOfVertices
7+ self .vertices = [None ] * maxNumberOfVertices
8+ self .currentNumberOfVertices = 0
9+ self .adjacencyMatrix = [[0 for x in range (maxNumberOfVertices )] for y in range (maxNumberOfVertices )]
10+
11+ def addVertex (self , label ):
12+ vertex = Vertex (label , self .currentNumberOfVertices )
13+ self .vertices [self .currentNumberOfVertices ] = vertex
14+ self .adjacencyMatrix [self .currentNumberOfVertices ][self .currentNumberOfVertices ] = False
15+ self .currentNumberOfVertices += 1
16+
17+ def addEdge (self , start , end ):
18+ self .adjacencyMatrix [start ][end ] = True
19+ self .adjacencyMatrix [end ][start ] = True
20+
21+ def breadthFirstSearch (self ):
22+ queue = Queue ()
23+ v1 = self .vertices [0 ]
24+ print ("Visited : " + v1 .label )
25+ for j in range (self .currentNumberOfVertices ):
26+ if self .adjacencyMatrix [v1 .index ][j ] == True :
27+ self .vertices [j ].inserted = True
28+ queue .enqueue (self .vertices [j ])
29+ v1 .visited = True
30+ while not queue .isEmpty ():
31+ vertex = queue .dequeue ()
32+ vertex .visited = True
33+ print ("Visited : " + vertex .label )
34+ for j in range (self .currentNumberOfVertices ):
35+ if self .adjacencyMatrix [vertex .index ][j ] == True and self .vertices [j ].visited == False and self .vertices [j ].inserted == False :
36+ self .vertices [j ].inserted = True
37+ queue .enqueue (self .vertices [j ])
38+
39+
40+ graph = Graph (10 )
41+
42+ graph .addVertex ("A" )
43+ graph .addVertex ("B" )
44+ graph .addVertex ("C" )
45+ graph .addVertex ("D" )
46+ graph .addVertex ("E" )
47+
48+ graph .addEdge (0 , 1 ) # AB
49+ graph .addEdge (0 , 2 ) # AC
50+ graph .addEdge (0 , 3 ) # AD
51+ graph .addEdge (1 , 2 ) # BC
52+ graph .addEdge (2 , 1 ) # CB
53+ graph .addEdge (2 , 4 ) # CE
54+ graph .addEdge (3 , 4 ) # DE
55+
56+ graph .breadthFirstSearch ()
0 commit comments