SlideShare ist ein Scribd-Unternehmen logo
1 von 21
ALGORITMO A*
Provando sua otimalidade
Dionisio Chiuratto Agourakis
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
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
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
IDEIAS PRINCIPAIS
 Nova Forma:
f 𝑛 = ℎ 𝑛 + 𝑔(𝑛)
Custo estimado,
passando por n
Custo estimado
de n até o objetivo
Custo realizado
da origem até n
^ ^ ^
EXEMPLO: A CLÁSSICA VIAGEM
 Vamos de Arad para Bucharest!
Origem:
Arad
Objetivo:
Bucharest
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
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
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
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
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
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
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
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
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 ...
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
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.***
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
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.
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.
OTIMALIDADE
 A* é ótimo
 Caso seja implementado em grafo
 Heurística deve ser consistente (que implica
admissibilidade)
 ℎ 𝑛 ≤ 𝑐 𝑛, 𝑛′
+ ℎ(𝑛′
)
 f(n) é não-decrescente

Weitere ähnliche Inhalte

Mehr von Dionisio Chiuratto Agourakis

Mehr von Dionisio Chiuratto Agourakis (9)

Inteligência Artificial Aplicada - Software, Hardware e Resultados
Inteligência Artificial Aplicada - Software, Hardware e ResultadosInteligência Artificial Aplicada - Software, Hardware e Resultados
Inteligência Artificial Aplicada - Software, Hardware e Resultados
 
J!Quant - GPU Technology Conference 2016
J!Quant - GPU Technology Conference 2016J!Quant - GPU Technology Conference 2016
J!Quant - GPU Technology Conference 2016
 
Apresentação J!Quant
Apresentação J!QuantApresentação J!Quant
Apresentação J!Quant
 
Machine Learning - Introdução e Aplicações
Machine Learning - Introdução e AplicaçõesMachine Learning - Introdução e Aplicações
Machine Learning - Introdução e Aplicações
 
EURO Conference 2015 - Automated Timetabling
EURO Conference 2015 - Automated TimetablingEURO Conference 2015 - Automated Timetabling
EURO Conference 2015 - Automated Timetabling
 
Fazendo acontecer com Scrum e a Filosofia Ágil.
Fazendo acontecer com Scrum e a Filosofia Ágil.Fazendo acontecer com Scrum e a Filosofia Ágil.
Fazendo acontecer com Scrum e a Filosofia Ágil.
 
Educação e Carreira
Educação e CarreiraEducação e Carreira
Educação e Carreira
 
Secular Technological Tailwinds
Secular Technological TailwindsSecular Technological Tailwinds
Secular Technological Tailwinds
 
Web Semântica e Internet das Coisas - GDG Sorocaba 2014
Web Semântica e Internet das Coisas - GDG Sorocaba 2014Web Semântica e Internet das Coisas - GDG Sorocaba 2014
Web Semântica e Internet das Coisas - GDG Sorocaba 2014
 

Kürzlich hochgeladen

Kürzlich hochgeladen (9)

ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docxATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
ATIVIDADE 1 - SISTEMAS DISTRIBUÍDOS E REDES - 52_2024.docx
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Luís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdfLuís Kitota AWS Discovery Day Ka Solution.pdf
Luís Kitota AWS Discovery Day Ka Solution.pdf
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Programação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdfProgramação Orientada a Objetos - 4 Pilares.pdf
Programação Orientada a Objetos - 4 Pilares.pdf
 

Otimalidade Algoritmo A*