Você está na página 1de 57

Notícias de IA

Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Notícias de IA
Universidade Federal do ABC
Centro de Matemática, Computação e Cognição

MCTA014-15 - Inteligência Artificial


Aula 4 – Busca Não Informada ou Cega

Profa: Karla Vittori

Santo André - SP
Setembro - 2022
1 - Estratégias de busca sem informação

 Estratégias para determinar a ordem de ramificação dos nós:


1. Busca em largura/extensão
2. Busca de custo uniforme
3. Busca em profundidade
4. Busca em profundidade limitada
5. Busca com aprofundamento iterativo

 Direção da ramificação:
1. Do estado inicial para um estado final
2. De um estado final para o estado inicial
3. Busca bidirecional
Considerações sobre desempenho
 Obtenção da solução (completeness)
 O algoritmo garante encontrar a solução quando ela existe?

 Otimização
 A estratégia encontra a solução ótima?
 Para passos com igual custo, a solução ótima é aquela em
menor profundidade na árvore de busca

Solução ótima B C

D E F G
Considerações sobre desempenho
 Complexidade de tempo
 Quanto tempo o algoritmo leva para encontrar uma solução?

 Complexidade de espaço
 Quanta memória é necessária para executar a busca?

Análises em função de:


b: fator de ramificação da árvore, igual ao número
máximo de sucessores de um nó
d: profundidade da solução que atinge o nó objetivo
mais raso
m: profundidade máxima da árvore de busca
Desempenho

 Exemplo:
 b = fator de ramificação = 2
 d = profundidade da solução ótima (mais rasa) = 1
 m = profundidade máxima da árvore de busca = 2

A Profundidade/nível 0

Solução ótima B C Profundidade/nível 1

D E F G Profundidade/nível 2
1.1 - Busca em Largura/Extensão

 O nó raiz é expandido primeiro, depois todos os seus


sucessores, depois os sucessores deles e assim por diante
 Todos os nós em um nível da árvore de busca são
expandidos antes dos nós do nível seguinte

 Expande o nó mais raso que ainda não foi expandido


1.1 - Busca em Largura/Extensão

 Ordem de expansão dos nós:


1. Nó raiz
2. Todos os nós de profundidade/nível 1
3. Todos os nós de profundidade/nível 2, etc…

A Nó raiz

B C Profundidade/nível 1

D E F G Profundidade/nível 2
1.1 - Busca em Largura/Extensão

A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G

A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G
ABCDEFG
1.1 - Busca em Largura/Extensão
 Fronteira pode ser vista como uma fila
 Novos sucessores são colocados no final
 O primeiro da fila é selecionado a cada passo

Árvore de busca:
A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G

Fila:
A B C C D E D E F G
1.1 - Busca em Largura/Extensão

 É completa
 Quando o nó objetivo encontra-se em uma profundidade finita e dado
que o fator de ramificação seja finito.

 É ótima se o custo do caminho cresce com a profundidade do nó


 Ou seja, quando:
n’,n profundidade(n’)  profundidade(n)  custo de caminho(n’)  custo
de caminho (n)
 Ex.: quando todas as operações tiverem o mesmo custo
 Pois sempre explora profundidades mais rasas primeiro

 Pode não ser solução de menor custo de caminho, caso


operadores/ações tenham valores diferentes
 Ex. ir para uma cidade D passando por B e C pode ser mais perto do que
passando só por E
1.1 - Busca em Largura/Extensão

 Complexidade de tempo e memória


 Considere que cada estado tem b sucessores
 Número de nós em nível i = bi

 Suponha que a primeira solução está no nível d

 No pior caso (aplica-se o teste de término na hora de expandir o nó e não


quando ele é gerado), expande todos os nós exceto o último no nível d,
gerando bd+1 – b nós no nível d +1
 Número total de nós gerados = 1 + b + b2 + b3...+ bd + (bd+1 – b)
 O(bd+1): complexidade exponencial

 Cada nó gerado tem que ser mantido na memória, pois ele é parte da
fronteira ou é ancestral de um nó da fronteira

 Então, a complexidade de espaço é igual à de tempo.


1.2 - Busca de Custo Uniforme

 Busca em largura é ótima quando todos os custos dos


passos são iguais

 Em vez de expandir o nó mais raso, a busca de custo uniforme


expande o nó que forma o caminho de menor custo

 Para custos de passos iguais, é idêntica à busca em


largura/extensão
1.2 - Busca de Custo Uniforme

 Expande o nó da fronteira com menor custo de caminho até


o momento
 Cada operador pode ter um custo associado diferente, medido
pela função g(n) que dá o custo do caminho da origem ao nó
n

 Na busca em largura:
• g(n) = profundidade (n)
1.2 - Busca de Custo Uniforme

F = {S}

• Testa se S é o estado objetivo,


expande-o e guarda seus filhos A, B e
C ordenadamente na fronteira

fronteira é uma fila


ordenada pelo custo do
caminho
1.2 - Busca de Custo Uniforme

F = {A, B, C}

