Inteligncia Artificial
Resoluo de problemas por meio de buscaCaptulo 3 Russell & NorvigSees 3.4 e 3.5
Formulao de problemasUm problema definido por quatro itens:
Estado inicial ex., em Arad"Aes ou funo sucessor S(x) = conjunto de pares ao-estadoex., S(Arad) = {, }Teste de objetivo, pode serexplcito, ex., x = em Bucareste"implcito, ex., Cheque-mate(x)
Custo de caminho (aditivo)ex., soma das distncias, nmero de aes executadas, etc.c(x,a,y) o custo do passo, que deve ser sempre 0
Uma soluo uma seqncia de aes que levam do estado inicial para o estado objetivo.Uma soluo tima uma soluo com o menor custo de caminho.
Algoritmo geral de busca em rvore
Estratgias de Busca Sem Informao (ou Busca Cega)Estratgias de busca sem informao usam apenas a informao disponvel na definio do problema.Apenas geram sucessores e verificam se o estado objetivo foi atingido.
As estratgias de busca sem informao se distinguem pela ordem em que os ns so expandidos.Busca em extenso (Breadth-first)Busca de custo uniformeBusca em profundidade (Depth-first)Busca em profundidade limitadaBusca de aprofundamento iterativo
Estratgias de buscaEstratgias so avaliadas de acordo com os seguintes critrios:completeza: o algoritmo sempre encontra a soluo se ela existe?complexidade de tempo: nmero de ns geradoscomplexidade de espao: nmero mximo de ns na memriaotimizao: a estratgia encontra a soluo tima?Complexidade de tempo e espao so medidas em termos de:b: mximo fator de ramificao da rvore (nmero mximo de sucessores de qualquer n)d: profundidade do n objetivo menos profundom: o comprimento mximo de qualquer caminho no espao de estados (pode ser )
Busca em extensoExpandir o n no-expandido mais perto da raiz.Implementao:a borda uma fila FIFO (first-in, first-out), isto , novos itens entram no final.
Busca em extensoExpandir o n no-expandido mais perto da raiz.Implementao:a borda uma fila FIFO (first-in, first-out), isto , novos itens entram no final.
Busca em extensoExpandir o n no-expandido mais perto da raiz.Implementao:a borda uma fila FIFO (first-in, first-out), isto , novos itens entram no final.
Busca em extensoExpandir o n no-expandido mais perto da raiz.Implementao:a borda uma fila FIFO (first-in, first-out), isto , novos itens entram no final.
Propriedades da busca em extensoCompleta? Sim (se b finito)Tempo? 1+b+b2+b3+ +bd + b(bd-1) = O(bd+1)Espao? O(bd+1) (mantm todos os ns na memria)tima? Sim (se todas as aes tiverem o mesmo custo)
Requisitos de Tempo e Memria para a Busca em Extenso Busca com fator de ramificao b=10.Supondo que 10.000 ns possam ser gerados por segundo e que um n exige 1KB de espao.
ProfundidadeNsTempoMemria211000.11 segundo1 megabyte4111.10011 segundos106 megabytes610719 minutos10 gigabytes810931 horas1 terabyte101011129 dias101 terabytes12101335 anos10 petabytes1410153.523 anos1 exabyte
Busca de custo uniformeExpande o n no-expandido que tenha o caminho de custo mais baixo.Implementao:borda = fila ordenada pelo custo do caminhoEquivalente a busca em extenso se os custos so todos iguaisCompleta? Sim, se o custo de cada passo Tempo? # de ns com g custo da soluo tima, O(bC*/ ) onde C* o custo da soluo timaEspao? de ns com g custo da soluo tima, O(b C*/ ) tima? Sim pois os ns so expandidos em ordem crescente de custo total.
ExerccioAplicar busca de custo uniforme para achar o caminho mais curto entre Arad e Bucareste.
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Busca em ProfundidadeExpande o n no-expandido mais profundo.Implementao:borda = fila LIFO (last-in, first-out) = pilha
Propriedades da Busca em ProfundidadeCompleta? No: falha em espaos com profundidade infinita, espaos com loopsSe modificada para evitar estados repetidos completa para espaos finitosTempo? O(bm): pssimo quando m muito maior que d. mas se h muitas solues pode ser mais eficiente que a busca em extensoEspao? O(bm), i.e., espao linear!118 kilobytes ao invs de 10 petabytes para busca com b=10, d=m=12tima? No
Busca em Profundidade Limitada= busca em profundidade com limite de profundidade l,isto , ns com profundidade l no tem sucessores
Implementao Recursiva:
Propriedades da Busca em Profundidade LimitadaCompleta? No; a soluo pode estar alm do limite.Tempo? O(bl)Espao? O(bl)tima? No
Busca de Aprofundamento Iterativo em Profundidade
Busca de Aprofundamento Iterativo em Profundidade l =0
Busca de Aprofundamento Iterativo em Profundidade l =1
Busca de Aprofundamento Iterativo em Profundidade l =2
Busca de Aprofundamento Iterativo em Profundidade l =3
Busca de Aprofundamento IterativoNmero de ns gerados em uma busca de extenso com fator de ramificao b: NBE = b1 + b2 + + bd-2 + bd-1 + bd + (bd+1 b)
Nmero de ns gerados em uma busca de aprofundamento iterativo at a profundidade d com fator de ramificao b: NBAI = (d+1)b0 + d b1 + (d-1)b2 + + 3bd-2 +2bd-1 + 1bd
Para b = 10, d = 5,NBE = 10 + 100 + 1.000 + 10.000 + 100.000 + 999.990= 1.111.100
NBAI = 6 + 50 + 400 + 3.000 + 20.000 + 100.000 = 123.456
Overhead = (123.456 111.111)/111.111 = 11%
Propriedades da busca de aprofundamento iterativoCompleta? SimTempo? (d+1)b0 + d b1 + (d-1)b2 + + bd = O(bd)Espao? O(bd)tima? Sim, se custo de passo = 1
Resumo dos algoritmos
Estados repetidosO processo de busca pode perder tempo expandindo ns j explorados antesEstados repetidos podem levar a loops infinitosEstados repetidos podem transformar um problema linear em um problema exponencial
Estados RepetidosNo detectar estados repetidos pode transformar um problema linear em um problema exponencial.
Deteco de estados repetidosComparar os ns prestes a serem expandidos com ns j visitados. Se o n j tiver sido visitado, ser descartado.Lista closed (fechado) armazena ns j visitados.Busca em profundidade e busca de aprofundamento iterativo no tem mais espao linear.A busca percorre um grafo e no uma rvore.
ResumoA formulao de problemas usualmente requer a abstrao de detalhes do mundo real para que seja definido um espao de estados que possa ser explorado atravs de algoritmos de busca.
H uma variedade de estratgias de busca sem informao (ou busca cega).
A busca de aprofundamento iterativo usa somente espao linear e no muito mais tempo que outros algoritmos sem informao.