SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Inteligência Artificial
“Busca em Largura”
Guilherme Vidal
Murilo Augusto
Rafael Leiva
Vinicius Costa
Definição
● Na teoria dos grafos, busca em largura (ou busca
em amplitude, também conhecido em inglês por
Breadth-First Search (BFS)) é um algoritmo de
busca em grafos utilizado para realizar uma busca
ou travessia num grafo e estrutura de dados do tipo
árvore.
● Intuitivamente, você começa pelo vértice raiz e
explora todos os vértices vizinhos.
● 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.
Formalmente, uma busca em largura é um método de busca
não-informada (ou desinformada) que expande e examina
sistematicamente todos os vértices de um grafo direcionado
ou não-direcionado.
●
O algoritmo realiza uma busca exaustiva num grafo
passando por todas as arestas e vértices do grafo
garantindo que nenhum vértice ou aresta será visitado
mais de uma vez e, para isso, utiliza uma estrutura de
dados fila para garantir a ordem de chegada dos vértices.
●
Realizando as visitas aos vértices através da ordem de
chegada na estrutura fila e um vértice que já foi marcado
não pode retornar a esta estrutura.
Algoritmo
● O algoritmo Território tem um caráter "genérico":  a ordem
em que os vértices saem da lista manipulada pelo algoritmo é
irrelevante.  Já no algoritmo de busca em largura, a lista de
vértices obedece a política FIFO: o vértice que sai da lista é
sempre o que está lá há mais tempo. A lista se comporta,
portanto, como uma fila FIFO.
● O algoritmo pinta de preto todos os vértices do território
de um vértice r.  O código abaixo supõe que os vértices do
dígrafo são  1, 2, … , n  e que os arcos são representados
pelo vetor Adj[1..n] de listas de adjacência.
Algoritmo
Busca-em-Largura (n, Adj, r)
1 para u ← 1 até n faça
2 cor[u] ← branco
3 cor[r] ← cinza
4 F ← Cria-Fila(r)
5 enquanto  F  não está vazia faça
6 u ← Sai-da-Fila(F)
7 para cada v em Adj[u] faça
8 se cor[v] = branco
9 então  cor[v] ← cinza
10 Entra-na-Fila(v, F)
11 cor[u] ← preto
12 devolva  cor[1..n]
Algoritmo
O comando Cria-Fila(r) cria uma fila com um só elemento
igual a r.  O comando Sai-da-Fila(F) retira o primeiro elemento
(ou seja, o elemento mais antigo) da fila F. O comando Entra-
na-Fila(v,F) insere v no fim da fila F.
A fila pode ser implementada, muito simplesmente, em
um vetor F[1..n].  O primeiro elemento da fila será F[i] e o último
será F[f−1].
Algoritmo
A linha 4 do algoritmo (Cria-Fila(r)) consiste simplesmente em
  i ← 1
  f ← 2
  F[1] ← r
a linha 5 do algoritmo (enquanto F não estiver vazia faça) é
traduzida por
  enquanto i < f faça
a linha 6 (u ← Sai-da-Fila( )) é implementada por
  u ← F[i]
  i ← i+1
a linha 10 (Entra-na-Fila(v)) é implementada por
  F[f] ← v
  f ← f+1
Essa implementação da fila jamais sofre overflow, pois cada vértice
do dígrafo entra na fila no máximo uma vez.
Exemplo
Exemplo
As linhas da tabela abaixo dão o estado da fila F[1..6] no
início de sucessivas iterações:  as casas pretas contêm os
vértices que já saíram da fila; as casas cinza representam a
fila propriamente dita.
Complexidade de Tempo
Considerando um grafo representado em listas de
adjacência, o pior caso, aquele em que todos os vértices e
arestas são explorados pelo algoritmo, a complexidade de
tempo pode ser representada pela seguinte expressão:
Onde |E|  significa o tempo total gasto nas operações
sobre todas as arestas do grafo onde cada operação requer
um tempo constante 0(1)  sobre uma aresta, e  |V| que
significa o número de operações sobre todos os vértices que
possui uma complexidade constante 0(1) para cada vértice
uma vez que todo vértice é enfileirado e desinfileirado uma
única vez.
Complexidade de Espaço
●
Quando o número de vértices no grafo é conhecido e
supondo-se a representação deste em listas de
adjacência, a complexidade de espaço do algoritmo pode
ser representada por 0 (|V|)  onde |V|  representa o
número total de vértices no grafo.
Profundidade (d) Nós Tempo Memória
2 1100 0.11 ms 107 KB
4 111.100 11 ms 10.6 MB
6 10 7 1.1 seg 1 GB
8 10 9 2 min 103 GB
10 10 11 3 horas 10 TB
12 10 13 13 dias 1 PB
14 10 15 3.5 anos 99 PB
FIM

