SlideShare uma empresa Scribd logo
1 de 23
Mario
Rafael Coelho
Mauricio
Atila
BUSCA EM LARGURA
(BREADTH-FIRST
SEARCH)
INTRODUÇÃO
É um algoritmo
que recupera
informações
armazenadas
dentro de
alguma
estrutura de
dados.
DEFINIÇÃO
DE
ALGORITM
O DE
BUSCA
EXEMPLOS DE ALGORITMOS DE BUSCA
Busca Sequencial
Busca Binária
Busca em
profundidade
Busca em Largura
A*
Dijkstra
 É um conjunto de
vértices e um conjunto
de arestas que
conectam qualquer
par de vértices.
ESTRUTURA DE DADOS: GRAFO
Busca em largura é um algoritmo de busca
em grafos utilizado para realizar uma busca
ou travesia num grafo e estrutura de dados do
tipo árvore. Intuitivamente, você começa pelo
vértice raiz e explora todos os vértices vizinhos.
Então, para cada um desses vértices mais
próximos, exploramos os seus vértices vizinhos
inexplorados e assim por diante, até que ele
encontre o alvo da busca. Em outras palavras,
podemos dizer que o algoritmo realiza uma
busca exaustiva num grafo passando por todas
as arestas e vértices do grafo.
ALGORITMO BUSCA EM LARGURA
CLASSE GRAFO
def __init__(self, name_='', directed=False,
copy_of=None):
if isinstance(copy_of, Graph):
self.copy(copy_of)
else:
self.name = name_
self.nodes = {}
self.directed = directed
def getWeight(self, n1, n2):
if n1 in self and n2 in self:
if n2 in self.nodes[n1]:
return self.nodes[n1][n2]
elif n1 == n2:
return 0
return float("inf")
return False
def addEdge(self, n1, n2, weight=1):
if not n1 in self.nodes:
self.nodes[n1] = {}
self.nodes[n1][n2] = weight
if self.directed is False:
if not n2 in self.nodes:
self.nodes[n2] = {}
self.nodes[n2][n1] = weight
def add(self, n, G = None):
if not n in self:
self.nodes[n] = {}
if G:
if n in G:
self.nodes[n]= G.getEdges(n)
ALGORITMO BFS
BUSCA EM LARGURA
É um algoritmo de
busca em grafos
utilizado para
realizar uma busca
ou travessia num
grafo e estrutura de
dados do tipo
árvore.
A ideia é começar
pelo vértice raiz e
explora todos os
vértices vizinhos.
Então, para cada um
desses vértices mais
próximos, exploramos
os seus vértices
vizinhos inexplorados
e assim por diante,
até que ele encontre
o alvo da busca.
BUSCA EM LARGURA
Realiza uma busca
exaustiva num grafo
passando por todas
as arestas e vértices
do grafo.
Deve garantir que
nenhum vértice ou
aresta será visitado
mais de uma vez,
então utiliza uma
fila para tal.
BUSCA EM LARGURA
Cinza = esta na
fila
Preto = já foi
inspecionado
Complexidade de
tempo: O(|E| + |V|).
Complexidade de
espaço: O(|V|)
Sendo |E| = arestas
Sendo |V| = vértices
BUSCA EM LARGURA
 Legenda:
 F - Fila(FIFO)
 G - Grafo
 s, v, w representam vértices do grafo onde listDeAdja
representa a lista de adjacência de um vértice
BUSCA EM LARGURA
BuscaEmLargura
escolha uma raiz s de G
marque s
insira s em F
enquanto F não está vazia faça
veja v o primeiro vértice de F
para cada w ∈ listaDeAdja de v faça
se w não está marcado então
visite aresta entre v e w
marque w
insira w em F
senão se w ∈ F então
visite aresta entre v e w
fim se
fim para
retira v de F
fim enquanto
CÓDIGO PYTHON
def bfs (self,raiz):
fila = []
vertMarcados = []
tamVertMarcados = 0
vertMarcados.append(raiz)
tamVertMarcados += 1
fila.append(raiz)
while(len(fila)>0):
vert1 = fila[0]
listaAdj = self.getEdges(vert1)
for i in listaAdj:
if(i not in vertMarcados):
vertMarcados.append(i)
tamVertMarcados += 1
fila.append(i)
fila.pop(0)
Rafael Coelho:
20151015020304
Átila Bastos:
20151015020045
Mário Matheus:
20151015020240
Maurício Torquato:
20151015020274
OBRIGADO!

