SlideShare uma empresa Scribd logo
1 de 21
Baixar para ler offline
Breadth First Heuristic Search

Fábio Pisaruk
MAC-425 Inteligência Artificial

9/26/2007
Introdução

Breadth First Heuristic Search é um
algoritmo de busca em grafos nãodirigidos, baseado na busca em largura,
utilizando divisão-e-conquista na
reconstrução da resposta e, listas de nós,
gerados e visitados, mais compactas.
9/26/2007
Comparação entre os contornos de buscas
Best-First e Breadth-First
Contorno definido pela heurística
aplicada na expansão dos nós.

i
n
í
c
i
o
Breadth-First
9/26/2007

m
e
t
a

Best-First
Contorno e fronteira
interior

i
n
í
c
i
o

m
e
t
a
contorno
fronteira

9/26/2007
Revisão: Busca em largura
C

B
OpenList : {A},ClosedList : {}
OpenList : {B,C},ClosedList : {A}
OpenList : {C,E,F},ClosedList : {A,B}
OpenList : {E,F,D},ClosedList : {A,B,C}
OpenList : {F,D,I},ClosedList : {A,B,C,E}
OpenList : {D,I},ClosedList : {A,B,C,E,F}
OpenList
9/26/2007 : {I,G},ClosedList : {A,B,C,E,F,D}
OpenList : {G,J},ClosedList : {A,B,C,E,F,D,I}

G

E

A

D

I

F

J

B
Cont...
A busca em largura utiliza duas listas, a fim de
evitar expansões de nós repetidos:
● OpenList : nós gerados e não expandidos
● ClosedList: nós já expandidos.
Cada nó possui um ponteiro para o seu
antecessor, de modo que a resposta possa ser
obtida caminhando-se do nó meta ao nó origem
através destes ponteiros.
9/26/2007
Problemas
● Para muitos problemas práticos a lista de
nós expandidos(ClosedList) pode se
tornar muito grande.
● A busca gera muitos nós que não têm a
menor chance de fazer parte da solução.

9/26/2007
Questões
● Será que precisamos guardar todos os
nós expandidos a fim de evitar
repetições?
● É possível evitar a geração de nós que
não farão parte da solução?

9/26/2007
Questões...
Se quisermos evitar repetições e, ao mesmo
tempo, sermos capazes de construir a resposta,
através dos ponteiros de antecessores, a
resposta é não.
Mas, se quisermos apenas um dos dois, a
resposta é sim.
Para evitar a geração de nós que, com certeza,
não farão parte da solução, podemos podá-los
através do uso de heurísticas.
9/26/2007
Solução
Manter uma closedList mais compacta, com o custo de
não ser mais possível a geração da resposta através dos
ponteiros para os nós antecessores.
Na verdade, manteremos diversas closedLists/openLists,
uma para cada nível da expansão da busca.
Lembre-se que a busca em largura funciona expandindose todos os nós de um certo nível, colocando os nós
gerados na openList e os nós expandidos na closedList.

9/26/2007
Busca em largura com listas por camada
C

G

E

A

D

I

F

J

B
OpenList[0] :{A},ClosedList[0]={}
OpenList[0] :{},OpenList[1]:{B,C},ClosedList[0] : {A}
OpenList[1]: {C},OpenList[2]:{E,F},ClosedList[1] : {B}
OpenList[1]: {},OpenList[2]:{E,F,D},ClosedList[1] : {B,C}
OpenList[2]: {F,D},OpenList[3]:{I},ClosedList[2] : {E}
OpenList[2]: {D},OpenList[3]:{I},ClosedList[2] : {E,F}
OpenList[2]: {},OpenList[3]:{I,G},ClosedList[2] : {E,F,D}
9/26/2007
OpenList[3]: {G},OpenList[4]:{L,J},ClosedList[3] : {I}