• Testa A, expande-o e
guarda seu filho Ga
ordenadamente

– Obs.: O algoritmo de
geração e teste guarda na
fronteira todos os nós
gerados, testando se um nó
é o objetivo apenas quando
ele é retirado da fila
1.2 - Busca de Custo Uniforme

F= {B, Ga, C}

• Testa B, expande-o e guarda seu filho Gb ordenadamente


1.2 - Busca de Custo Uniforme

F= {Gb, Ga, C}

• Testa Gc e para
1.2 - Busca de Custo Uniforme

 Não se importa com número de passos do caminho, mas com o


seu custo total
 É completa e ótima se o custo de cada passo  
 Custo do caminho não decresce à medida que novos nós são
expandidos
 i.e., não existem operadores com custo negativo
 caso contrário, teríamos que expandir todo o espaço de
estados em busca da melhor solução
 Ex. Seria necessário expandir também o nó C do exemplo,
pois o próximo operador poderia ter custo associado = -13,
por exemplo, gerando um caminho com menor custo do que
através de B

 Expande os nós em ordem de custo de caminho crescente


 Portanto, o primeiro nó objetivo selecionado para expansão
é ótimo
1.2 - Busca de Custo Uniforme

 É orientada por custos dos caminhos ao invés da sua


profundidade

 Seja C* o custo de uma solução ótima

 Supondo que cada ação custe pelo menos 

 Complexidade de tempo e espaço no pior caso: O(bc)


 Pode ser muito maior que bd

 Se todos os custos de passos são iguais, é O(bd)

 Tende a explorar árvores grandes de pequenos passos antes


de explorar caminhos com passos grandes e talvez úteis
1.3 - Busca em Profundidade

 Sempre expande o nó atual mais profundo


 Até atingir o nó objetivo ou um nó folha
 Neste caso, retorna então ao nó seguinte mais raso
1.3 - Busca em Profundidade
 Ordem de ramificação dos nós:
1. Nó raiz
2. Primeiro nó de profundidade 1
3. Primeiro nó de profundidade 2, etc.

A Nó raiz

B C Profundidade/nível 1

D E F G Profundidade/nível 2

 Quando um nó final não é solução, o algoritmo volta para expandir o


próximo nó mais raso que ainda não foi expandido
1.3 - Busca em profundidade

A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G

A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G

ABDECFG
1.3 - Busca em Profundidade
 Fronteira pode ser vista como uma pilha
 Os novos sucessores são colocados no início
 O último ou o topo da pilha é selecionado a cada passo

Árvore de busca:
A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G
Pilha:
A B D E
C E C
C
1.3 - Busca em profundidade

 Requisitos de memória modestos


 Precisa armazenar:
 Um único caminho do nó raiz a um nó folha.

 Com os nós-irmãos não expandidos no caminho


 Nós expandidos podem ser removidos da memória quando
seus descendentes forem todos explorados

 Em um espaço de busca com:


 Fator de ramificação b

 Profundidade máxima m

 Exige armazenamento de bm + 1 nós: O(bm) (linear!)


1.3 - Busca em profundidade -
armazenamento
A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G
A ABC ABCDE ABCE
A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G
AC ACFG ACG ACG
1.3 - Busca em Profundidade

 Busca com retrocesso


 Variante de busca em profundidade

 Usa ainda menos memória

 Apenas um sucessor é gerado de cada vez

 Cada nó parcialmente expandido memoriza o sucessor que


deve gerar em seguida

 Complexidade de memória - O(m)


1.3 - Busca em Profundidade

 Pode ficar paralisada ao descer um caminho muito longo (ou


infinito)
 Quando uma opção diferente levaria a uma solução próxima
à raiz da árvore de busca
 Por essa razão, ela não é completa

 Também não é ótima


 Pode retornar uma solução em profundidade maior na árvore
de busca do que a mais rasa.
1.3 - Busca em Profundidade

 Complexidade do pior caso


 Irá gerar todos os O(bm) nós na árvore de busca
 m é a profundidade máxima de qualquer nó
 m pode ser muito maior que d (profundidade da solução mais
rasa)
 Até mesmo infinito

 Esta estratégia deve ser evitada quando as árvores geradas são


muito profundas ou geram caminhos infinitos
• Para problemas com várias soluções, esta estratégia pode ser
bem mais rápida do que a busca em largura
1.4 - Busca em profundidade limitada

 Considera um limite máximo de profundidade a ser explorado l


 Lidando assim com árvores ilimitadas
 Resolve problema de caminhos infinitos

 Também pode ser incompleta


 Se a solução mais rasa estiver abaixo do limite l ( se l < d)

 Se d < l, não é ótima


 Complexidade de tempo: O(bl)
 Complexidade de espaço: O(bl)
1.4 - Busca em profundidade limitada

 Às vezes, o conhecimento sobre o problema pode dar o


limite de profundidade
 Ex.: Romênia
1.4 - Busca em profundidade limitada

 Ex.: Romênia

 Há 20 cidades

 Então o comprimento mais longo pode ser l =19

 Estudando o mapa, qualquer cidade pode ser alcançada a partir


