Skip to content

Commit 4e55b0a

Browse files
committed
Bugfix and minor changes.
1 parent 78ea063 commit 4e55b0a

File tree

1 file changed

+31
-18
lines changed

1 file changed

+31
-18
lines changed

src/python/busca_em_grafo.py

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
# Bruno Dantas de Paiva - 2021
33
# https://github.com/DantasB
44

5+
from collections import deque
6+
7+
58
class Grafo():
69
"""Define um grafo utilizando matriz de adjacências.
710
@@ -37,43 +40,53 @@ def __adiciona_aresta(self, u: int, v: int) -> None:
3740
if u not in self.adj[v]:
3841
self.adj[v].append(u)
3942

40-
def bfs(self, u: int) -> list:
43+
def bfs(self, start: int) -> list:
4144
"""Executa a busca em largura a partir do vértice u
4245
4346
Args:
44-
u (int): vértice u
47+
start (int): vértice start
4548
4649
Returns:
4750
list: lista com a ordem de vértices visitados
4851
"""
49-
visitados, fila = [], [u]
52+
fila = deque()
53+
fila.append(start)
54+
visitados = []
55+
visitados.append(start)
56+
5057
while fila:
51-
vertice = fila.pop(0)
52-
if vertice not in visitados:
53-
visitados.append(vertice)
54-
for element in self.adj[vertice]:
55-
if element not in visitados:
56-
fila.append(element)
58+
u = fila.popleft()
59+
60+
for v in self.adj[u]:
61+
if v not in visitados:
62+
fila.append(v)
63+
visitados.append(v)
5764

5865
return visitados
5966

60-
def dfs(self, u: int) -> list:
67+
def dfs(self, start: int) -> list:
6168
"""Executa a busca em profundidade a partir do vértice u
6269
6370
Args:
64-
u (int): vértice u
71+
start (int): vértice start
6572
6673
Returns:
6774
list: lista com a ordem de vértices visitados
6875
"""
6976
visitados = []
70-
falta_visitar = [u]
71-
while falta_visitar:
72-
vertice = falta_visitar.pop()
73-
for vizinho in self.adj[vertice]:
74-
if vizinho not in visitados:
75-
visitados.append(vizinho)
76-
falta_visitar.append(vizinho)
77+
visitados.append(start)
78+
pilha = [start]
79+
80+
while pilha:
81+
u = pilha.pop()
82+
83+
if u not in visitados:
84+
visitados.append(u)
85+
86+
for v in self.adj[u]:
87+
if v not in visitados:
88+
pilha.append(v)
89+
7790
return visitados
7891

7992

0 commit comments

Comments
 (0)