Mais conteúdo relacionado

Mais procurados

O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetosNécio de Lima Veras
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasLeinylson Fontinele
 
Representação da Informação
Representação da InformaçãoRepresentação da Informação
Representação da InformaçãoHercules Santos
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Vitor Hugo Melo Araújo
 
Bases de Dados - Conceitos introdutórios
Bases de Dados - Conceitos introdutóriosBases de Dados - Conceitos introdutórios
Bases de Dados - Conceitos introdutóriosClara Ferreira
 
Redes de computadores 2 - Aula 6 - DNS, DHCP
Redes de computadores 2 - Aula 6 - DNS, DHCPRedes de computadores 2 - Aula 6 - DNS, DHCP
Redes de computadores 2 - Aula 6 - DNS, DHCPCleber Fonseca
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFSMarcos Castro
 
Matéria de apoio (Base de dados)
Matéria de apoio  (Base de dados)Matéria de apoio  (Base de dados)
Matéria de apoio (Base de dados)André Silva
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADLeinylson Fontinele
 
Relational algebra in DBMS
Relational algebra in DBMSRelational algebra in DBMS
Relational algebra in DBMSArafat Hossan
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadoresLucasMansueto
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoLeinylson Fontinele
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
Big Data, o que é isso?
Big Data, o que é isso?Big Data, o que é isso?
Big Data, o que é isso?Ambiente Livre
 

Mais procurados (20)

O paradigma da orientação a objetos
O paradigma da orientação a objetosO paradigma da orientação a objetos
O paradigma da orientação a objetos
 
Estrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas EstáticasEstrutura de Dados - Aula 04 - Listas Estáticas
Estrutura de Dados - Aula 04 - Listas Estáticas
 
Representação da Informação
Representação da InformaçãoRepresentação da Informação
Representação da Informação
 
Árvores Rubro Negra
Árvores Rubro NegraÁrvores Rubro Negra
Árvores Rubro Negra
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 
Bases de Dados - Conceitos introdutórios
Bases de Dados - Conceitos introdutóriosBases de Dados - Conceitos introdutórios
Bases de Dados - Conceitos introdutórios
 
Sistemas e redes de informação
Sistemas e redes de informaçãoSistemas e redes de informação
Sistemas e redes de informação
 
Redes de computadores 2 - Aula 6 - DNS, DHCP
Redes de computadores 2 - Aula 6 - DNS, DHCPRedes de computadores 2 - Aula 6 - DNS, DHCP
Redes de computadores 2 - Aula 6 - DNS, DHCP
 
Busca em largura - BFS
Busca em largura - BFSBusca em largura - BFS
Busca em largura - BFS
 
Matéria de apoio (Base de dados)
Matéria de apoio  (Base de dados)Matéria de apoio  (Base de dados)
Matéria de apoio (Base de dados)
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Aula 9 banco de dados
Aula 9   banco de dadosAula 9   banco de dados
Aula 9 banco de dados
 
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TADEstrutura de Dados - Aula 02 - Estrutura de Dados e TAD
Estrutura de Dados - Aula 02 - Estrutura de Dados e TAD
 
Aula - Aspectos Avançados em Modelagem Multidimensional
Aula - Aspectos Avançados em Modelagem MultidimensionalAula - Aspectos Avançados em Modelagem Multidimensional
Aula - Aspectos Avançados em Modelagem Multidimensional
 
Relational algebra in DBMS
Relational algebra in DBMSRelational algebra in DBMS
Relational algebra in DBMS
 
Arquitetura paralela
Arquitetura paralelaArquitetura paralela
Arquitetura paralela
 
Aula 5 - Redes de computadores
Aula 5 - Redes de computadoresAula 5 - Redes de computadores
Aula 5 - Redes de computadores
 
Banco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e EspecializaçãoBanco de Dados I Aula 06 - Generalização e Especialização
Banco de Dados I Aula 06 - Generalização e Especialização
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
Big Data, o que é isso?
Big Data, o que é isso?Big Data, o que é isso?
Big Data, o que é isso?
 

Destaque

Árvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoÁrvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoGustavo Chaves
 
Arvorepatricia 170306194806
Arvorepatricia 170306194806Arvorepatricia 170306194806
Arvorepatricia 170306194806ronaldo ramos
 
