Skip to content

Commit 3770551

Browse files
DFS & BFS in graph
1 parent 325deda commit 3770551

File tree

2 files changed

+57
-68
lines changed

2 files changed

+57
-68
lines changed

Graphs/Breadth_First_Search.py

+32-42
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,35 @@
1-
class Graph:
1+
class GRAPH:
2+
"""docstring for GRAPH"""
3+
def __init__(self, nodes):
4+
self.nodes=nodes
5+
self.graph=[[0]*nodes for i in range (nodes)]
6+
self.visited=[0]*nodes
27

3-
def __init__(self, vertex):
4-
self.vertex = vertex
5-
self.graph = [[0] * vertex for i in range(vertex) ]
6-
7-
def add_edge(self, u, v):
8-
self.graph[u - 1][v - 1] = 1
9-
self.graph[v - 1][u - 1] = 1
108

119
def show(self):
12-
13-
for i in self.graph:
14-
for j in i:
15-
print(j, end=' ')
16-
print(' ')
17-
def bfs(self,v):
18-
19-
visited = [False]*self.vertex
20-
visited[v - 1] = True
21-
print('%d visited' % (v))
22-
23-
queue = [v - 1]
24-
while len(queue) > 0:
25-
v = queue[0]
26-
for u in range(self.vertex):
27-
if self.graph[v][u] == 1:
28-
if visited[u]== False:
29-
visited[u] = True
30-
queue.append(u)
31-
print('%d visited' % (u +1))
32-
queue.pop(0)
33-
34-
g = Graph(10)
35-
36-
g.add_edge(1,2)
37-
g.add_edge(1,3)
38-
g.add_edge(1,4)
39-
g.add_edge(2,5)
40-
g.add_edge(3,6)
41-
g.add_edge(3,7)
42-
g.add_edge(4,8)
43-
g.add_edge(5,9)
44-
g.add_edge(6,10)
45-
g.bfs(1)
10+
print self.graph
11+
12+
def add_edge(self, i, j):
13+
self.graph[i][j]=1
14+
self.graph[j][i]=1
15+
16+
def bfs(self,s):
17+
queue=[s]
18+
while len(queue)!=0:
19+
x=queue.pop(0)
20+
print(x)
21+
self.visited[x]=1
22+
for i in range(0,self.nodes):
23+
if self.graph[x][i]==1 and self.visited[i]==0:
24+
queue.append(i)
25+
self.visited[i]=1
26+
27+
n=int(input("Enter the number of Nodes : "))
28+
g=GRAPH(n)
29+
e=int(input("Enter the no of edges : "))
30+
print("Enter the edges (u v)")
31+
for i in range(0,e):
32+
u,v=map(int, raw_input().split())
33+
g.add_edge(u,v)
34+
s=int(input("Enter the source node :"))
35+
g.bfs(s)

Graphs/Deep_First_Search.py

+25-26
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,32 @@
1-
class Graph:
1+
class GRAPH:
2+
"""docstring for GRAPH"""
3+
def __init__(self, nodes):
4+
self.nodes=nodes
5+
self.graph=[[0]*nodes for i in range (nodes)]
6+
self.visited=[0]*nodes
27

3-
def __init__(self, vertex):
4-
self.vertex = vertex
5-
self.graph = [[0] * vertex for i in range(vertex) ]
6-
self.visited = [False] * vertex
78

8-
def add_edge(self, u, v):
9-
self.graph[u - 1][v - 1] = 1
10-
self.graph[v - 1][u - 1] = 1
119
def show(self):
10+
print self.graph
1211

13-
for i in self.graph:
14-
for j in i:
15-
print(j, end=' ')
16-
print(' ')
12+
def add_edge(self, i, j):
13+
self.graph[i][j]=1
14+
self.graph[j][i]=1
1715

18-
19-
def dfs(self, u):
20-
self.visited[u - 1] = True
21-
print('%d visited' % u)
22-
for i in range(1, self.vertex + 1):
23-
if self.graph[u - 1][i - 1] == 1 and self.visited[i - 1] == False:
16+
def dfs(self,s):
17+
self.visited[s]=1
18+
print(s)
19+
for i in range(0,self.nodes):
20+
if self.visited[i]==0 and self.graph[s][i]==1:
2421
self.dfs(i)
22+
2523

26-
27-
g = Graph(5)
28-
g.add_edge(1,4)
29-
g.add_edge(4,2)
30-
g.add_edge(4,5)
31-
g.add_edge(2,5)
32-
g.add_edge(5,3)
33-
g.dfs(1)
24+
n=int(input("Enter the number of Nodes : "))
25+
g=GRAPH(n)
26+
e=int(input("Enter the no of edges : "))
27+
print("Enter the edges (u v)")
28+
for i in range(0,e):
29+
u,v=map(int, raw_input().split())
30+
g.add_edge(u,v)
31+
s=int(input("Enter the source node :"))
32+
g.dfs(s)

0 commit comments

Comments
 (0)