Mais conteúdo relacionado

Mais procurados (17)

Séries fourier cap_2 Relações Trigonométricas Elementares
Séries fourier cap_2 Relações Trigonométricas ElementaresSéries fourier cap_2 Relações Trigonométricas Elementares
Séries fourier cap_2 Relações Trigonométricas Elementares
 
Topological Sorting (Portuguese)
Topological Sorting (Portuguese)Topological Sorting (Portuguese)
Topological Sorting (Portuguese)
 
If672cc mp1 sol
If672cc mp1 solIf672cc mp1 sol
If672cc mp1 sol
 
Séries fourier cap_3 Exemplos de Séries de Fourier
Séries fourier cap_3 Exemplos de Séries de FourierSéries fourier cap_3 Exemplos de Séries de Fourier
Séries fourier cap_3 Exemplos de Séries de Fourier
 
Aula 8
Aula   8Aula   8
Aula 8
 
FORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputadorFORTRAN 90 - Representacao numeroscomputador
FORTRAN 90 - Representacao numeroscomputador
 
Flash Cs3 Pratica Action
Flash Cs3 Pratica ActionFlash Cs3 Pratica Action
Flash Cs3 Pratica Action
 
Aula 10
Aula   10Aula   10
Aula 10
 
Complexidade algoritmos
Complexidade algoritmosComplexidade algoritmos
Complexidade algoritmos
 
Aula 9
Aula   9Aula   9
Aula 9
 
04 tese de church-turing
04 tese de church-turing04 tese de church-turing
04 tese de church-turing
 
Sl 2011 2012-teste-2
Sl 2011 2012-teste-2Sl 2011 2012-teste-2
Sl 2011 2012-teste-2
 
Primeira parte
Primeira partePrimeira parte
Primeira parte
 
Redes de petri
Redes de petriRedes de petri
Redes de petri
 
Habilidade h28 definitiva
Habilidade h28 definitivaHabilidade h28 definitiva
Habilidade h28 definitiva
 
Primeira parte
Primeira partePrimeira parte
Primeira parte
 
Apresentação Método de Monte Carlo
Apresentação Método de Monte CarloApresentação Método de Monte Carlo
Apresentação Método de Monte Carlo
 

Destaque

Slideshare
SlideshareSlideshare
SlidesharebUnii
 
Para blog
Para blogPara blog
Para blogamate4
 
Aula 11-eade-i-ii-roteiro-4-missao-jesus
Aula 11-eade-i-ii-roteiro-4-missao-jesusAula 11-eade-i-ii-roteiro-4-missao-jesus
Aula 11-eade-i-ii-roteiro-4-missao-jesusJoyAlbanez
 
Apresentacao de Negocios polishop.com.vc
Apresentacao de Negocios polishop.com.vcApresentacao de Negocios polishop.com.vc
Apresentacao de Negocios polishop.com.vcGRUPONS
 
Plan de nivelación grupo de apoyo BPMS
Plan de nivelación grupo de apoyo BPMSPlan de nivelación grupo de apoyo BPMS
Plan de nivelación grupo de apoyo BPMSjohanainfo
 
Pragramas de practicas sociales
Pragramas de practicas socialesPragramas de practicas sociales
Pragramas de practicas socialesLorenita Lopez
 
Equipe.trocadilho
Equipe.trocadilhoEquipe.trocadilho
Equipe.trocadilhotrocadilho
 
sistema de informacion
sistema de informacionsistema de informacion
sistema de informacionyumilethp
 
Incursion en el entorno educativo
Incursion en el entorno educativoIncursion en el entorno educativo
Incursion en el entorno educativomarianitalliguicota
 
Los mejores jugadores
Los mejores jugadoresLos mejores jugadores
Los mejores jugadoresRenzo Pena
 
INSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMAR
INSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMARINSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMAR
INSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMARLuciano T. Lima
 
Actividades en el agua
Actividades en el aguaActividades en el agua
Actividades en el aguaoscarlamino
 
Tutorial diapositivas prezi
Tutorial diapositivas preziTutorial diapositivas prezi
Tutorial diapositivas preziricolopezg
 

Destaque (20)

Slideshare
SlideshareSlideshare
Slideshare
 
Para blog
Para blogPara blog
Para blog
 
Aula 11-eade-i-ii-roteiro-4-missao-jesus
Aula 11-eade-i-ii-roteiro-4-missao-jesusAula 11-eade-i-ii-roteiro-4-missao-jesus
Aula 11-eade-i-ii-roteiro-4-missao-jesus
 
Apresentacao de Negocios polishop.com.vc
Apresentacao de Negocios polishop.com.vcApresentacao de Negocios polishop.com.vc
Apresentacao de Negocios polishop.com.vc
 
Plan de nivelación grupo de apoyo BPMS
Plan de nivelación grupo de apoyo BPMSPlan de nivelación grupo de apoyo BPMS
Plan de nivelación grupo de apoyo BPMS
 
Pragramas de practicas sociales
Pragramas de practicas socialesPragramas de practicas sociales
Pragramas de practicas sociales
 
Equipe.trocadilho
Equipe.trocadilhoEquipe.trocadilho
Equipe.trocadilho
 
CIGANO LOBO
CIGANO LOBOCIGANO LOBO
CIGANO LOBO
 
Mercado
MercadoMercado
Mercado
 
Trabajando 3
Trabajando 3Trabajando 3
Trabajando 3
 
Olhar 48 abril 2
Olhar 48   abril 2Olhar 48   abril 2
Olhar 48 abril 2
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
sistema de informacion
sistema de informacionsistema de informacion
sistema de informacion
 
Incursion en el entorno educativo
Incursion en el entorno educativoIncursion en el entorno educativo
Incursion en el entorno educativo
 
Los mejores jugadores
Los mejores jugadoresLos mejores jugadores
Los mejores jugadores
 
Método inductivo 3
Método inductivo 3Método inductivo 3
Método inductivo 3
 
INSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMAR
INSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMARINSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMAR
INSPETOR DE ALUNOS FORMAÇÃO DE CADASTRO RESERVA CAJAMAR
 
Actividades en el agua
Actividades en el aguaActividades en el agua
Actividades en el agua
 
Maximiliano
MaximilianoMaximiliano
Maximiliano
 
Tutorial diapositivas prezi
Tutorial diapositivas preziTutorial diapositivas prezi
Tutorial diapositivas prezi
 

Semelhante a Apresentação ia

Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Murilo Adriano Vasconcelos
 
Seminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraSeminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraIFPB
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao OctavePeslPinguim
 
Programando em python tuplas e strings
Programando em python   tuplas e stringsProgramando em python   tuplas e strings
Programando em python tuplas e stringssamuelthiago
 
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallComplexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallLucas Vinícius
 

Semelhante a Apresentação ia (6)

Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
Treinamento Para competições de Programação do INF-UFG - Grafos Parte 1 - Tur...
 
Seminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra LaraSeminário sobre Grafos por Samyra Lara
Seminário sobre Grafos por Samyra Lara
 
Introdução ao Octave
Introdução ao OctaveIntrodução ao Octave
Introdução ao Octave
 
Programando em python tuplas e strings
Programando em python   tuplas e stringsProgramando em python   tuplas e strings
Programando em python tuplas e strings
 
slidesWtisc(1).pptx
slidesWtisc(1).pptxslidesWtisc(1).pptx
slidesWtisc(1).pptx
 
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd WarshallComplexidade do Algoritmo: Caminho mínimo Floyd Warshall
Complexidade do Algoritmo: Caminho mínimo Floyd Warshall
 

