@@ -10,6 +10,9 @@ class Graph:
10
10
def __init__ (self , adjacency_matrix , num_vertices ):
11
11
self .adj_mat = adjacency_matrix
12
12
self .v = num_vertices
13
+ self .visited = np .zeros (self .v )
14
+ self .steps_taken = - 1 * np .ones (self .v )
15
+ self .steps = 0
13
16
14
17
def is_adjacent (self , v1 , v2 ):
15
18
return self .adj_mat [v1 , v2 ]
@@ -42,13 +45,40 @@ def add_edges(self, edges):
42
45
j = edge [1 ]
43
46
self .adj_mat [i ][j ] = self .adj_mat [j ][i ] = 1
44
47
48
+ def neighbour (self , vertex ):
49
+ return np .nonzero (self .adj_mat [vertex ])[0 ]
50
+
51
+ def dfs (self , start ):
52
+ print ("at vertex" , start )
53
+ if self .visited [start ]:
54
+ print ("Already visited" )
55
+ return
56
+
57
+ print ("mark as visited" )
58
+ # Mark current cell as visited
59
+ self .visited [start ] = True
60
+ self .steps_taken [start ] = self .steps
61
+ self .steps += 1
62
+ print (self .visited )
63
+
64
+ # Visit every neighbouring cell
65
+ for cell in self .neighbour (start ):
66
+ self .dfs (cell )
67
+
45
68
46
69
47
70
# Test Graph class
48
71
# t1 = Graph([[1,1,1,0],[1,1,0,0],[1,0,1,0],[0,0,0,1]], 4)
49
72
# print(t1.find_num_islands())
50
73
51
- # t2 = Graph(np.zeros((6,6)),6)
52
- # edges = [[0,5],[2,4],[2,3],[3,4]]
53
- # t2.add_edges(edges)
54
- # print(t2.find_num_islands())
74
+ def test2 ():
75
+ t2 = Graph (np .zeros ((6 ,6 )),6 )
76
+ edges = [[0 ,5 ],[2 ,4 ],[2 ,3 ],[3 ,4 ]]
77
+ t2 .add_edges (edges )
78
+ print ("Num islands:" , t2 .find_num_islands ())
79
+ print ("Neighbours of vertex 0" , t2 .neighbour (0 ))
80
+ print ("Neighbours of vertex 3" , t2 .neighbour (3 ))
81
+ t2 .dfs (2 )
82
+ print (t2 .steps_taken )
83
+
84
+ # test2()
0 commit comments