de outra com no máximo 9 passos

 Diâmetro do espaço de estados


 Infelizmente, não é conhecido para a maioria dos problemas
1.5 - Busca por aprofundamento iterativo

 Estratégia geral, usada com frequência em conjunto com a busca


em profundidade

 Encontra o melhor limite de profundidade

 Aumentando gradualmente o limite


 0, 1, 2, etc

 Até encontrar um objetivo


 Acontece quando alcançar d, a profundidade do nó
objetivo mais raso

 Combina os benefícios da busca em largura (completa e ótima)


com os da busca em profundidade (memória).
1.5 - Busca por aprofundamento iterativo

Limite = 0

A A

A
1.5 - Busca por aprofundamento iterativo

Limite = 1

A A A A

B C B C B C B C

A ABC AC
1.5 - Busca por aprofundamento iterativo
Limite = 2
A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G
A ABC ABCDE ABCE
A A A A

B C B C B C B C

D E F G D E F G D E F G D E F G
AC ACFG ACG ACG
1.5 - Busca por aprofundamento iterativo

 Pode parecer desperdício

 Estados são gerados várias vezes

 Custo não é muito alto, pois a maior parte dos nós estará em
níveis inferiores

 Nós do nível inferior (profundidade d) são gerados uma vez...

 Os do penúltimo nível são gerados duas vezes...

 E assim por diante...

 Até chegar aos filhos da raiz, gerados d vezes


1.5 - Busca por aprofundamento iterativo

 Número total de nós gerados é:


 nós(BAI) = db + (d -1)b2 + ... + (1)bd

 Complexidade de tempo O(bd)


 É mais rápido que a busca em extensão, que chega a gerar nós em
nível d +1
 nós(BL) = b + b2 + ... + bd + (bd+1 – b)
 nós (BP) = b + b2 + ... + bd

 Ex.:
 b = 10, d = 5;
 nós(BAI) = 50 + 400 + 3.000 + 20.000 + 100.000 = 123.450
 nós(BL) = 10 + 100 + 1.000 + 10.000 + 100.000 + 999.990 = 1.111.110
 nós(BP) = 10 + 100 + 1.000 + 10.000 + 100.000 = 111.110
 Overhead = (123.450 – 111.110) / 111.110 = 11%
1.5 - Busca por aprofundamento iterativo

 Requisitos de memória modestos: O(bd)

 Complexidade de tempo: O(bd)

 Completa quando o fator de ramificação (b) é finito

 Ótima quando o custo do caminho cresce com a


profundidade do nó
1.5 - Busca por aprofundamento iterativo

Em geral, é o método de busca sem informação preferido


quando existe um espaço de busca grande e a profundidade
da solução não é conhecida

É similar à busca em largura,


pois explora um nível de nós em cada iteração,
porém mais eficiente em tempo e espaço
2 - Comparação entre estratégias de
busca sem informação
Critério Largura Custo Profundidade Profundidade Aprofund. Aprofund. Bid.
uniforme limitada iterativo (se aplicável)

Completa Sim* Sim** Não Não Sim* Sim***

Tempo O(bd+1) O(b1+[c]) O(bm) O(bl) O(bd) O(bd/2)

Espaço O(bd+1) O(b1+[c ]) O(bm) O(bl) O(bd) O(bd/2)

Ótima Sim*** Sim Não Não Sim*** Sim*****

b é o fator de ramificação * Se b é finito


d é a profundidade da solução mais rasa ** Se b é finito e se o custo dos passos é
m é a profundidade máxima da árvore de busca maior ou igual a 
l é o limite de profundidade *** Se os custos dos passos são iguais
3 - Como evitar estados repetidos

 Evitar expandir estados já encontrados e expandidos antes


 Estados repetidos são inevitáveis em alguns problemas
 Ex.: todos os problemas em que as operações são reversíveis

 Idéia:
 podar estados repetidos, para gerar apenas a parte da árvore que
corresponde ao grafo do espaço de estados (que é finito!)

 mesmo quando esta árvore é finita ... evitar estados repetidos pode reduzir
exponencialmente o custo da busca
3 - Como evitar estados repetidos

Estratégias para lidar:

1. Não retornar ao estado “pai”


 Função que rejeita geração de sucessor igual ao pai

2. Não criar caminhos com ciclos


 Não gerar sucessores para qualquer estado que já apareceu no caminho sendo
expandido

3. Não gerar qualquer estado que já tenha sido criado antes (em qualquer
ramo)
 Requer que todos os estados gerados permaneçam na memória
 Custo de memória: O(bd)
4 - Exercício
 Para o problema da Romênia, desenhe o grafo de busca.
4 - Exercício

 Indicar a ordem de expansão dos estados da árvore para a


busca em largura e em profundidade:
5 - Referências

 Livro Russel e Norvig, Cap. 3 (3.4 e 3.5)

 Slides de:
 Profa. Ana Carolina Monard, UFABC
 Russel

Você também pode gostar