Fundamentos da física i halliday & resnick - 9ª ed - mecânica - portugu...
Fundamentos da física i   halliday & resnick - 9ª ed - mecânica - portugu...Fundamentos da física i   halliday & resnick - 9ª ed - mecânica - portugu...
Fundamentos da física i halliday & resnick - 9ª ed - mecânica - portugu...Géssica Souza
 
30 mentiras mais contadas
30 mentiras mais contadas30 mentiras mais contadas
30 mentiras mais contadasLucio Borges
 
Technology Safety - Mariners Elementary
Technology Safety - Mariners Elementary Technology Safety - Mariners Elementary
Technology Safety - Mariners Elementary Scott Burnett
 
Employee state insurance act 1948
Employee state insurance act 1948Employee state insurance act 1948
Employee state insurance act 1948Aamir Naje
 
Arquitectura
ArquitecturaArquitectura
Arquitecturasubsuelo
 
Make in India Campaign: A Role and Impact of Human Resource Valuation
Make in India Campaign: A Role and Impact of Human Resource ValuationMake in India Campaign: A Role and Impact of Human Resource Valuation
Make in India Campaign: A Role and Impact of Human Resource ValuationTapasya123
 
Novel approaches to optomechanical transduction
Novel approaches to optomechanical transductionNovel approaches to optomechanical transduction
Novel approaches to optomechanical transductionOndrej Cernotik
 
Lmcp 1532 pembangunan bandar mapan
Lmcp 1532 pembangunan bandar mapanLmcp 1532 pembangunan bandar mapan
Lmcp 1532 pembangunan bandar mapanadila3105
 

Destaque (20)

Árvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenaçãoÁrvore b+ pesquisa e ordenação
Árvore b+ pesquisa e ordenação
 
Árvore B
Árvore BÁrvore B
Árvore B
 
Árvores Rubro Negras
Árvores Rubro NegrasÁrvores Rubro Negras
Árvores Rubro Negras
 
Árvores balanceadas - AVL
Árvores balanceadas - AVLÁrvores balanceadas - AVL
Árvores balanceadas - AVL
 
Tabelas hash
Tabelas hashTabelas hash
Tabelas hash
 
Apresentação árvore 2 3 4
Apresentação árvore 2 3 4Apresentação árvore 2 3 4
Apresentação árvore 2 3 4
 
Arvorepatricia 170306194806
Arvorepatricia 170306194806Arvorepatricia 170306194806
Arvorepatricia 170306194806
 
Fundamentos da física i halliday & resnick - 9ª ed - mecânica - portugu...
Fundamentos da física i   halliday & resnick - 9ª ed - mecânica - portugu...Fundamentos da física i   halliday & resnick - 9ª ed - mecânica - portugu...
Fundamentos da física i halliday & resnick - 9ª ed - mecânica - portugu...
 
Fotos inducción y reinducción 2017
Fotos inducción y reinducción 2017Fotos inducción y reinducción 2017
Fotos inducción y reinducción 2017
 
30 mentiras mais contadas
30 mentiras mais contadas30 mentiras mais contadas
30 mentiras mais contadas
 
Technology Safety - Mariners Elementary
Technology Safety - Mariners Elementary Technology Safety - Mariners Elementary
Technology Safety - Mariners Elementary
 
Sector servicios
Sector serviciosSector servicios
Sector servicios
 
Employee state insurance act 1948
Employee state insurance act 1948Employee state insurance act 1948
Employee state insurance act 1948
 
Prezentatsia1 1
Prezentatsia1 1Prezentatsia1 1
Prezentatsia1 1
 
Task 2 PBM
Task 2 PBMTask 2 PBM
Task 2 PBM
 
Arquitectura
ArquitecturaArquitectura
Arquitectura
 
Make in India Campaign: A Role and Impact of Human Resource Valuation
Make in India Campaign: A Role and Impact of Human Resource ValuationMake in India Campaign: A Role and Impact of Human Resource Valuation
Make in India Campaign: A Role and Impact of Human Resource Valuation
 
Novel approaches to optomechanical transduction
Novel approaches to optomechanical transductionNovel approaches to optomechanical transduction
Novel approaches to optomechanical transduction
 
Mujer
MujerMujer
Mujer
 
