Otimalidade Algoritmo A*

460 visualizações

Publicada em

Slides apresentados durante o curso de Inteligência Artificial do ITA sobre o algoritmo de busca A*.

Publicada em: Tecnologia
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
460
No SlideShare
0
A partir de incorporações
0
Número de incorporações
5
Ações
Compartilhamentos
0
Downloads
3
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Otimalidade Algoritmo A*

  1. 1. ALGORITMO A* Provando sua otimalidade Dionisio Chiuratto Agourakis
  2. 2. IDEIAS PRINCIPAIS  Estratégia best-first  Sempre expande o nó mais promissor  Busca informada - heurística  Heurística  Quão bom parece este nó?  Diferente da estratégia greedy (gulosa)  Leva em consideração o custo já incorrido  Não perde tempo em explorar nós que já ficaram caros
  3. 3. IDEIAS PRINCIPAIS  Forma: 𝑓 𝑛 = ℎ 𝑛 + 𝑔(𝑛) Custo ótimo (mínimo), passando por n Custo ótimo (mínimo) de n até o objetivo Custo ótimo (mínimo) da origem até n
  4. 4. IDEIAS PRINCIPAIS  Blefe  Encontrar f(n) é nosso objetivo  Não conhecemos h(n) nem g(n)  Ideia: estimar h(n) e g(n) para guiar a busca
  5. 5. IDEIAS PRINCIPAIS  Nova Forma: f 𝑛 = ℎ 𝑛 + 𝑔(𝑛) Custo estimado, passando por n Custo estimado de n até o objetivo Custo realizado da origem até n ^ ^ ^
  6. 6. EXEMPLO: A CLÁSSICA VIAGEM  Vamos de Arad para Bucharest! Origem: Arad Objetivo: Bucharest
  7. 7. 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara
  8. 8. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Arad(366)} f(n) = 366 h(n) = 366 + g(n) = 0
  9. 9. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Sibiu(393), Timisoara(447), Zerind(449)} f(n) = 393 h(n) = 253 + g(n) = 140
  10. 10. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Rimnicu(413), Fagaras(417), Timisoara(447), Zerind(449), Oradea(526), Arad(646)} f(n) = 413 h(n) = 193 + g(n) = 80+140
  11. 11. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Pitesti(415), Fagaras(417), Timisoara(447), Zerind(449), Oradea(526), Craiova(526), Sibiu(553), Arad(646)} f(n) = 415 h(n) = 98 + g(n) = 220+97
  12. 12. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Fagaras(417), Bucharest(418), Timisoara(447), Zerind(449), Oradea(526), Craiova(526), Sibiu(553), Rimnicu(607), Craiova(615), Arad(646)} f(n) = 417 h(n) = 178 + g(n) = 140+99
  13. 13. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Bucharest(418), Timisoara(447), Bucharest(450), Zerind(449), Oradea(526), Craiova(526), Sibiu(553), Sibiu(591), Rimnicu(607), Craiova(615), Arad(646)} f(n) = 418 h(n) = 0 + g(n) = 317+101
  14. 14. OTIMALIDADE  Pressupostos  A heurística h(n) é admissível  Nunca superestima o custo até o objetivo  “Otimista”  Fator de ramificação é finito  O problema tem fim  Custo de expansão positivo
  15. 15. OTIMALIDADE  Passo 1: Provar que nós-objetivos aparecem na fila para expansão Respeitando-se o pressuposto de que o fator de ramificação é finito, isto é, o problema tem fim, podemos afirmar que o algoritmo A* é completo, isto é, ele encontrará ao menos uma solução.  A* não fica preso em ciclos ...
  16. 16. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Rimnicu(413), Fagaras(417), Timisoara(447), Zerind(449), Oradea(526), Arad(646)} f(n) = 413 h(n) = 193 + g(n) = 80+140
  17. 17. OTIMALIDADE  Passo 2: Provar que nós-objetivos sub-ótimos nunca serão expandidos/encontrados Supondo um estado sub-ótimo G2 (Bucharest) na fila de expansão. Sabemos que h(G2) = 0 e, portanto, f(G2) = g(G2) + 0 > C* (custo mínimo) Um nó n, pertencente ao caminho ótimo, possui: f(n) = g(n) + h(n) onde h(n) nunca superestima o custo até o objetivo, logo f(n) < C*. ***Portanto, f(n) aparecerá antes de G2 na fila para expansão.***
  18. 18. Arad Zerind Sibiu Arad Oradea Fagaras Sibiu Bucharest Rimnicu Craiova Pitesti Rimnicu Craiova BucharestSibiu Timisoara 366 449 646 591 607 393 447 526 417 413 450 526 415 553 615 418 Fila de Prioridades: {Bucharest(418), Timisoara(447), Bucharest(450), Zerind(449), Oradea(526), Craiova(526), Sibiu(553), Sibiu(591), Rimnicu(607), Craiova(615), Arad(646)} f(n) = 418 h(n) = 0 + g(n) = 317+101 f(G2) > C* 450 > 418
  19. 19. 646 Fila de Prioridades: {Bucharest(418), Timisoara(447), Bucharest(450), Zerind(449), Oradea(526), Craiova(526), Sibiu(553), Sibiu(591), Rimnicu(607), Craiova(615), Arad(646)} G2 não seria expandido... antes que verificássemos caminhos mais promissores. Mesmo se não tivéssemos encontrado C*, Por isso podemos afirmar que caso G2 fosse expandido, ele seria ótimo.
  20. 20. OTIMALIDADE  Passo 3: Provar que nós pertencentes ao caminho ótimo estarão na fila Decorrência da demonstração do Passo 2: Sabemos que h(G2) = 0 e, portanto, f(G2) = g(G2) + 0 > C* (custo mínimo) Um nó n, pertencente ao caminho ótimo, possui: f(n) = g(n) + h(n) onde h(n) nunca superestima o custo até o objetivo, logo f(n) < C*. Então podemos afirmar que A* expandirá todos os nós com f(n) < C*, até encontrar a solução ótima.
  21. 21. OTIMALIDADE  A* é ótimo  Caso seja implementado em grafo  Heurística deve ser consistente (que implica admissibilidade)  ℎ 𝑛 ≤ 𝑐 𝑛, 𝑛′ + ℎ(𝑛′ )  f(n) é não-decrescente

×