Breadth_First_Search

This commit is contained in:
Francisco Matias 2017-06-22 20:15:03 -03:00
parent 285720f76d
commit 494e7f55ec
2 changed files with 46 additions and 3 deletions

View File

@ -0,0 +1,45 @@
class Graph:
def __init__(self, vertex):
self.vertex = vertex
self.graph = [[0] * vertex for i in range(vertex) ]
def add_edge(self, u, v):
self.graph[u - 1][v - 1] = 1
self.graph[v - 1][u - 1] = 1
def show(self):
for i in self.graph:
for j in i:
print(j, end=' ')
print(' ')
def bfs(self,v):
visited = [False]*self.vertex
visited[v - 1] = True
print('%d visited' % (v))
queue = [v - 1]
while len(queue) > 0:
v = queue[0]
for u in range(self.vertex):
if self.graph[v][u] == 1:
if visited[u]== False:
visited[u] = True
queue.append(u)
print('%d visited' % (u +1))
queue.pop(0)
g = Graph(10)
g.add_edge(1,2)
g.add_edge(1,3)
g.add_edge(1,4)
g.add_edge(2,5)
g.add_edge(3,6)
g.add_edge(3,7)
g.add_edge(4,8)
g.add_edge(5,9)
g.add_edge(6,10)
g.bfs(1)

View File

@ -8,7 +8,6 @@ class Graph:
def add_edge(self, u, v): def add_edge(self, u, v):
self.graph[u - 1][v - 1] = 1 self.graph[u - 1][v - 1] = 1
self.graph[v - 1][u - 1] = 1 self.graph[v - 1][u - 1] = 1
def show(self): def show(self):
for i in self.graph: for i in self.graph:
@ -26,10 +25,9 @@ class Graph:
g = Graph(5) g = Graph(5)
g.add_edge(1,4) g.add_edge(1,4)
g.add_edge(4,2) g.add_edge(4,2)
g.add_edge(4,5) g.add_edge(4,5)
g.add_edge(2,5) g.add_edge(2,5)
g.add_edge(5,3) g.add_edge(5,3)
print(g.dfs(1)) g.dfs(1)