Apresentação ia

  • 1. Inteligência Artificial “Busca em Largura” Guilherme Vidal Murilo Augusto Rafael Leiva Vinicius Costa
  • 2. Definição ● Na teoria dos grafos, busca em largura (ou busca em amplitude, também conhecido em inglês por Breadth-First Search (BFS)) é um algoritmo de busca em grafos utilizado para realizar uma busca ou travessia num grafo e estrutura de dados do tipo árvore.
  • 3. ● Intuitivamente, você começa pelo vértice raiz e explora todos os vértices vizinhos. ● 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.
  • 4. Formalmente, uma busca em largura é um método de busca não-informada (ou desinformada) que expande e examina sistematicamente todos os vértices de um grafo direcionado ou não-direcionado. ● O algoritmo realiza uma busca exaustiva num grafo passando por todas as arestas e vértices do grafo garantindo que nenhum vértice ou aresta será visitado mais de uma vez e, para isso, utiliza uma estrutura de dados fila para garantir a ordem de chegada dos vértices. ● Realizando as visitas aos vértices através da ordem de chegada na estrutura fila e um vértice que já foi marcado não pode retornar a esta estrutura.
  • 5. Algoritmo ● O algoritmo Território tem um caráter "genérico":  a ordem em que os vértices saem da lista manipulada pelo algoritmo é irrelevante.  Já no algoritmo de busca em largura, a lista de vértices obedece a política FIFO: o vértice que sai da lista é sempre o que está lá há mais tempo. A lista se comporta, portanto, como uma fila FIFO. ● O algoritmo pinta de preto todos os vértices do território de um vértice r.  O código abaixo supõe que os vértices do dígrafo são  1, 2, … , n  e que os arcos são representados pelo vetor Adj[1..n] de listas de adjacência.
  • 6. Algoritmo Busca-em-Largura (n, Adj, r) 1 para u ← 1 até n faça 2 cor[u] ← branco 3 cor[r] ← cinza 4 F ← Cria-Fila(r) 5 enquanto  F  não está vazia faça 6 u ← Sai-da-Fila(F) 7 para cada v em Adj[u] faça 8 se cor[v] = branco 9 então  cor[v] ← cinza 10 Entra-na-Fila(v, F) 11 cor[u] ← preto 12 devolva  cor[1..n]
  • 7. Algoritmo O comando Cria-Fila(r) cria uma fila com um só elemento igual a r.  O comando Sai-da-Fila(F) retira o primeiro elemento (ou seja, o elemento mais antigo) da fila F. O comando Entra- na-Fila(v,F) insere v no fim da fila F. A fila pode ser implementada, muito simplesmente, em um vetor F[1..n].  O primeiro elemento da fila será F[i] e o último será F[f−1].
  • 8. Algoritmo A linha 4 do algoritmo (Cria-Fila(r)) consiste simplesmente em   i ← 1   f ← 2   F[1] ← r a linha 5 do algoritmo (enquanto F não estiver vazia faça) é traduzida por   enquanto i < f faça a linha 6 (u ← Sai-da-Fila( )) é implementada por   u ← F[i]   i ← i+1 a linha 10 (Entra-na-Fila(v)) é implementada por   F[f] ← v   f ← f+1 Essa implementação da fila jamais sofre overflow, pois cada vértice do dígrafo entra na fila no máximo uma vez.
  • 10. Exemplo As linhas da tabela abaixo dão o estado da fila F[1..6] no início de sucessivas iterações:  as casas pretas contêm os vértices que já saíram da fila; as casas cinza representam a fila propriamente dita.
  • 11. Complexidade de Tempo Considerando um grafo representado em listas de adjacência, o pior caso, aquele em que todos os vértices e arestas são explorados pelo algoritmo, a complexidade de tempo pode ser representada pela seguinte expressão: Onde |E|  significa o tempo total gasto nas operações sobre todas as arestas do grafo onde cada operação requer um tempo constante 0(1)  sobre uma aresta, e  |V| que significa o número de operações sobre todos os vértices que possui uma complexidade constante 0(1) para cada vértice uma vez que todo vértice é enfileirado e desinfileirado uma única vez.
  • 12. Complexidade de Espaço ● Quando o número de vértices no grafo é conhecido e supondo-se a representação deste em listas de adjacência, a complexidade de espaço do algoritmo pode ser representada por 0 (|V|)  onde |V|  representa o número total de vértices no grafo. Profundidade (d) Nós Tempo Memória 2 1100 0.11 ms 107 KB 4 111.100 11 ms 10.6 MB 6 10 7 1.1 seg 1 GB 8 10 9 2 min 103 GB 10 10 11 3 horas 10 TB 12 10 13 13 dias 1 PB 14 10 15 3.5 anos 99 PB
  • 13. FIM