Lmcp 1532 pembangunan bandar mapan
Lmcp 1532 pembangunan bandar mapanLmcp 1532 pembangunan bandar mapan
Lmcp 1532 pembangunan bandar mapan
 

Busca em largura (breadth first search)

  • 1. Mario Rafael Coelho Mauricio Atila BUSCA EM LARGURA (BREADTH-FIRST SEARCH)
  • 3. É um algoritmo que recupera informações armazenadas dentro de alguma estrutura de dados. DEFINIÇÃO DE ALGORITM O DE BUSCA
  • 4. EXEMPLOS DE ALGORITMOS DE BUSCA Busca Sequencial Busca Binária Busca em profundidade Busca em Largura A* Dijkstra
  • 5.  É um conjunto de vértices e um conjunto de arestas que conectam qualquer par de vértices. ESTRUTURA DE DADOS: GRAFO
  • 6. Busca em largura é um algoritmo de busca em grafos utilizado para realizar uma busca ou travesia num grafo e estrutura de dados do tipo árvore. Intuitivamente, você começa pelo vértice raiz e explora todos os vértices vizinhos. Então, para cada um desses vértices mais próximos, exploramos os seus vértices vizinhos inexplorados e assim por diante, até que ele encontre o alvo da busca. Em outras palavras, podemos dizer que o algoritmo realiza uma busca exaustiva num grafo passando por todas as arestas e vértices do grafo. ALGORITMO BUSCA EM LARGURA
  • 8. def __init__(self, name_='', directed=False, copy_of=None): if isinstance(copy_of, Graph): self.copy(copy_of) else: self.name = name_ self.nodes = {} self.directed = directed
  • 9. def getWeight(self, n1, n2): if n1 in self and n2 in self: if n2 in self.nodes[n1]: return self.nodes[n1][n2] elif n1 == n2: return 0 return float("inf") return False
  • 10. def addEdge(self, n1, n2, weight=1): if not n1 in self.nodes: self.nodes[n1] = {} self.nodes[n1][n2] = weight if self.directed is False: if not n2 in self.nodes: self.nodes[n2] = {} self.nodes[n2][n1] = weight
  • 11. def add(self, n, G = None): if not n in self: self.nodes[n] = {} if G: if n in G: self.nodes[n]= G.getEdges(n)
  • 13. BUSCA EM LARGURA É um algoritmo de busca em grafos utilizado para realizar uma busca ou travessia num grafo e estrutura de dados do tipo árvore.
  • 14. A ideia é começar pelo vértice raiz e explora todos os vértices vizinhos. Então, para cada um desses vértices mais próximos, exploramos os seus vértices vizinhos inexplorados e assim por diante, até que ele encontre o alvo da busca. BUSCA EM LARGURA
  • 15. Realiza uma busca exaustiva num grafo passando por todas as arestas e vértices do grafo. Deve garantir que nenhum vértice ou aresta será visitado mais de uma vez, então utiliza uma fila para tal. BUSCA EM LARGURA
  • 16. Cinza = esta na fila Preto = já foi inspecionado
  • 17. Complexidade de tempo: O(|E| + |V|). Complexidade de espaço: O(|V|) Sendo |E| = arestas Sendo |V| = vértices BUSCA EM LARGURA
  • 18.  Legenda:  F - Fila(FIFO)  G - Grafo  s, v, w representam vértices do grafo onde listDeAdja representa a lista de adjacência de um vértice BUSCA EM LARGURA
  • 19. BuscaEmLargura escolha uma raiz s de G marque s insira s em F enquanto F não está vazia faça veja v o primeiro vértice de F para cada w ∈ listaDeAdja de v faça se w não está marcado então visite aresta entre v e w marque w insira w em F senão se w ∈ F então visite aresta entre v e w fim se fim para retira v de F fim enquanto
  • 21. def bfs (self,raiz): fila = [] vertMarcados = [] tamVertMarcados = 0 vertMarcados.append(raiz) tamVertMarcados += 1 fila.append(raiz)
  • 22. while(len(fila)>0): vert1 = fila[0] listaAdj = self.getEdges(vert1) for i in listaAdj: if(i not in vertMarcados): vertMarcados.append(i) tamVertMarcados += 1 fila.append(i) fila.pop(0)
  • 23. Rafael Coelho: 20151015020304 Átila Bastos: 20151015020045 Mário Matheus: 20151015020240 Maurício Torquato: 20151015020274 OBRIGADO!