L
Quais listas devemos manter?
Localidade de uma busca em largura num grafo:
max {g*(n) – g*(n') , 0}
n,n' : nós do grafo
n' pertence aos predecessores de n.
g*(x) : comprimento do menor caminho até o no x, ou, a primeira
camada em que o nó x aparece durante a busca
Teorema: Número de camadas closedList necessárias a fim de
evitar repetições é igual à localidade do grafo.
Calcular localidade não é simples no caso geral.
Corolário: Grafos não-dirigidos possuem localidade igual a um.
Pelo corolário acima, observamos que armazenar somente a
camada imediatamente anterior é suficiente para evitar repetições.
9/26/2007
Listas mantidas
Em cada instante t teremos as seguintes listas :
● closedList[l]
● closedList[l-1]
● closedList[0]
● closedList[relay]
● openList[l]
● openList[l+1]
Onde l é a camada sendo expandida no instante t e relay
é uma camada intermediária.
9/26/2007
Como reconstruir a resposta?
Uma vez que não mais armazenamos
todos os nós já expandidos, não podemos
utilizar os ponteiros de nós antecessores
para construir a resposta.
Usaremos uma estratégia de divisão-econquista para gerar respostas aos
subproblemas que, concatenados, formam
a solução.
9/26/2007
Simulação(upperBound=4, relay=2)
C

B

G

E

A

D

I

F

J

Open[0] :{A},Closed[0]={}
Open[0] :{},Open[1]:{B,C},Closed[0] : {A}
Open[1]: {C},Open[2]:{E,F},Closed[1] : {B},Closed[0] : {A}
Open[1]: {},Open[2]:{E,F,D},Closed[1] : {B,C},Closed[0] : {A}
Open[2]: {F,D},Open[3]:{I},Closed[2] : {E},Closed[1] : {B,C},Closed[0] : {A}
Open[2]: {D},Open[3]:{I},Closed[2] : {E,F},Closed[1] : {B,C},Closed[0] : {A}
Open[2]: {},Open[3]:{I,G},Closed[2] : {E,F,D},Closed[0] : {A}
9/26/2007
Open[3]: {G},Open[4]:{L,J},Closed[3] : {I}

L
Simulação...
Camada
Relay

ClosedList[l1]

Gap 1
Gap 2
9/26/2007

ClosedList[l]
Reconstrução da solução através de
divisão-e-conquista
Uma vez que o estado meta é alcançado,
precisamos reconstruir a solução
completa.
Devido aos gaps, isso é não é possível.
Aplicamos então o algoritmo BFHS
recursivamente nos dois gaps,
concatenado as soluções encontradas
para os subproblemas.
9/26/2007
Implementação
Implementamos o algoritmo BHFS e o aplicamos ao problema
ReguaPuzzle.
Alguns detalhes:
● custo de cada operação deve ser unitário
● é preciso definir um limite superior*
● camada relay divide o problema em dois subproblemas,
aproximadamente de mesmo custo.
● o grafo de estados do ReguaPuzzle não é dirigido
● desconsideramos heuríticas na expansão dos nós**
● subproblemas têm limites superiores inferiores aos dos
problemas decompostos(limites justos).
(*) utilizamos um limite inferior que é incrementado até que uma solução seja
encontrada.
(**) as heurísticas estavam baseadas no custo para se alcançar algum estado meta
9/26/2007
(no problema ReguaPuzzle as metas são pré-definidas) entretanto, cada
Melhorias e comentários
● embora a abordagem de divisão-e-conquista seja
eficaz, é mais eficiente parar a recursão antes
● closedLists poderiam ser removidas apenas quando
um certo quantidade de memória estiver sendo
utilizado, diminuindo assim o comprimento dos gaps
● aumentar o limite superior até que uma solução seja
encontrada é uma estratégia mais conservadora,
preservando memória ao custo de uma busca menos
eficiente.
● o autor sugere ainda a remoção de “alguns” nós das
closedLists*.
● a utilização de diversas listas, ao invés de uma,
9/26/2007
diminue a probabilidade de colisões nos hashs.
Resultados e conclusões
Quando um problema de busca em grafos não-digiridos for
limitado pela memória disponível, utilizar BHFS pode ser uma
boa opção.
Nas simulações, BHFS resolveu instâncias maiores que a
busca A*, devido à falta de memória enfrentada pelo mesmo.
Talvez um dos pontos mais interessantes deste algoritmo seja
o de conseguir bons desempenhos, utilizando-se de uma
estratégia de busca trivial como a busca em largura.

9/26/2007
Referências
● Rong Zhou and Eric A. Hansen. 2004.
Breadth-First Heuristic Search.
● Rong Zhou and Eric A. Hansen. 2004.
BFHSP: A Breadth-First Heuristic Search
Planner.

9/26/2007

Mais conteúdo relacionado

Destaque

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 

Destaque (20)

Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 

Bfhs

  • 1. Breadth First Heuristic Search Fábio Pisaruk MAC-425 Inteligência Artificial 9/26/2007
  • 2. Introdução Breadth First Heuristic Search é um algoritmo de busca em grafos nãodirigidos, baseado na busca em largura, utilizando divisão-e-conquista na reconstrução da resposta e, listas de nós, gerados e visitados, mais compactas. 9/26/2007
  • 3. Comparação entre os contornos de buscas Best-First e Breadth-First Contorno definido pela heurística aplicada na expansão dos nós. i n í c i o Breadth-First 9/26/2007 m e t a Best-First
  • 5. Revisão: Busca em largura C B OpenList : {A},ClosedList : {} OpenList : {B,C},ClosedList : {A} OpenList : {C,E,F},ClosedList : {A,B} OpenList : {E,F,D},ClosedList : {A,B,C} OpenList : {F,D,I},ClosedList : {A,B,C,E} OpenList : {D,I},ClosedList : {A,B,C,E,F} OpenList 9/26/2007 : {I,G},ClosedList : {A,B,C,E,F,D} OpenList : {G,J},ClosedList : {A,B,C,E,F,D,I} G E A D I F J B
  • 6. Cont... A busca em largura utiliza duas listas, a fim de evitar expansões de nós repetidos: ● OpenList : nós gerados e não expandidos ● ClosedList: nós já expandidos. Cada nó possui um ponteiro para o seu antecessor, de modo que a resposta possa ser obtida caminhando-se do nó meta ao nó origem através destes ponteiros. 9/26/2007
  • 7. Problemas ● Para muitos problemas práticos a lista de nós expandidos(ClosedList) pode se tornar muito grande. ● A busca gera muitos nós que não têm a menor chance de fazer parte da solução. 9/26/2007
  • 8. Questões ● Será que precisamos guardar todos os nós expandidos a fim de evitar repetições? ● É possível evitar a geração de nós que não farão parte da solução? 9/26/2007
  • 9. Questões... Se quisermos evitar repetições e, ao mesmo tempo, sermos capazes de construir a resposta, através dos ponteiros de antecessores, a resposta é não. Mas, se quisermos apenas um dos dois, a resposta é sim. Para evitar a geração de nós que, com certeza, não farão parte da solução, podemos podá-los através do uso de heurísticas. 9/26/2007
  • 10. Solução Manter uma closedList mais compacta, com o custo de não ser mais possível a geração da resposta através dos ponteiros para os nós antecessores. Na verdade, manteremos diversas closedLists/openLists, uma para cada nível da expansão da busca. Lembre-se que a busca em largura funciona expandindose todos os nós de um certo nível, colocando os nós gerados na openList e os nós expandidos na closedList. 9/26/2007
  • 11. Busca em largura com listas por camada C G E A D I F J B OpenList[0] :{A},ClosedList[0]={} OpenList[0] :{},OpenList[1]:{B,C},ClosedList[0] : {A} OpenList[1]: {C},OpenList[2]:{E,F},ClosedList[1] : {B} OpenList[1]: {},OpenList[2]:{E,F,D},ClosedList[1] : {B,C} OpenList[2]: {F,D},OpenList[3]:{I},ClosedList[2] : {E} OpenList[2]: {D},OpenList[3]:{I},ClosedList[2] : {E,F} OpenList[2]: {},OpenList[3]:{I,G},ClosedList[2] : {E,F,D} 9/26/2007 OpenList[3]: {G},OpenList[4]:{L,J},ClosedList[3] : {I} L
  • 12. Quais listas devemos manter? Localidade de uma busca em largura num grafo: max {g*(n) – g*(n') , 0} n,n' : nós do grafo n' pertence aos predecessores de n. g*(x) : comprimento do menor caminho até o no x, ou, a primeira camada em que o nó x aparece durante a busca Teorema: Número de camadas closedList necessárias a fim de evitar repetições é igual à localidade do grafo. Calcular localidade não é simples no caso geral. Corolário: Grafos não-dirigidos possuem localidade igual a um. Pelo corolário acima, observamos que armazenar somente a camada imediatamente anterior é suficiente para evitar repetições. 9/26/2007
  • 13. Listas mantidas Em cada instante t teremos as seguintes listas : ● closedList[l] ● closedList[l-1] ● closedList[0] ● closedList[relay] ● openList[l] ● openList[l+1] Onde l é a camada sendo expandida no instante t e relay é uma camada intermediária. 9/26/2007
  • 14. Como reconstruir a resposta? Uma vez que não mais armazenamos todos os nós já expandidos, não podemos utilizar os ponteiros de nós antecessores para construir a resposta. Usaremos uma estratégia de divisão-econquista para gerar respostas aos subproblemas que, concatenados, formam a solução. 9/26/2007
  • 15. Simulação(upperBound=4, relay=2) C B G E A D I F J Open[0] :{A},Closed[0]={} Open[0] :{},Open[1]:{B,C},Closed[0] : {A} Open[1]: {C},Open[2]:{E,F},Closed[1] : {B},Closed[0] : {A} Open[1]: {},Open[2]:{E,F,D},Closed[1] : {B,C},Closed[0] : {A} Open[2]: {F,D},Open[3]:{I},Closed[2] : {E},Closed[1] : {B,C},Closed[0] : {A} Open[2]: {D},Open[3]:{I},Closed[2] : {E,F},Closed[1] : {B,C},Closed[0] : {A} Open[2]: {},Open[3]:{I,G},Closed[2] : {E,F,D},Closed[0] : {A} 9/26/2007 Open[3]: {G},Open[4]:{L,J},Closed[3] : {I} L
  • 17. Reconstrução da solução através de divisão-e-conquista Uma vez que o estado meta é alcançado, precisamos reconstruir a solução completa. Devido aos gaps, isso é não é possível. Aplicamos então o algoritmo BFHS recursivamente nos dois gaps, concatenado as soluções encontradas para os subproblemas. 9/26/2007
  • 18. Implementação Implementamos o algoritmo BHFS e o aplicamos ao problema ReguaPuzzle. Alguns detalhes: ● custo de cada operação deve ser unitário ● é preciso definir um limite superior* ● camada relay divide o problema em dois subproblemas, aproximadamente de mesmo custo. ● o grafo de estados do ReguaPuzzle não é dirigido ● desconsideramos heuríticas na expansão dos nós** ● subproblemas têm limites superiores inferiores aos dos problemas decompostos(limites justos). (*) utilizamos um limite inferior que é incrementado até que uma solução seja encontrada. (**) as heurísticas estavam baseadas no custo para se alcançar algum estado meta 9/26/2007 (no problema ReguaPuzzle as metas são pré-definidas) entretanto, cada
  • 19. Melhorias e comentários ● embora a abordagem de divisão-e-conquista seja eficaz, é mais eficiente parar a recursão antes ● closedLists poderiam ser removidas apenas quando um certo quantidade de memória estiver sendo utilizado, diminuindo assim o comprimento dos gaps ● aumentar o limite superior até que uma solução seja encontrada é uma estratégia mais conservadora, preservando memória ao custo de uma busca menos eficiente. ● o autor sugere ainda a remoção de “alguns” nós das closedLists*. ● a utilização de diversas listas, ao invés de uma, 9/26/2007 diminue a probabilidade de colisões nos hashs.
  • 20. Resultados e conclusões Quando um problema de busca em grafos não-digiridos for limitado pela memória disponível, utilizar BHFS pode ser uma boa opção. Nas simulações, BHFS resolveu instâncias maiores que a busca A*, devido à falta de memória enfrentada pelo mesmo. Talvez um dos pontos mais interessantes deste algoritmo seja o de conseguir bons desempenhos, utilizando-se de uma estratégia de busca trivial como a busca em largura. 9/26/2007
  • 21. Referências ● Rong Zhou and Eric A. Hansen. 2004. Breadth-First Heuristic Search. ● Rong Zhou and Eric A. Hansen. 2004. BFHSP: A Breadth-First Heuristic Search Planner. 9/26/2007