Planejamento Automático: A Arte de Ensinar Máquinas a Resolver Problemas
VOLUME 85
⟨S, A, γ⟩
h(n)
π*
f(n)
Δt
INTELIGÊNCIA EM AÇÃO!
Estado₀ → Ação → Estado₁
f(n) = g(n) + h(n)
P(s'|s,a)
min Σ custo(aᵢ)

PLANEJAMENTO

AUTOMÁTICO

A Arte de Ensinar Máquinas a Resolver Problemas
Coleção Escola de Lógica Matemática

JOÃO CARLOS MOREIRA

Doutor em Matemática
Universidade Federal de Uberlândia

Sumário

Capítulo 1 — O Mundo do Planejamento Automático
Capítulo 2 — Estados e Representação do Mundo
Capítulo 3 — Ações e Transições
Capítulo 4 — Objetivos e Metas
Capítulo 5 — Algoritmos de Busca
Capítulo 6 — Heurísticas e Otimização
Capítulo 7 — Planejamento Clássico
Capítulo 8 — Planejamento Temporal
Capítulo 9 — Planejamento sob Incerteza
Capítulo 10 — Aplicações no Mundo Real
Referências Bibliográficas

O Mundo do Planejamento Automático

Imagine um robô em Marte que precisa coletar amostras de solo, fotografar formações rochosas e retornar à base antes que uma tempestade de areia chegue. Como ele decide a ordem das tarefas? Como calcula o melhor caminho? Como adapta seus planos quando encontra obstáculos inesperados? Bem-vindo ao fascinante universo do planejamento automático, onde ensinamos máquinas a pensar estrategicamente, resolver problemas complexos e tomar decisões inteligentes de forma autônoma. Esta é a história de como transformamos problemas do mundo real em quebra-cabeças matemáticos que computadores podem resolver.

A Essência do Planejamento

Planejar é uma atividade fundamentalmente humana. Desde organizar nossa rotina matinal até traçar metas de vida, constantemente criamos sequências de ações para alcançar objetivos. O planejamento automático transporta essa habilidade para o mundo computacional, permitindo que sistemas artificiais raciocinem sobre o futuro, antecipem consequências e escolham caminhos ótimos para atingir metas complexas.

Por Que Automatizar o Planejamento?

  • Resolver problemas muito complexos para a mente humana processar rapidamente
  • Operar em ambientes perigosos ou inacessíveis aos humanos
  • Garantir decisões consistentes e livres de viés emocional
  • Processar milhares de variáveis simultaneamente
  • Adaptar-se rapidamente a mudanças no ambiente

Uma Breve História

A jornada do planejamento automático começou na década de 1950, quando pioneiros da inteligência artificial sonhavam com máquinas capazes de resolver problemas como humanos. O General Problem Solver de Newell e Simon foi uma das primeiras tentativas de criar um sistema universal de resolução de problemas. Desde então, o campo evoluiu dramaticamente, passando por marcos como o STRIPS nos anos 1970, o planejamento hierárquico nos anos 1980, até os modernos sistemas que controlam missões espaciais e dirigem carros autônomos.

Marcos Históricos do Planejamento

  • 1959: General Problem Solver - primeira tentativa de planejamento geral
  • 1971: STRIPS - linguagem formal para representar ações
  • 1975: NOAH - introdução do planejamento não-linear
  • 1991: UCPOP - planejamento de ordem parcial eficiente
  • 1995: Graphplan - revoluciona a eficiência com grafos de planejamento
  • 2000s: Planejamento probabilístico e aprendizado por reforço

Componentes Fundamentais

Todo sistema de planejamento automático possui três elementos essenciais: estados (representações do mundo), ações (formas de modificar o mundo) e objetivos (situações desejadas). Como um maestro regendo uma orquestra, o planejador coordena esses elementos para compor uma sinfonia de decisões que levam do estado inicial ao objetivo desejado.

O Triângulo do Planejamento

  • Estados: fotografias instantâneas de como o mundo está
  • Ações: ferramentas para transformar um estado em outro
  • Objetivos: descrições de como queremos que o mundo seja
  • Plano: sequência ordenada de ações do inicial ao objetivo
  • Custo: medida de qualidade ou eficiência do plano

Desafios e Complexidade

Planejar automaticamente não é tarefa simples. O espaço de possibilidades cresce exponencialmente com o número de ações e objetos. Um problema aparentemente simples, como organizar blocos em uma mesa, pode ter bilhões de estados possíveis. Adicione restrições temporais, recursos limitados e incerteza, e o desafio se torna monumental. É como jogar xadrez em múltiplos tabuleiros simultaneamente, onde as regras podem mudar durante o jogo.

Fontes de Complexidade

  • Explosão combinatória: número de estados cresce exponencialmente
  • Interações entre ações: efeitos colaterais e dependências
  • Recursos limitados: tempo, energia, memória
  • Incerteza: informação incompleta ou ambiente estocástico
  • Múltiplos agentes: coordenação e competição

Aplicações que Transformam o Mundo

O planejamento automático não é apenas teoria acadêmica; ele move o mundo moderno. Satélites usam planejadores para agendar observações da Terra. Fábricas inteligentes otimizam linhas de produção em tempo real. Assistentes virtuais organizam nossas agendas. Games criam narrativas dinâmicas que se adaptam às escolhas dos jogadores. Em hospitais, sistemas planejam tratamentos personalizados considerando milhares de variáveis médicas.

Planejamento em Ação

  • NASA Deep Space 1: primeiro uso de planejador autônomo no espaço
  • Logística Amazon: otimização de rotas e armazéns
  • Carros autônomos: planejamento de trajetória em tempo real
  • Jogos de estratégia: IA que desafia campeões humanos
  • Robôs cirúrgicos: planejamento de procedimentos minimamente invasivos

A Matemática por Trás da Mágica

O planejamento automático é profundamente matemático. Utilizamos teoria dos grafos para representar espaços de estados, álgebra booleana para expressar condições, teoria da complexidade para analisar algoritmos, e probabilidade para lidar com incerteza. Cada problema de planejamento pode ser visto como uma busca em um grafo gigantesco, onde nós são estados e arestas são ações.

Ferramentas Matemáticas Essenciais

  • Grafos: representação de espaços de estados e transições
  • Lógica proposicional: descrição de estados e pré-condições
  • Algoritmos de busca: exploração sistemática de possibilidades
  • Heurísticas: estimativas para guiar a busca eficientemente
  • Otimização: encontrar soluções de custo mínimo

O Papel da Inteligência Artificial

O planejamento automático é um dos pilares da inteligência artificial simbólica. Diferente do aprendizado de máquina que extrai padrões de dados, o planejamento raciocina explicitamente sobre causas e efeitos, construindo cadeias lógicas de ações. É a diferença entre reconhecer um gato em uma foto (aprendizado) e descobrir como resgatar um gato preso em uma árvore (planejamento).

Planejamento vs. Outras Abordagens de IA

  • Raciocínio explícito sobre ações e consequências
  • Garantias formais sobre correção das soluções
  • Explicabilidade: planos podem ser justificados passo a passo
  • Generalização: mesmos algoritmos para diferentes domínios
  • Composicionalidade: combinar sub-planos em soluções maiores

Preparando a Jornada

Este livro é sua porta de entrada para o universo do planejamento automático. Exploraremos desde conceitos fundamentais até técnicas avançadas, sempre com exemplos práticos e intuições claras. Aprenderemos a pensar como um planejador automático, decompondo problemas complexos em componentes manejáveis, identificando padrões e aplicando algoritmos poderosos.

O Que Você Aprenderá

  • Representar problemas do mundo real em linguagem formal
  • Implementar algoritmos clássicos de busca e planejamento
  • Desenvolver heurísticas para acelerar a resolução
  • Lidar com tempo, recursos e incerteza
  • Aplicar planejamento em projetos práticos

O planejamento automático é onde a matemática encontra a criatividade, onde algoritmos encontram problemas reais, onde máquinas aprendem a pensar estrategicamente. É um campo vibrante, em constante evolução, com desafios fascinantes e aplicações que mudam o mundo. Prepare-se para uma jornada intelectual emocionante, onde cada conceito aprendido abre portas para novas possibilidades. Vamos começar nossa exploração mergulhando no conceito fundamental de estados - as peças básicas do quebra-cabeça do planejamento!

Estados e Representação do Mundo

Feche os olhos e imagine sua cozinha neste exato momento. Onde está cada objeto? Quais portas estão abertas? O fogão está ligado? Essa imagem mental que você criou é semelhante a um estado em planejamento automático - uma fotografia completa de como o mundo está em um determinado instante. Mas como ensinamos um computador a "ver" e representar o mundo? Como capturamos a essência de situações complexas em estruturas que máquinas possam processar? Neste capítulo, descobriremos a arte e a ciência de representar mundos em bits e bytes.

O Conceito de Estado

Um estado é uma descrição completa e instantânea do mundo relevante para nosso problema. Como uma partida de xadrez congelada no tempo, o estado captura todas as informações necessárias para determinar quais ações são possíveis e qual será o resultado de cada ação. A escolha de o que incluir no estado é crucial: informação demais torna o problema intratável; informação de menos torna impossível planejar corretamente.

Características de um Bom Estado

  • Completude: contém toda informação relevante para o problema
  • Consistência: não contém contradições lógicas
  • Minimalidade: evita redundâncias desnecessárias
  • Computabilidade: pode ser processado eficientemente
  • Expressividade: captura as nuances importantes do domínio

Representação Proposicional

A forma mais simples de representar estados usa proposições booleanas - afirmações que podem ser verdadeiras ou falsas. "O robô está na sala A", "A porta está aberta", "A caixa foi entregue" são exemplos de proposições. Um estado é então um conjunto de proposições verdadeiras. Esta representação é intuitiva e poderosa o suficiente para muitos problemas práticos.

Estado de um Robô Doméstico

  • robo_na_cozinha = verdadeiro
  • robo_carregando_objeto = falso
  • luz_sala_acesa = verdadeiro
  • porta_quarto_aberta = falso
  • lixo_cheio = verdadeiro
  • piso_limpo = falso

Variáveis de Estado

Para domínios mais ricos, usamos variáveis que podem assumir múltiplos valores. Em vez de múltiplas proposições como "robô_na_sala", "robô_na_cozinha", "robô_no_quarto", temos uma única variável posição_robô com valores possíveis {sala, cozinha, quarto}. Esta abordagem é mais compacta e naturalmente garante exclusão mútua - o robô não pode estar em dois lugares ao mesmo tempo.

Modelando um Elevador

  • andar_atual ∈ {1, 2, 3, 4, 5}
  • direção ∈ {subindo, descendo, parado}
  • porta ∈ {aberta, fechada}
  • pessoas_dentro ∈ {0, 1, 2, ..., 8}
  • botões_pressionados ⊆ {1, 2, 3, 4, 5}

Estados e Objetos

Muitos problemas envolvem múltiplos objetos com propriedades similares. Um armazém pode ter dezenas de caixas, cada uma com posição, peso e conteúdo. Representações orientadas a objetos capturam esta estrutura naturalmente, tratando cada entidade como uma instância com atributos. Isso facilita a generalização - o mesmo planejador pode funcionar com 3 ou 300 caixas.

Representação de um Armazém

  • Caixa(c1): posição=A3, peso=10kg, frágil=sim
  • Caixa(c2): posição=B1, peso=5kg, frágil=não
  • Robô(r1): posição=A1, carga=vazio, bateria=80%
  • Robô(r2): posição=C2, carga=c3, bateria=45%
  • Prateleira(p1): posições_livres={A2, A4}

Espaço de Estados

O conjunto de todos os estados possíveis forma o espaço de estados - um universo de configurações que nosso sistema pode assumir. Para n proposições booleanas, existem 2ⁿ estados possíveis. Com apenas 20 proposições, já temos mais de um milhão de estados! Esta explosão exponencial é um dos grandes desafios do planejamento, exigindo representações e algoritmos inteligentes.

Crescimento do Espaço de Estados

  • Jogo da velha: ~9! = 362.880 estados
  • Cubo mágico: ~4.3 × 10¹⁹ estados
  • Xadrez: ~10⁴⁷ estados legais estimados
  • Go: ~10¹⁷⁰ estados possíveis
  • Mundo real: efetivamente infinito

Estados Parcialmente Observáveis

Na vida real, raramente conhecemos o estado completo do mundo. Um robô explorador pode não saber o que há atrás de uma porta fechada. Um sistema médico pode desconhecer certas condições do paciente. Representamos esta incerteza através de crenças - distribuições de probabilidade sobre estados possíveis, ou conjuntos de estados compatíveis com nossas observações.

Lidando com Informação Incompleta

  • Estados epistêmicos: o que o agente sabe/acredita
  • Observações: informações parciais obtidas por sensores
  • Atualização de crenças: revisar conhecimento com novas observações
  • Ações de sensoriamento: ações para obter informação
  • Planejamento contingente: planos com ramificações condicionais

Abstrações e Hierarquias

Problemas complexos requerem múltiplos níveis de abstração. Planejar uma viagem internacional envolve desde decisões de alto nível (quais cidades visitar) até detalhes minuciosos (qual assento escolher no avião). Estados hierárquicos permitem raciocinar em diferentes granularidades, focando nos detalhes relevantes para cada decisão.

Níveis de Abstração - Robô de Entrega

  • Nível cidade: bairros e principais vias
  • Nível rua: quarteirões e cruzamentos
  • Nível local: entrada de prédios e obstáculos
  • Nível movimento: posição precisa e orientação
  • Nível controle: velocidade das rodas e sensores

Estados e Tempo

Alguns domínios requerem representação explícita do tempo. Um estado temporal inclui não apenas o que é verdade, mas quando. Compromissos têm horários, recursos têm prazos de validade, ações têm durações. Esta dimensão temporal adiciona riqueza e complexidade à representação, permitindo modelar problemas mais realistas.

Estado com Informação Temporal

  • reunião(sala_A, 14:00, 15:30)
  • disponível(impressora_1) até 16:00
  • bateria(drone_2) = 45min_restantes
  • entrega_programada(pacote_X, 17:00±30min)
  • manutenção_agendada(elevador_3, amanhã_08:00)

Validação e Consistência

Nem toda combinação de valores forma um estado válido. Um objeto não pode estar em dois lugares simultaneamente. Um recipiente não pode conter mais que sua capacidade. Restrições de integridade garantem que nossos estados façam sentido, evitando situações impossíveis que confundiriam o planejador.

Restrições de Integridade Comuns

  • Exclusão mútua: apenas um valor por variável de estado
  • Capacidade: limites físicos e recursos finitos
  • Dependências: relações causais entre propriedades
  • Invariantes: propriedades que sempre devem valer
  • Leis físicas: gravidade, conservação de energia

Estados como Fundação

A representação de estados é a fundação sobre a qual construímos todo o edifício do planejamento automático. Como escolhemos representar o mundo determina quais problemas podemos resolver, quão eficientemente podemos resolvê-los, e quão naturais serão as soluções. É uma arte que equilibra expressividade com tratabilidade, detalhe com abstração, generalidade com eficiência.

Estados são mais que dados - são a linguagem através da qual máquinas compreendem e raciocinam sobre o mundo. Dominar esta linguagem é essencial para criar sistemas inteligentes que navegam a complexidade do mundo real. Com esta base sólida, estamos prontos para o próximo passo: entender como ações transformam estados, criando a dinâmica que torna o planejamento possível e poderoso!

Ações e Transições

Se estados são fotografias do mundo, ações são os verbos que transformam uma foto em outra. Abrir uma porta, mover uma peça, enviar uma mensagem - cada ação é uma ponte entre o que é e o que será. Mas como capturamos a essência de uma ação em termos que um computador possa entender? Como modelamos não apenas o que uma ação faz, mas quando pode ser feita e quais são suas consequências? Neste capítulo, exploraremos o coração pulsante do planejamento: as ações que dão vida aos planos.

Anatomia de uma Ação

Uma ação em planejamento automático não é apenas um nome; é uma estrutura rica que especifica precisamente quando pode ser executada e o que acontece quando é. Como uma receita detalhada, cada ação tem ingredientes necessários (pré-condições) e resultado garantido (efeitos). Esta precisão permite que sistemas automatizados raciocinem sobre sequências de ações sem ambiguidade.

Componentes de uma Ação

  • Nome: identificador único e parâmetros
  • Pré-condições: o que deve ser verdade para executar
  • Efeitos: o que muda após a execução
  • Duração: tempo necessário (em domínios temporais)
  • Custo: recursos consumidos ou penalidade

O Modelo STRIPS

O STRIPS (Stanford Research Institute Problem Solver) revolucionou a representação de ações nos anos 1970 e continua influente hoje. No STRIPS, uma ação tem pré-condições (o que deve ser verdade), lista de adição (o que se torna verdadeiro) e lista de remoção (o que deixa de ser verdadeiro). Simples mas poderoso, este modelo captura a essência de mudança de estado.

Ação STRIPS: Pegar Objeto

  • Nome: pegar(robô, objeto, local)
  • Pré-condições: em(robô, local), em(objeto, local), mão_livre(robô)
  • Adiciona: segurando(robô, objeto)
  • Remove: em(objeto, local), mão_livre(robô)
  • Resultado: robô agora carrega o objeto

Ações Parametrizadas

Em vez de definir uma ação separada para cada objeto, usamos parâmetros para criar esquemas de ação. "Mover(X, de_Y, para_Z)" representa infinitas ações específicas - mover caixa de A para B, mover robô de C para D. Esta parametrização torna a representação compacta e o raciocínio mais eficiente.

Esquema de Ação: Transportar

  • transportar(?veículo, ?carga, ?origem, ?destino)
  • Pré: em(?veículo, ?origem), em(?carga, ?origem)
  • Pré: capacidade(?veículo) ≥ peso(?carga)
  • Efeito: em(?veículo, ?destino), em(?carga, ?destino)
  • Efeito: ¬em(?veículo, ?origem), ¬em(?carga, ?origem)

Efeitos Condicionais

O mundo real é cheio de nuances. Abrir uma porta só deixa entrar luz se for dia. Regar plantas só as mantém vivas se não estiver congelando. Efeitos condicionais capturam estas sutilezas, permitindo que ações tenham consequências diferentes dependendo do contexto. Esta flexibilidade é crucial para modelar domínios realistas.

Ação com Efeitos Condicionais

  • Ação: acender_luz(interruptor)
  • Pré-condição: alcançável(interruptor)
  • Efeito: luz_acesa SE energia_disponível
  • Efeito: fusível_queimado SE corrente_excessiva
  • Efeito: sempre altera posição(interruptor)

Ações Durativas

Muitas ações levam tempo. Cozinhar um bolo demora 30 minutos, voar de São Paulo a Nova York leva 10 horas. Ações durativas têm condições no início, condições mantidas durante a execução, e efeitos no fim. Modelar duração permite otimização temporal e execução paralela de ações compatíveis.

Ação Durativa: Carregar Bateria

  • Duração: 120 minutos
  • No início: plugar(dispositivo, carregador)
  • Durante: manter energia_elétrica, dispositivo_conectado
  • No fim: bateria_cheia(dispositivo)
  • Efeito contínuo: bateria aumenta 0.83% por minuto

Ações Estocásticas

Nem sempre sabemos exatamente o que uma ação produzirá. Lançar um dado, fazer um investimento, tratar uma doença - muitas ações têm resultados probabilísticos. Ações estocásticas modelam esta incerteza, associando probabilidades a diferentes efeitos possíveis. Planejar com incerteza requer técnicas especiais que exploraremos em capítulos futuros.

Ação Probabilística: Tentativa de Reparo

  • reparar(técnico, equipamento)
  • Pré-condição: quebrado(equipamento), presente(técnico)
  • Efeito₁ (70%): funcionando(equipamento)
  • Efeito₂ (20%): parcialmente_funcionando(equipamento)
  • Efeito₃ (10%): permanece quebrado(equipamento)

Ações e Recursos

Ações frequentemente consomem recursos - combustível, dinheiro, tempo, energia. Modelar recursos explicitamente permite planejamento mais realista. Um drone de entrega deve considerar autonomia de bateria, um robô de construção deve gerenciar materiais disponíveis. Recursos criam restrições adicionais mas tornam planos mais robustos.

Gestão de Recursos em Ações

  • Recursos consumíveis: combustível, materiais, dinheiro
  • Recursos reutilizáveis: ferramentas, veículos, salas
  • Recursos com capacidade: banda de rede, memória
  • Recursos temporais: prazos, janelas de tempo
  • Recursos compartilhados: exigem coordenação

Interações entre Ações

Ações não existem no vácuo - elas interagem de formas complexas. Duas ações podem ser mutuamente exclusivas (dois robôs não podem ocupar o mesmo espaço), sinérgicas (carregar duas caixas no mesmo caminhão economiza combustível), ou ter efeitos cumulativos. Entender estas interações é crucial para planejamento eficiente.

Tipos de Interação

  • Conflito: ações incompatíveis no mesmo momento
  • Sinergia: ações que se beneficiam mutuamente
  • Precedência: uma ação habilita outra
  • Interferência: uma ação desfaz efeitos de outra
  • Paralelismo: ações independentes executáveis simultaneamente

Ações Abstratas e Hierárquicas

Problemas complexos beneficiam-se de hierarquias de ações. "Preparar jantar" decompõe-se em "comprar ingredientes", "cozinhar" e "servir", cada uma decompondo-se em ações mais específicas. Ações abstratas permitem planejar em múltiplos níveis, refinando detalhes conforme necessário.

Hierarquia de Ações - Mudança

  • Nível 1: mudar_de_casa
  • Nível 2: embalar_pertences, contratar_mudança, limpar_casa_nova
  • Nível 3: embalar_roupas, embalar_livros, embalar_frágeis
  • Nível 4: pegar_caixa, colocar_itens, lacrar_caixa, etiquetar
  • Nível 5: ações motoras básicas

Validação e Simulação

Antes de executar no mundo real, podemos simular ações para prever consequências. Um simulador aplica ações a estados, gerando trajetórias possíveis. Isso permite testar planos, identificar problemas e otimizar sequências sem riscos ou custos reais.

Simulação de Ações

  • Verificar pré-condições antes de aplicar
  • Aplicar efeitos deterministicamente ou probabilisticamente
  • Rastrear mudanças de estado
  • Detectar conflitos e deadlocks
  • Avaliar métricas de qualidade do plano

Ações são os motores da mudança no mundo do planejamento. São elas que transformam possibilidade em realidade, intenção em execução. Compreender profundamente como modelar e raciocinar sobre ações é essencial para criar sistemas que não apenas pensam, mas agem de forma inteligente e eficaz. Com estados para representar o mundo e ações para transformá-lo, falta apenas uma peça: os objetivos que direcionam todo o processo de planejamento!

Objetivos e Metas

Todo plano começa com um sonho, uma visão de como queremos que o mundo seja. Na vida, chamamos isso de objetivos ou metas. No planejamento automático, objetivos são descrições formais de estados desejados - o destino para onde nossos planos devem nos levar. Mas como expressamos desejos complexos em linguagem que máquinas entendam? Como equilibramos múltiplos objetivos conflitantes? Como lidamos com metas que evoluem com o tempo? Este capítulo explora a arte de definir o que queremos alcançar.

A Natureza dos Objetivos

Um objetivo é mais que um estado específico - é uma caracterização de estados aceitáveis. Quando pedimos pizza, não especificamos a posição exata de cada molécula; descrevemos propriedades desejadas: pizza quente, saborosa, entregue em casa. Esta flexibilidade permite que planejadores encontrem qualquer solução satisfatória, não apenas uma predeterminada.

Tipos de Objetivos

  • Objetivos de alcance: atingir certas condições
  • Objetivos de manutenção: preservar propriedades
  • Objetivos de otimização: maximizar ou minimizar métricas
  • Objetivos de prevenção: evitar estados indesejados
  • Objetivos procedimentais: seguir sequências específicas

Objetivos Conjuntivos

A maioria dos problemas reais envolve múltiplos sub-objetivos que devem ser satisfeitos simultaneamente. Preparar um jantar romântico requer comida pronta, mesa arrumada, música ambiente e velas acesas - todos verdadeiros ao mesmo tempo. Objetivos conjuntivos criam desafios interessantes de coordenação e ordenação.

Objetivo Complexo: Festa de Aniversário

  • bolo_preparado ∧ bolo_decorado
  • convidados_presentes ≥ 10
  • decoração_instalada ∧ luzes_funcionando
  • música_tocando ∧ volume_adequado
  • aniversariante_feliz

Objetivos Disjuntivos

Às vezes, qualquer uma de várias alternativas é aceitável. Para chegar ao trabalho, posso ir de carro, ônibus, bicicleta ou caminhando - qualquer uma atinge o objetivo. Objetivos disjuntivos oferecem flexibilidade, permitindo que o planejador escolha a opção mais conveniente ou eficiente dado o contexto.

Alternativas para Objetivo

  • Objetivo: documento_assinado
  • Opção 1: assinatura_digital_válida
  • Opção 2: assinatura_física ∧ documento_escaneado
  • Opção 3: procuração_válida ∧ assinatura_procurador
  • Qualquer opção satisfaz o objetivo principal

Objetivos Temporais

Muitos objetivos têm componentes temporais. Entregar antes do prazo, manter temperatura estável por uma hora, garantir backup diário. Objetivos temporais podem especificar quando algo deve acontecer, por quanto tempo deve durar, ou sequências temporais complexas. Eles adicionam uma dimensão rica mas desafiadora ao planejamento.

Padrões Temporais em Objetivos

  • Deadline: concluir_antes(tarefa, 17:00)
  • Duração: manter_por(temperatura=25°C, 2_horas)
  • Periodicidade: executar_cada(backup, 24_horas)
  • Sequência: depois(A, B) ∧ depois(B, C)
  • Simultaneidade: durante(processo_A, processo_B)

Objetivos com Preferências

Nem todos os objetivos têm igual importância. Queremos chegar no horário E confortavelmente E economicamente, mas se necessário, sacrificamos conforto por pontualidade. Modelar preferências permite planejadores fazerem trade-offs inteligentes, produzindo planos que melhor equilibram múltiplos critérios.

Hierarquia de Preferências - Viagem

  • Essencial (peso 1000): chegar_destino ∧ segurança
  • Importante (peso 100): dentro_orçamento ∧ pontual
  • Desejável (peso 10): conforto ∧ entretenimento
  • Bônus (peso 1): upgrade_gratuito ∧ milhas_extras
  • Maximizar: Σ (peso × objetivo_satisfeito)

Objetivos de Otimização

Além de satisfazer condições, frequentemente queremos otimizar métricas. Minimizar custo, tempo ou risco. Maximizar lucro, satisfação ou cobertura. Objetivos de otimização transformam planejamento de problema de satisfação em problema de otimização, onde buscamos não apenas uma solução, mas a melhor solução.

Métricas Comuns de Otimização

  • Tempo total: minimizar duração do plano
  • Custo: minimizar recursos gastos
  • Qualidade: maximizar satisfação de critérios
  • Risco: minimizar probabilidade de falha
  • Utilização: maximizar uso eficiente de recursos

Objetivos Evolutivos

Em ambientes dinâmicos, objetivos podem mudar durante a execução. Um robô de resgate pode receber novas informações sobre vítimas. Um sistema de navegação adapta a rota com mudanças no trânsito. Objetivos evolutivos requerem replanejamento dinâmico e flexibilidade para adaptar-se a novas prioridades.

Adaptação de Objetivos

  • Monitorar mudanças no ambiente
  • Detectar quando objetivos tornam-se impossíveis
  • Receber novos objetivos durante execução
  • Repriorizar baseado em contexto atual
  • Manter histórico de objetivos para aprendizado

Objetivos e Restrições

A fronteira entre objetivos e restrições pode ser sutil. "Não colidir" é uma restrição de segurança ou objetivo de prevenção? Na prática, restrições são condições que devem sempre valer, enquanto objetivos são estados a alcançar. Restrições podam o espaço de planos válidos; objetivos direcionam a busca dentro desse espaço.

Objetivos vs. Restrições - Drone

  • Objetivo: fotografar_todos_pontos_interesse
  • Objetivo: retornar_base
  • Restrição: altitude ∈ [10m, 120m]
  • Restrição: distância_obstáculos > 5m
  • Restrição: bateria > 20% (margem segurança)

Decomposição de Objetivos

Objetivos complexos frequentemente decompõem-se em sub-objetivos mais simples. "Construir casa" divide-se em "preparar terreno", "fazer fundação", "erguer estrutura", etc. Esta decomposição hierárquica facilita o planejamento, permitindo focar em partes gerenciáveis e combinar sub-planos.

Árvore de Decomposição - Preparar Relatório

  • Relatório_completo
  • ├── Dados_coletados
  • ├── Análise_realizada
  • ├── Gráficos_criados
  • ├── Texto_escrito
  • └── Documento_formatado

Verificação de Objetivos

Como sabemos quando um objetivo foi alcançado? Para objetivos simples, verificação é direta - checar se condições são satisfeitas no estado atual. Para objetivos complexos envolvendo tempo, probabilidade ou otimização, verificação pode requerer análise sofisticada de trajetórias, cálculo de métricas agregadas, ou avaliação estatística.

Métodos de Verificação

  • Verificação booleana: condições satisfeitas ou não
  • Verificação temporal: análise de traces temporais
  • Verificação probabilística: estatísticas sobre execuções
  • Verificação fuzzy: graus de satisfação
  • Verificação contínua: monitoramento em tempo real

Objetivos são a bússola do planejamento automático, apontando a direção e definindo o sucesso. Sem objetivos claros, até o melhor planejador vaga sem rumo. Com objetivos bem definidos, transformamos computadores em solucionadores de problemas focados e eficazes. Aprendemos que objetivos podem ser simples ou complexos, rígidos ou flexíveis, estáticos ou dinâmicos. Esta riqueza permite modelar a diversidade de problemas do mundo real. Agora, com estados, ações e objetivos em mãos, estamos prontos para explorar os algoritmos que encontram caminhos do presente ao futuro desejado!

Algoritmos de Busca

Imagine-se em um labirinto gigantesco, onde cada corredor leva a dezenas de outros corredores, e apenas um caminho leva à saída. Como você encontraria o caminho? Exploraria sistematicamente? Seguiria sua intuição? Marcaria caminhos já visitados? Os algoritmos de busca são estratégias matemáticas para navegar por espaços de possibilidades, encontrando caminhos do estado inicial ao objetivo. São o motor que transforma problemas de planejamento em soluções concretas. Neste capítulo, exploraremos desde buscas cegas até estratégias sofisticadas que parecem ter intuição quase humana.

O Espaço de Busca

Todo problema de planejamento define implicitamente um grafo gigantesco: nós são estados, arestas são ações. O desafio é encontrar um caminho do nó inicial ao nó objetivo sem construir o grafo inteiro - que pode ter bilhões ou infinitos nós. Algoritmos de busca exploram este espaço estrategicamente, expandindo apenas nós promissores.

Características do Espaço de Busca

  • Tamanho: número de estados possíveis
  • Fator de ramificação: ações aplicáveis por estado
  • Profundidade: comprimento da solução
  • Densidade de soluções: quantidade de caminhos válidos
  • Estrutura: padrões e simetrias exploráveis

Busca em Largura (BFS)

A busca em largura explora o espaço como ondas em um lago - uniformemente em todas as direções. Examina todos os estados a distância 1, depois distância 2, e assim por diante. Garante encontrar o caminho mais curto (em número de ações), mas consome muita memória, armazenando todos os estados visitados. É como procurar as chaves perdidas verificando sistematicamente cada centímetro da casa.

BFS em Ação - Puzzle de 8 Peças

  • Nível 0: estado inicial
  • Nível 1: todos os estados após 1 movimento
  • Nível 2: todos os estados após 2 movimentos
  • Continua até encontrar configuração objetivo
  • Garantia: solução com mínimo de movimentos

Busca em Profundidade (DFS)

A busca em profundidade mergulha fundo em uma direção antes de retroceder e tentar outra. Como explorar uma caverna seguindo sempre o caminho mais à esquerda até encontrar um beco sem saída. Usa pouca memória mas pode perder-se em ramos infinitos ou encontrar soluções muito longas. É eficiente quando soluções estão profundas e uniformemente distribuídas.

Comparando BFS e DFS

  • BFS: memória O(bᵈ), tempo O(bᵈ), ótima
  • DFS: memória O(d), tempo O(bᵐ), não-ótima
  • b = fator de ramificação
  • d = profundidade da solução
  • m = profundidade máxima

Busca de Custo Uniforme

Quando ações têm custos diferentes, queremos o caminho mais barato, não necessariamente o mais curto. A busca de custo uniforme expande nós em ordem de custo acumulado, como água fluindo sempre pelo caminho de menor resistência. Garante solução ótima em termos de custo, essencial para problemas onde recursos são críticos.

Aplicações de Custo Uniforme

  • Navegação GPS: menor tempo ou distância
  • Roteamento de rede: menor latência
  • Logística: menor custo de transporte
  • Robótica: menor consumo de energia
  • Jogos: maximizar pontuação

Busca A* (A-estrela)

A* é a estrela dos algoritmos de busca, combinando o melhor de dois mundos: considera tanto o custo já gasto (g) quanto uma estimativa do custo restante (h). É como navegar com GPS que considera não apenas a distância percorrida, mas também a distância em linha reta até o destino. Com uma boa heurística, A* é otimamente eficiente - nenhum algoritmo que garante solução ótima expande menos nós.

Função de Avaliação A*

  • f(n) = g(n) + h(n)
  • g(n) = custo do início até n
  • h(n) = estimativa de n até objetivo
  • Expande nó com menor f(n)
  • Ótima se h(n) nunca superestima (admissível)

Busca Gulosa

A busca gulosa ignora o passado e foca apenas no futuro estimado, sempre escolhendo o que parece mais próximo do objetivo. É como escalar uma montanha sempre subindo a inclinação mais íngreme. Rápida mas pode ficar presa em máximos locais. Útil quando velocidade importa mais que otimalidade.

Quando Usar Busca Gulosa

  • Problemas com boas heurísticas
  • Necessidade de solução rápida
  • Otimalidade não é crítica
  • Espaço de estados muito grande
  • Primeira solução aceitável é suficiente

Busca Bidirecional

Por que buscar apenas do início? A busca bidirecional explora simultaneamente do início para o fim e do fim para o início, encontrando-se no meio. Como dois times de resgate cavando um túnel de ambos os lados da montanha. Pode reduzir drasticamente o espaço explorado - duas buscas de profundidade d/2 em vez de uma de profundidade d.

Desafios da Busca Bidirecional

  • Definir busca reversa (nem sempre óbvia)
  • Detectar quando as buscas se encontram
  • Gerenciar duas fronteiras de exploração
  • Garantir otimalidade do caminho combinado
  • Overhead pode superar benefícios em problemas pequenos

Busca com Aprofundamento Iterativo

Este algoritmo engenhoso combina benefícios de DFS (pouca memória) com BFS (solução ótima). Executa DFS com limite de profundidade crescente: primeiro profundidade 1, depois 2, depois 3... Parece ineficiente repetir trabalho, mas o custo é dominado pela última iteração. É como procurar algo começando pela gaveta mais próxima e expandindo o raio gradualmente.

IDA* - A* com Aprofundamento Iterativo

  • Combina A* com aprofundamento iterativo
  • Limite baseado em f(n) em vez de profundidade
  • Memória linear O(d)
  • Mantém otimalidade de A*
  • Ideal para espaços grandes com boa heurística

Busca Local e Hill Climbing

Nem sempre precisamos do caminho, apenas do destino. Busca local mantém apenas o estado atual e move para vizinhos melhores, como escalar no nevoeiro sempre subindo. Hill climbing, simulated annealing, busca tabu - variantes que tentam escapar de ótimos locais. Úteis para otimização e problemas onde o caminho não importa.

Estratégias para Escapar de Ótimos Locais

  • Random restart: reiniciar de posições aleatórias
  • Simulated annealing: aceitar movimentos ruins probabilisticamente
  • Busca tabu: memorizar e evitar estados recentes
  • Beam search: manter k melhores estados
  • Algoritmos genéticos: combinar soluções parciais

Busca em Grafos AND-OR

Alguns problemas têm estrutura AND-OR: para resolver A, preciso resolver B E C, ou resolver D OU E. Grafos AND-OR capturam esta estrutura, permitindo decomposição de problemas. A busca deve encontrar não um caminho, mas uma árvore de solução cobrindo todas as contingências. Fundamental para planejamento com incerteza.

Aplicações de Grafos AND-OR

  • Diagnóstico: testar sintomas e causas
  • Jogos: considerar todas as respostas do oponente
  • Planejamento contingente: planos com ramificações
  • Demonstração de teoremas: casos e subcasos
  • Parsing: análise sintática de linguagens

Algoritmos de busca são a ponte entre problemas e soluções, transformando espaços abstratos de possibilidades em caminhos concretos de ação. Cada algoritmo tem suas forças e fraquezas, brilhando em diferentes contextos. A arte está em escolher o algoritmo certo para cada problema, equilibrando completude, otimalidade, eficiência temporal e espacial. Mas mesmo o melhor algoritmo de busca pode naufragar em espaços muito grandes. É aí que entram as heurísticas - intuições matemáticas que guiam a busca na direção certa!

Heurísticas e Otimização

Se algoritmos de busca são exploradores navegando territórios desconhecidos, heurísticas são suas bússolas - não garantem o caminho perfeito, mas apontam a direção promissora. Uma boa heurística transforma uma busca cega em exploração guiada, reduzindo o tempo de horas para segundos. Como desenvolvemos estas intuições matemáticas? Como garantimos que ajudam mais do que atrapalham? Neste capítulo, mergulharemos na arte e ciência de criar heurísticas eficazes, o segredo por trás da eficiência dos planejadores modernos.

A Essência de uma Heurística

Uma heurística é uma função que estima o custo ou distância do estado atual até o objetivo. Como estimar o tempo de viagem olhando a distância em linha reta no mapa - não é exato, mas fornece orientação útil. A magia está em criar estimativas computacionalmente baratas que correlacionem bem com o custo real, acelerando dramaticamente a busca sem sacrificar qualidade.

Propriedades de Boas Heurísticas

  • Admissibilidade: nunca superestima o custo real
  • Consistência: satisfaz desigualdade triangular
  • Informatividade: estimativas próximas do real
  • Eficiência: rápida de calcular
  • Domínio-independente: aplicável a múltiplos problemas

Heurísticas Admissíveis

Uma heurística admissível nunca superestima o custo real - é otimista por natureza. Esta propriedade é crucial: garante que A* encontre solução ótima. É como estimar o tempo de viagem ignorando semáforos - sempre subestima, mas mantém a busca honesta. Criar heurísticas admissíveis informativas é uma arte que equilibra otimismo com realismo.

Heurísticas Clássicas - 8-Puzzle

  • Peças fora do lugar: conta peças em posição errada
  • Manhattan: soma distâncias Manhattan de cada peça
  • Linear conflict: Manhattan + conflitos lineares
  • Pattern databases: custos pré-computados de subproblemas
  • Cada uma mais informativa, mantendo admissibilidade

Relaxação de Problemas

Uma técnica poderosa para criar heurísticas é relaxar o problema original - remover restrições tornando-o mais fácil de resolver. O custo ótimo do problema relaxado é uma heurística admissível para o problema original. Como estimar o tempo de viagem assumindo que podemos voar em linha reta - claramente otimista, mas útil.

Técnicas de Relaxação

  • Ignorar pré-condições negativas
  • Assumir recursos infinitos
  • Permitir ações simultâneas ilimitadas
  • Remover efeitos de delete
  • Abstrair detalhes mantendo estrutura

Heurísticas Baseadas em Padrões

Pattern databases armazenam soluções ótimas para subproblemas, usando-as como heurísticas. Como memorizar finais de jogos de xadrez - quando reconhecemos um padrão, sabemos exatamente quantos movimentos faltam. Requer pré-computação e memória, mas fornece estimativas muito precisas. Técnica poderosa para domínios com estrutura decomponível.

Construindo Pattern Databases

  • Identificar subproblemas independentes
  • Resolver otimamente cada subproblema
  • Armazenar custos em tabela hash
  • Durante busca: consultar e somar/maximizar
  • Trade-off: memória vs. qualidade da heurística

Aprendendo Heurísticas

Máquinas podem aprender suas próprias heurísticas! Treinando em milhares de problemas resolvidos, redes neurais aprendem a estimar custos. Reinforcement learning descobre features importantes. É como desenvolver intuição através da experiência - depois de resolver muitos problemas similares, desenvolvemos "feeling" para soluções.

Aprendizado de Heurísticas

  • Coletar dados: problemas e custos reais
  • Extrair features: características do estado
  • Treinar modelo: regressão ou rede neural
  • Validar: testar em problemas novos
  • Iterar: refinar com mais dados

Heurísticas Não-Admissíveis

Às vezes, sacrificamos garantia de otimalidade por velocidade. Heurísticas não-admissíveis podem superestimar, guiando agressivamente ao objetivo. Como usar atalhos arriscados - geralmente funcionam, ocasionalmente levam a caminhos piores. Úteis quando precisamos de soluções rápidas e "bom o suficiente" é aceitável.

Quando Usar Heurísticas Não-Admissíveis

  • Tempo real: decisões rápidas críticas
  • Espaços enormes: admissível ainda muito lento
  • Aproximação aceitável: 10% pior é tolerável
  • Anytime: melhorar solução incrementalmente
  • Competição: velocidade vence perfeição

Combinando Múltiplas Heurísticas

Por que escolher uma quando podemos usar várias? Podemos tomar o máximo de várias heurísticas admissíveis (mantém admissibilidade), fazer média ponderada (pode perder admissibilidade mas suaviza erros), ou selecionar dinamicamente baseado no contexto. Como consultar múltiplos especialistas e sintetizar suas opiniões.

Estratégias de Combinação

  • Maximum: h(n) = max(h₁(n), h₂(n), ...)
  • Weighted sum: h(n) = Σwᵢhᵢ(n)
  • Adaptive: escolher heurística por features do estado
  • Cascata: heurística rápida primeiro, refinada se necessário
  • Votação: múltiplas heurísticas votam na direção

Heurísticas Específicas de Domínio

Conhecimento do domínio permite heurísticas poderosas. Em roteamento, considerar tráfego típico por horário. Em jogos, avaliar posições por padrões conhecidos. Em robótica, considerar consumo energético por terreno. Heurísticas específicas superam genéricas, mas requerem expertise e não generalizam.

Heurísticas Especializadas

  • Logística: considerar horários de pico e capacidades
  • Manufatura: tempo de setup entre produtos
  • Medicina: gravidade e urgência de sintomas
  • Finanças: volatilidade e correlações históricas
  • Jogos: valor posicional e controle de território

Análise e Avaliação

Como sabemos se uma heurística é boa? Medimos fator de ramificação efetivo - quantos nós expandimos comparado com busca cega. Analisamos erro médio e máximo comparado com custo real. Testamos em benchmark de problemas. Uma boa heurística reduz exponencialmente o espaço explorado mantendo qualidade da solução.

Métricas de Qualidade

  • Redução de nós expandidos
  • Tempo de computação total
  • Qualidade da solução (se não-admissível)
  • Robustez em diferentes problemas
  • Escalabilidade com tamanho do problema

O Futuro das Heurísticas

O campo evolui rapidamente. Deep learning cria heurísticas que superam humanos. Quantum computing promete explorar espaços exponenciais. Meta-raciocínio escolhe heurísticas automaticamente. O futuro combina intuição humana, aprendizado de máquina e poder computacional para criar heurísticas cada vez mais poderosas.

Tendências Emergentes

  • Neural heuristics: redes profundas aprendem estimativas
  • Transfer learning: heurísticas que generalizam domínios
  • Online learning: heurísticas que melhoram durante uso
  • Explicável: heurísticas que justificam estimativas
  • Quantum: explorar superposição de estados

Heurísticas são a ponte entre força bruta e inteligência, transformando buscas intratáveis em explorações eficientes. São a intuição matemática que guia através de espaços impossíveis de explorar completamente. Dominar heurísticas é dominar a arte de aproximar o perfeito com o possível, de trocar garantias teóricas por desempenho prático. Com este conhecimento, estamos prontos para aplicar tudo que aprendemos no reino do planejamento clássico - onde teoria encontra prática!

Planejamento Clássico

O planejamento clássico é o coração da disciplina - um mundo idealizado onde temos informação completa, ações determinísticas e objetivos claros. Como jogar xadrez com todas as peças visíveis e regras imutáveis. Embora simplificado comparado ao mundo real, o planejamento clássico fornece fundamentos teóricos profundos e algoritmos práticos que resolvem problemas importantes. É o laboratório onde testamos ideias antes de enfrentar a complexidade total da realidade. Neste capítulo, exploraremos os pilares do planejamento clássico e suas técnicas revolucionárias.

Assumções do Mundo Clássico

O planejamento clássico faz assumções simplificadoras que tornam o problema tratável. Ambiente totalmente observável - conhecemos o estado completo. Ações determinísticas - sabemos exatamente seus efeitos. Ambiente estático - muda apenas por nossas ações. Objetivos de alcance - queremos atingir certos estados. Estas assumções permitem garantias teóricas fortes e algoritmos eficientes.

As Assumções Clássicas

  • Observabilidade completa: estado totalmente conhecido
  • Determinismo: ações têm efeitos previsíveis
  • Finitude: estados, ações e planos finitos
  • Estaticidade: ambiente muda apenas por ações do agente
  • Objetivos de alcance: atingir condições específicas

STRIPS e Sua Linguagem

STRIPS estabeleceu a linguagem padrão para planejamento clássico. Ações têm pré-condições e efeitos. Estados são conjuntos de proposições. Planos são sequências de ações. Simples mas expressivo, STRIPS captura a essência de muitos problemas práticos. Sua influência persiste em planejadores modernos, que estendem mas preservam suas ideias centrais.

Mundo dos Blocos em STRIPS

  • Estado: sobre(A,B), sobre(B,mesa), livre(A), livre(C)
  • Ação: mover(X,Y,Z)
  • Pré: sobre(X,Y) ∧ livre(X) ∧ livre(Z)
  • Add: sobre(X,Z), livre(Y)
  • Del: sobre(X,Y), livre(Z)

Planejamento como Busca no Espaço de Estados

A abordagem mais direta: buscar no grafo de estados. Cada nó é um estado completo, cada aresta uma ação aplicável. Algoritmos de busca exploram este espaço procurando caminho ao objetivo. Forward search parte do inicial aplicando ações. Backward search parte do objetivo regredindo pré-condições. Ambas têm méritos dependendo da estrutura do problema.

Forward vs. Backward Search

  • Forward: natural, explora do conhecido
  • Forward: pode explorar ações irrelevantes
  • Backward: focado no objetivo
  • Backward: pode gerar submetas impossíveis
  • Bidirecional: combina vantagens

Graphplan: Revolução através de Grafos

Graphplan mudou o jogo nos anos 90. Em vez de buscar estado por estado, constrói um grafo em camadas alternando proposições e ações. Detecta mutex (exclusões mútuas) - proposições/ações incompatíveis. Expande até objetivo aparecer sem mutex, então extrai plano. Extremamente eficiente para muitos domínios, inspirou gerações de planejadores.

Estrutura do Grafo de Planejamento

  • Camada 0: proposições iniciais
  • Camada ação: ações com pré-condições satisfeitas
  • Camada proposição: efeitos das ações
  • Mutex: marca conflitos e impossibilidades
  • Expansão até ponto fixo ou objetivo

Planejamento como Satisfatibilidade

Insight brilhante: planejamento pode ser codificado como problema de satisfatibilidade booleana (SAT). Variáveis representam proposições em cada tempo e ações executadas. Cláusulas codificam pré-condições, efeitos, mutex. SAT solver encontra atribuição satisfazível = plano válido. Permite usar décadas de pesquisa em SAT solvers ultra-otimizados.

Codificação SAT de Planejamento

  • Variável: at_location_A_time_3
  • Variável: do_move_A_to_B_time_2
  • Cláusula: ação implica pré-condições
  • Cláusula: ação implica efeitos
  • Cláusula: no máximo uma ação por tempo

Heurísticas do Grafo de Planejamento

Grafos de planejamento relaxados fornecem excelentes heurísticas. Ignorando mutex, calculamos rapidamente quantas camadas até objetivo. Ou extraímos plano relaxado e usamos seu comprimento/custo. Estas heurísticas são informativas e rápidas de computar, acelerando dramaticamente busca heurística. Base de muitos planejadores estado-da-arte.

Heurísticas Baseadas em Relaxação

  • h_max: máximo nível de qualquer submeta
  • h_add: soma níveis assumindo independência
  • h_FF: comprimento do plano relaxado
  • h_LM: landmarks necessários
  • Cada uma balanceia informatividade e custo

Planejamento Ótimo vs. Satisficing

Nem sempre precisamos do plano perfeito. Planejamento ótimo garante menor custo mas pode ser muito lento. Planejamento satisficing busca qualquer plano válido rapidamente. Como escolher entre o restaurante perfeito (ótimo) ou qualquer restaurante decente (satisficing). A escolha depende do domínio e restrições de tempo.

Trade-offs de Otimalidade

  • Ótimo: garantia de melhor solução
  • Ótimo: pode ser exponencialmente mais lento
  • Satisficing: solução rápida
  • Satisficing: qualidade variável
  • Bounded: garantia de no máximo k% pior

Decomposição e Abstração

Problemas grandes demandam divide-and-conquer. Decompomos em subproblemas independentes ou fracamente acoplados. Resolvemos abstração de alto nível, depois refinamos. Como planejar viagem decidindo primeiro países, depois cidades, depois atividades. Hierarquia e modularidade tornam problemas grandes tratáveis.

Níveis de Abstração - Construção

  • Nível 1: principais fases (fundação, estrutura, acabamento)
  • Nível 2: subfases (escavação, concreto, ferragem)
  • Nível 3: tarefas específicas (contratar, comprar, executar)
  • Nível 4: ações detalhadas (ligar, mover, martelar)
  • Refinamento incremental de abstrato para concreto

Análise de Complexidade

Planejamento clássico é PSPACE-completo em geral - muito difícil! Mas restrições tornam tratável. Proposições sem delete: polinomial. Ações unitárias: NP-completo. Comprimento limitado: NP. Entender complexidade ajuda escolher representações e algoritmos apropriados. Teoria guia prática.

Complexidade por Restrições

  • Geral STRIPS: PSPACE-completo
  • Sem pré-condições negativas: PSPACE
  • Comprimento polinomial: NP-completo
  • Delete-free: Polinomial
  • SAS+ unitário: NP-completo

Benchmarks e Competições

International Planning Competition (IPC) impulsiona o campo. Domínios benchmark testam diferentes aspectos - logística, puzzles, controle. Planejadores competem em tracks (ótimo, satisficing, temporal). Competição incentiva inovação e fornece comparação objetiva. Muitas técnicas revolucionárias surgiram para vencer IPC.

Domínios Clássicos de Benchmark

  • Logistics: transportar pacotes com veículos
  • Blocks World: empilhar blocos em configurações
  • Gripper: robô movendo bolas entre salas
  • Elevator: otimizar transporte em prédio
  • Sokoban: puzzle de empurrar caixas

Planejamento clássico é onde elegância matemática encontra utilidade prática. Suas assumções simplificadoras permitem teoria profunda e algoritmos poderosos que resolvem problemas reais importantes. É o campo de provas onde testamos ideias antes de enfrentar a complexidade total do mundo. Dominar planejamento clássico fornece intuições e ferramentas essenciais para todos os tipos de planejamento. Com esta base sólida, estamos prontos para adicionar a dimensão do tempo - onde ações têm duração e o relógio não para!

Planejamento Temporal

O mundo real não espera. Enquanto o robô carrega sua bateria, o tempo passa, prazos se aproximam, oportunidades surgem e desaparecem. O planejamento temporal abraça esta realidade, modelando explicitamente duração de ações, restrições temporais e execução concorrente. É como reger uma orquestra onde cada músico tem seu tempo, mas todos devem harmonizar-se. Neste capítulo, exploraremos como o tempo transforma o planejamento, adicionando riqueza e complexidade que espelham melhor nosso mundo dinâmico.

O Tempo como Dimensão Fundamental

Adicionar tempo muda tudo. Ações não são mais instantâneas - cozinhar leva 30 minutos, voar leva horas. Recursos têm disponibilidade temporal - a sala está livre das 14h às 16h. Objetivos têm prazos - entregar antes do meio-dia. O tempo transforma planejamento de sequenciamento puro em problema de agendamento rico, onde quando importa tanto quanto o quê.

Elementos Temporais em Planejamento

  • Duração: quanto tempo cada ação leva
  • Janelas temporais: quando ações podem ocorrer
  • Prazos: limites para completar objetivos
  • Recursos temporais: disponibilidade variável
  • Sincronização: coordenação entre ações paralelas

Ações Durativas e Suas Condições

Ações durativas têm estrutura temporal rica. Condições no início devem valer para iniciar. Condições invariantes devem manter-se durante execução. Efeitos podem ocorrer no início, durante ou no fim. Como assar um bolo: pré-aquecer forno (início), manter temperatura (durante), bolo pronto (fim). Esta granularidade permite modelagem precisa de processos complexos.

Ação Durativa: Voo Comercial

  • Duração: 180 minutos
  • No início: avião_em(origem) ∧ combustível ≥ necessário
  • No fim: avião_em(destino)
  • Durante: altitude > 10000ft ∧ velocidade > 400km/h
  • Efeito contínuo: combustível diminui, distância aumenta

Concorrência e Paralelismo

O poder real do planejamento temporal é permitir ações simultâneas. Enquanto o robô A carrega caixas, o robô B pode preparar o caminhão. Mas concorrência traz desafios: conflitos de recursos, sincronização, coordenação. É como cozinhar uma refeição completa - múltiplos pratos preparados em paralelo, mas servidos juntos.

Gerenciando Ações Paralelas

  • Identificar ações independentes executáveis em paralelo
  • Detectar conflitos de recursos compartilhados
  • Sincronizar pontos de encontro necessários
  • Balancear carga entre agentes/recursos
  • Minimizar tempo total (makespan)

Restrições Temporais Complexas

Allen's interval algebra fornece linguagem rica para relações temporais. A antes de B, A durante B, A sobrepõe B - treze relações básicas capturam todas as possibilidades entre intervalos. Podemos expressar restrições sofisticadas: "manutenção deve começar 2 horas após produção terminar mas antes da meia-noite".

Relações Temporais de Allen

  • Before: A termina antes de B começar
  • Meets: A termina exatamente quando B começa
  • Overlaps: A e B se sobrepõem parcialmente
  • During: A ocorre completamente dentro de B
  • Starts/Finishes: compartilham início/fim

Timeline-based Planning

Abordagem alternativa: modelar evolução de variáveis sobre o tempo. Cada variável tem timeline - sequência de valores com durações. Planejar é encontrar timelines consistentes que satisfazem objetivos. Natural para domínios contínuos como controle de satélites, onde variáveis (orientação, energia) evoluem continuamente.

Timeline de um Satélite

  • Orientação: [0-10min: Terra] → [10-15min: girando] → [15-30min: Marte]
  • Câmera: [0-10min: idle] → [10-30min: fotografando]
  • Bateria: [0-20min: descarga] → [20-40min: carga solar]
  • Memória: gradual enchimento, descarga durante transmissão
  • Consistência entre todas as timelines

Planejamento com Tempo Contínuo

Tempo real é contínuo, não discreto. Ações podem começar em qualquer instante, ter durações reais. Isto cria espaço de busca infinito! Técnicas especiais necessárias: discretização adaptativa, constraint programming, linear programming. Essencial para robótica e controle onde timing preciso importa.

Desafios do Tempo Contínuo

  • Espaço de decisão infinito
  • Precisão numérica e arredondamentos
  • Otimização não-linear complexa
  • Propagação de incerteza temporal
  • Trade-off precisão vs. tratabilidade

Recursos com Perfis Temporais

Recursos variam no tempo. Energia solar disponível apenas durante o dia. Banda de rede congestionada em horários de pico. Trabalhadores com turnos específicos. Modelar perfis temporais de recursos permite planejamento mais realista, evitando violações e aproveitando oportunidades.

Tipos de Recursos Temporais

  • Renováveis: se regeneram (energia solar)
  • Consumíveis: se esgotam (combustível)
  • Capacitados: limite instantâneo (CPU, memória)
  • Scheduled: disponibilidade por agenda
  • Variáveis: capacidade muda com tempo

Simple Temporal Networks

STNs representam restrições temporais como grafo. Nós são timepoints, arestas são constraints de distância. Podemos verificar consistência e calcular janelas temporais eficientemente. STPs (Simple Temporal Problems) estendem com disjunções. Ferramentas poderosas para raciocínio temporal eficiente.

STN para Missão de Drone

  • Nós: decolagem, chegada_A, chegada_B, pouso
  • Aresta: [chegada_A - decolagem] ∈ [10, 15] minutos
  • Aresta: [chegada_B - chegada_A] ∈ [5, 20] minutos
  • Aresta: [pouso - decolagem] ≤ 45 minutos (bateria)
  • Propagação determina janelas válidas para cada evento

Otimização Temporal

Não basta encontrar plano válido temporalmente - queremos otimizar. Minimizar makespan (tempo total). Maximizar utilização de recursos. Minimizar atrasos. Balancear carga temporal. Problemas multi-objetivo onde tempo compete com outros critérios. Técnicas de otimização combinatória e metaheurísticas são essenciais.

Objetivos de Otimização Temporal

  • Makespan: minimizar tempo total de execução
  • Tardiness: minimizar atrasos além de prazos
  • Utilização: maximizar uso de recursos caros
  • Robustez: maximizar folga para incertezas
  • Energia: aproveitar períodos de tarifa baixa

Execução e Monitoramento Temporal

Planos temporais devem ser executados em mundo real onde relógios divergem, ações atrasam, durações variam. Executivo temporal monitora progresso, detecta desvios, dispara ações no momento certo. Como um maestro adaptando-se quando músicos aceleram ou desaceleram, mantendo harmonia geral.

Executivo Temporal Robusto

  • Dispatching: iniciar ações nos momentos corretos
  • Monitoramento: rastrear progresso real vs. planejado
  • Detecção de violações temporais iminentes
  • Adaptação local: ajustes menores online
  • Replanejamento: quando desvios são grandes

Planejamento temporal traz o realismo do tempo para o mundo do planejamento. Transforma problemas de sequências em sinfonias temporais onde timing, duração e sincronização criam harmonia ou caos. É desafiador - adiciona dimensões de complexidade - mas essencial para problemas reais onde o relógio não para. Dominar planejamento temporal é aprender a dançar com o tempo, criando planos que não apenas alcançam objetivos, mas o fazem no momento certo. Agora, preparemo-nos para o próximo nível de realismo: o mundo incerto onde nem tudo sai como planejado!

Planejamento sob Incerteza

A vida raramente segue o roteiro. O trânsito pode estar pior que o esperado, a chuva pode cancelar o piquenique, o investimento pode não render como previsto. O planejamento sob incerteza abraça esta realidade imprevisível, criando planos robustos que funcionam apesar das surpresas. É como navegar em névoa - não vemos tudo claramente, mas ainda precisamos chegar ao destino. Neste capítulo, exploraremos como planejar quando o futuro é probabilístico, a informação é parcial e o sucesso não é garantido.

Fontes de Incerteza

Incerteza permeia o mundo real de múltiplas formas. Ações podem ter efeitos não-determinísticos - o tratamento pode ou não curar. Observações são ruidosas - sensores têm erro. O ambiente evolui independentemente - outros agentes agem, eventos ocorrem. Objetivos podem mudar - novas prioridades surgem. Cada fonte requer técnicas específicas para gerenciar.

Tipos de Incerteza

  • Efeitos estocásticos: ações com resultados probabilísticos
  • Observabilidade parcial: estado incompletamente conhecido
  • Dinâmica externa: ambiente muda independentemente
  • Modelo incerto: dinâmica do mundo aproximada
  • Objetivos fluidos: preferências evoluem

Processos de Decisão de Markov

MDPs são o framework fundamental para decisões sequenciais sob incerteza. Estados, ações, probabilidades de transição e recompensas definem o modelo. O objetivo é encontrar política ótima - mapeamento de estados para ações que maximiza recompensa esperada. Como um GPS que recalcula a rota baseado no trânsito atual, sempre escolhendo a melhor ação dado o estado presente.

MDP de Robô de Entrega

  • Estados: localização, carga, bateria
  • Ações: mover(direção), pegar, entregar, carregar
  • Transições: P(chegar|mover) = 0.9, P(ficar|mover) = 0.1
  • Recompensas: +100 por entrega, -1 por movimento
  • Política: π(estado) → melhor ação

POMDPs: Observabilidade Parcial

POMDPs estendem MDPs para mundos parcialmente observáveis. O agente mantém crença - distribuição de probabilidade sobre estados possíveis. Decisões baseiam-se em crenças, não estados. Como dirigir na neblina - não vemos tudo, mas atualizamos constantemente nossa estimativa de onde estamos e o que está à frente.

Elementos de um POMDP

  • Belief state: P(estado | histórico de observações)
  • Observações: informação parcial sobre estado
  • Atualização bayesiana: revisar crença com nova observação
  • Ações de sensoriamento: obter informação
  • Value of information: quando vale a pena observar

Planejamento Contingente

Em vez de sequência linear, planos contingentes são árvores com ramificações condicionais. "Se o teste der positivo, fazer tratamento A, senão fazer B". Cada contingência preparada antecipadamente. Como um manual de troubleshooting - diferentes caminhos para diferentes situações. Robusto mas pode crescer exponencialmente.

Estrutura de Plano Contingente

  • Nós de decisão: escolher ação baseado em observação
  • Nós de chance: natureza escolhe resultado
  • Folhas: estados finais com utilidades
  • Política: ação para cada possível situação
  • Tamanho: exponencial no pior caso

Planejamento Probabilístico

Quando modelamos probabilidades explicitamente, podemos otimizar valor esperado, minimizar risco, ou balancear ambos. Técnicas incluem value iteration, policy iteration, e aproximações. Como investir - não sabemos retornos exatos, mas escolhemos portfolio que maximiza retorno esperado dado nosso apetite por risco.

Métricas Probabilísticas

  • Valor esperado: média ponderada de outcomes
  • Probabilidade de sucesso: chance de atingir objetivo
  • Value at Risk: perda máxima com 95% confiança
  • Variância: dispersão de resultados possíveis
  • Regret: diferença para melhor decisão em retrospecto

Monte Carlo Tree Search

MCTS simula múltiplos futuros possíveis, construindo árvore de busca incrementalmente. Balanceia exploração (tentar novas ações) com exploitation (focar em promissoras). Revolucionou jogos como Go. Como testar estratégias jogando milhares de partidas mentais rápidas, aprendendo quais funcionam melhor.

Fases do MCTS

  • Seleção: navegar árvore até folha promissora
  • Expansão: adicionar novo nó filho
  • Simulação: jogar aleatoriamente até fim
  • Backpropagation: atualizar estatísticas
  • UCB: balancear exploração/exploitation

Replanejamento e Adaptação

Quando a realidade diverge do esperado, replanejar pode ser necessário. Mas replanejar constantemente é caro. Estratégias incluem: replanejar só quando necessário, manter envelope de planos, ajustar localmente. Como recalcular rota GPS - só quando saímos muito do caminho ou condições mudam significativamente.

Estratégias de Replanejamento

  • Threshold: replanejar quando desvio > limite
  • Periódico: revisar plano a cada N passos
  • Oportunístico: quando computação disponível
  • Híbrido: ajuste local + replanejamento global
  • Anytime: melhorar plano continuamente

Robustez e Planos Conservadores

Às vezes preferimos planos robustos que funcionam em muitos cenários, mesmo se não ótimos em nenhum. Adicionar margens de segurança, evitar ações arriscadas, preferir reversibilidade. Como escolher rota com múltiplas alternativas em vez da mais rápida mas sem opções se algo der errado.

Técnicas de Robustez

  • Worst-case: otimizar para pior cenário
  • Chance constraints: limitar probabilidade de falha
  • Robust optimization: bom desempenho em conjunto de modelos
  • Slack: adicionar buffers temporais e de recursos
  • Diversificação: não depender de único ponto de falha

Aprendizado e Incerteza

Incerteza diminui com experiência. Reinforcement learning permite aprender políticas ótimas através de tentativa e erro. Bayesian optimization balanceia exploração de novas ações com exploitation de conhecidas boas. Como criança aprendendo a andar - cada queda ensina, gradualmente dominando o equilíbrio.

Aprendendo com Incerteza

  • Model-based: aprender modelo do mundo, então planejar
  • Model-free: aprender política diretamente
  • Transfer learning: usar conhecimento de problemas similares
  • Meta-learning: aprender a aprender rapidamente
  • Curiosity-driven: explorar para reduzir incerteza

Comunicação e Coordenação sob Incerteza

Com múltiplos agentes, incerteza inclui intenções e ações dos outros. Comunicação pode reduzir incerteza mas tem custo. Protocolos de coordenação garantem comportamento coerente mesmo com informação limitada. Como time de futebol - cada jogador tem visão parcial mas coordena através de sinais e padrões treinados.

Multi-agente sob Incerteza

  • Belief sobre outros agentes
  • Comunicação seletiva de informação crítica
  • Protocolos robustos a falhas de comunicação
  • Consenso distribuído sob incerteza
  • Teoria dos jogos estocásticos

Planejamento sob incerteza é onde a elegância matemática encontra a confusão do mundo real. É desafiador - requer probabilidade, otimização, teoria da decisão - mas essencial para sistemas que operam fora de ambientes controlados. Dominar estas técnicas permite criar sistemas robustos que prosperam apesar da incerteza, adaptando-se graciosamente quando surpresas inevitavelmente surgem. Com todo este arsenal teórico e prático, estamos prontos para o grand finale: ver como planejamento automático está transformando o mundo real!

Aplicações no Mundo Real

O planejamento automático saiu dos laboratórios e conquistou o mundo. Está no smartphone que otimiza suas rotas, no robô que monta seu carro, no satélite que fotografa a Terra, no assistente que agenda suas reuniões. Cada aplicação traz desafios únicos, exigindo adaptações criativas das técnicas que estudamos. Neste capítulo final, exploraremos como o planejamento automático está revolucionando indústrias, salvando vidas e expandindo as fronteiras do possível. Prepare-se para descobrir que o futuro já chegou!

Exploração Espacial

O espaço é o playground supremo do planejamento automático. Comunicação com atraso de minutos ou horas torna controle remoto impraticável. Rovers em Marte devem planejar autonomamente como navegar terreno desconhecido, coletar amostras, gerenciar energia solar. Satélites agendam observações maximizando valor científico dentro de constraints orbitais. O planejamento automático literalmente expande nossos horizontes.

Planejamento em Missões Espaciais

  • Mars Rovers: navegação autônoma e coleta de amostras
  • Deep Space Network: agendamento de comunicações
  • Hubble/Webb: otimização de observações científicas
  • ISS: coordenação de experimentos e manutenção
  • CubeSats: operação autônoma com recursos mínimos

Veículos Autônomos

Carros autônomos são planejadores sobre rodas. Planejamento de rota de alto nível escolhe caminhos. Planejamento de movimento gera trajetórias suaves e seguras. Planejamento de comportamento decide quando ultrapassar, ceder passagem, estacionar. Tudo em tempo real, com incerteza sobre outros motoristas, pedestres, condições. Cada viagem é uma sinfonia de decisões coordenadas.

Níveis de Planejamento em Carros Autônomos

  • Rota: cidade → bairro → rua
  • Comportamento: mudar faixa, parar no sinal
  • Movimento: trajetória suave evitando obstáculos
  • Controle: aceleração e direção precisas
  • Contingência: reação a emergências

Logística e Supply Chain

Amazon, FedEx, Walmart - gigantes da logística dependem de planejamento automático. Rotear milhões de pacotes, agendar milhares de caminhões, gerenciar centenas de armazéns. Cada decisão afeta outras em cascata. Planejadores otimizam custo, tempo, confiabilidade simultaneamente. Durante a pandemia, replanejamento ágil manteve suprimentos fluindo apesar de disrupções massivas.

Desafios Logísticos

  • Last-mile delivery: otimizar rotas urbanas densas
  • Cross-docking: sincronizar chegadas e partidas
  • Inventory: balancear estoque vs. custo
  • Multi-modal: combinar caminhão, trem, avião, navio
  • Sustentabilidade: minimizar pegada de carbono

Manufatura Inteligente

Fábricas modernas são sinfonias de automação. Planejadores coordenam robôs, máquinas, humanos. Sequenciam operações minimizando tempo e desperdício. Adaptam-se a quebras, variações de demanda, personalização em massa. Indústria 4.0 usa planejamento para transformar produção rígida em manufatura ágil e responsiva.

Planejamento na Fábrica do Futuro

  • Scheduling: sequenciar jobs em máquinas
  • Line balancing: distribuir trabalho uniformemente
  • AGVs: coordenar veículos autônomos internos
  • Predictive maintenance: planejar manutenção ótima
  • Customização: adaptar produção por pedido

Saúde e Medicina

Planejamento salva vidas. Radioterapia usa planejamento para maximizar dose em tumores minimizando dano a tecido saudável. Robôs cirúrgicos planejam incisões e movimentos precisos. Hospitais otimizam agendamento de salas, equipamentos, equipes. Durante COVID-19, planejadores alocaram recursos escassos - ventiladores, leitos, vacinas - onde mais necessários.

Aplicações Médicas

  • Tratamento: sequenciar terapias personalizadas
  • Cirurgia robótica: planejar procedimentos minimamente invasivos
  • Hospital: otimizar fluxo de pacientes e recursos
  • Emergência: triagem e alocação dinâmica
  • Clínico: sugerir diagnósticos e exames

Jogos e Entretenimento

Games modernos usam planejamento para criar experiências dinâmicas. NPCs planejam estratégias, navegam mundos, coordenam ataques. Narrativas adaptam-se às escolhas do jogador. Dificuldade ajusta-se automaticamente. AlphaGo mostrou que planejamento pode superar humanos até em jogos considerados intuitivos. Planejamento transforma entretenimento passivo em experiências interativas personalizadas.

Planejamento em Games

  • AI estratégica: planejar conquistas e batalhas
  • Pathfinding: navegação eficiente de NPCs
  • Storytelling: adaptar narrativa a escolhas
  • Director AI: orquestrar eventos para tensão
  • Procedural: gerar conteúdo sob demanda

Smart Cities

Cidades inteligentes são organismos complexos que requerem coordenação massiva. Semáforos adaptam-se ao tráfego em tempo real. Transporte público otimiza rotas baseado em demanda. Energia é distribuída eficientemente. Serviços de emergência são despachados otimamente. Planejamento automático é o cérebro que transforma infraestrutura em inteligência urbana.

Sistemas Urbanos Inteligentes

  • Tráfego: otimizar fluxo e reduzir congestionamento
  • Energia: balancear geração e consumo
  • Água: gerenciar distribuição e qualidade
  • Resíduos: otimizar coleta e reciclagem
  • Segurança: alocar patrulhas e recursos

Agricultura de Precisão

Fazendas modernas usam planejamento para alimentar o mundo eficientemente. Drones planejam rotas para monitorar plantações. Tratores autônomos otimizam plantio e colheita. Irrigação é agendada baseada em previsões meteorológicas e umidade do solo. Planejamento maximiza produção minimizando água, pesticidas, combustível. Agricultura sustentável depende de decisões inteligentes.

Tecnologias Agrícolas

  • Drones: mapear campos e identificar problemas
  • Robôs: colheita seletiva e tratamento localizado
  • IoT: sensores informando decisões
  • Previsão: antecipar pragas e doenças
  • Otimização: maximizar yield sustentavelmente

Finanças e Trading

Mercados financeiros são arenas de planejamento de alta velocidade. Algoritmos planejam portfolios balanceando risco e retorno. Trading de alta frequência executa milhares de transações por segundo. Robo-advisors criam planos de investimento personalizados. Blockchain smart contracts executam planos financeiros automaticamente. Cada decisão é um plano miniatura em ambiente altamente incerto.

Planejamento Financeiro Automatizado

  • Portfolio: otimizar alocação de ativos
  • Trading: executar estratégias complexas
  • Risk: gerenciar exposição e hedging
  • Compliance: garantir aderência a regulações
  • Personal: planejar aposentadoria e metas

Assistentes Virtuais

Siri, Alexa, Google Assistant são planejadores pessoais. Interpretam comandos, decompõem em subtarefas, coordenam serviços. "Reserve um voo e hotel para Paris" dispara planejamento complexo considerando preferências, orçamento, disponibilidade. Assistentes evoluem de respondedores reativos para planejadores proativos que antecipam necessidades.

Capacidades de Assistentes

  • Decomposição: quebrar pedidos complexos
  • Coordenação: integrar múltiplos serviços
  • Personalização: adaptar a preferências
  • Proatividade: sugerir ações úteis
  • Aprendizado: melhorar com interação

O planejamento automático está em toda parte, melhorando vidas, salvando recursos, expandindo possibilidades. Cada aplicação é uma validação das técnicas que estudamos, uma demonstração de que teoria matemática pode transformar o mundo real. Mas isto é apenas o começo. À medida que computadores ficam mais poderosos, dados mais abundantes, e algoritmos mais sofisticados, o planejamento automático continuará revolucionando como vivemos, trabalhamos e exploramos. O futuro será planejado automaticamente - e você agora entende como!

Referências Bibliográficas

Este volume sobre Planejamento Automático foi construído sobre décadas de pesquisa em inteligência artificial, otimização e ciência da computação. As referências abrangem desde trabalhos pioneiros dos anos 1950 até desenvolvimentos contemporâneos em aprendizado por reforço e sistemas autônomos. Esta bibliografia oferece recursos para aprofundamento em cada aspecto do planejamento automático, desde fundamentos teóricos até aplicações práticas revolucionárias.

Obras Fundamentais de Planejamento Automático

AERONAUTICS AND SPACE ENGINEERING BOARD. Autonomy Research for Civil Aviation: Toward a New Era of Flight. Washington: National Academies Press, 2014.

ALLEN, James F. Maintaining Knowledge about Temporal Intervals. Communications of the ACM, v. 26, n. 11, p. 832-843, 1983.

BELLMAN, Richard. Dynamic Programming. Princeton: Princeton University Press, 1957.

BERTSEKAS, Dimitri P. Dynamic Programming and Optimal Control. 4th ed. Belmont: Athena Scientific, 2017. 2 v.

BLUM, Avrim L.; FURST, Merrick L. Fast Planning Through Planning Graph Analysis. Artificial Intelligence, v. 90, n. 1-2, p. 281-300, 1997.

BONET, Blai; GEFFNER, Héctor. Planning as Heuristic Search. Artificial Intelligence, v. 129, n. 1-2, p. 5-33, 2001.

BOUTILIER, Craig; DEAN, Thomas; HANKS, Steve. Decision-Theoretic Planning: Structural Assumptions and Computational Leverage. Journal of AI Research, v. 11, p. 1-94, 1999.

BRASIL. Base Nacional Comum Curricular: Educação é a Base. Brasília: MEC/CONSED/UNDIME, 2018.

BRESINA, John; DEARDEN, Richard; MEULEAU, Nicolas et al. Planning Under Continuous Time and Resource Uncertainty. In: Uncertainty in AI, 2002.

BROWNE, Cameron et al. A Survey of Monte Carlo Tree Search Methods. IEEE Transactions on Computational Intelligence and AI in Games, v. 4, n. 1, p. 1-43, 2012.

BYLANDER, Tom. The Computational Complexity of Propositional STRIPS Planning. Artificial Intelligence, v. 69, n. 1-2, p. 165-204, 1994.

CHAPMAN, David. Planning for Conjunctive Goals. Artificial Intelligence, v. 32, n. 3, p. 333-377, 1987.

CIMATTI, Alessandro et al. Strong Planning in Non-Deterministic Domains via Model Checking. In: AIPS-98, 1998.

DEAN, Thomas; KANAZAWA, Keiji. A Model for Reasoning about Persistence and Causation. Computational Intelligence, v. 5, n. 2, p. 142-150, 1989.

DO, Minh Binh; KAMBHAMPATI, Subbarao. Sapa: A Domain-Independent Heuristic Metric Temporal Planner. In: ECP-01, 2001.

EDELKAMP, Stefan; HOFFMANN, Jörg. PDDL2.2: The Language for the Classical Part of IPC-4. In: IPC-4, 2004.

FIKES, Richard E.; NILSSON, Nils J. STRIPS: A New Approach to the Application of Theorem Proving. Artificial Intelligence, v. 2, n. 3-4, p. 189-208, 1971.

FOX, Maria; LONG, Derek. PDDL2.1: An Extension to PDDL for Expressing Temporal Planning Domains. JAIR, v. 20, p. 61-124, 2003.

GEFFNER, Héctor; BONET, Blai. A Concise Introduction to Models and Methods for Automated Planning. Morgan & Claypool, 2013.

GHALLAB, Malik; NAU, Dana; TRAVERSO, Paolo. Automated Planning: Theory and Practice. San Francisco: Morgan Kaufmann, 2004.

GHALLAB, Malik; HOWE, Adele; KNOBLOCK, Craig et al. PDDL - The Planning Domain Definition Language. Yale Center for Computational Vision and Control, 1998.

HART, Peter E.; NILSSON, Nils J.; RAPHAEL, Bertram. A Formal Basis for the Heuristic Determination of Minimum Cost Paths. IEEE Trans. SSC, v. 4, n. 2, p. 100-107, 1968.

HELMERT, Malte. The Fast Downward Planning System. Journal of AI Research, v. 26, p. 191-246, 2006.

HOFFMANN, Jörg. The Metric-FF Planning System: Translating "Ignoring Delete Lists" to Numeric State Variables. JAIR, v. 20, p. 291-341, 2003.

HOFFMANN, Jörg; NEBEL, Bernhard. The FF Planning System: Fast Plan Generation Through Heuristic Search. JAIR, v. 14, p. 253-302, 2001.

HOWARD, Ronald A. Dynamic Programming and Markov Processes. Cambridge: MIT Press, 1960.

KAELBLING, Leslie Pack; LITTMAN, Michael L.; CASSANDRA, Anthony R. Planning and Acting in Partially Observable Stochastic Domains. AI, v. 101, p. 99-134, 1998.

KAUTZ, Henry; SELMAN, Bart. Planning as Satisfiability. In: ECAI-92, p. 359-363, 1992.

KNOBLOCK, Craig A. Automatically Generating Abstractions for Planning. Artificial Intelligence, v. 68, n. 2, p. 243-302, 1994.

KOCSIS, Levente; SZEPESVÁRI, Csaba. Bandit Based Monte-Carlo Planning. In: ECML-06, p. 282-293, 2006.

KORF, Richard E. Depth-First Iterative-Deepening: An Optimal Admissible Tree Search. AI, v. 27, n. 1, p. 97-109, 1985.

LAVALLE, Steven M. Planning Algorithms. Cambridge: Cambridge University Press, 2006.

MCALLESTER, David; ROSENBLITT, David. Systematic Nonlinear Planning. In: AAAI-91, p. 634-639, 1991.

MCDERMOTT, Drew et al. PDDL - The Planning Domain Definition Language. Technical Report CVC TR-98-003, Yale, 1998.

MUSCETTOLA, Nicola et al. Remote Agent: To Boldly Go Where No AI System Has Gone Before. AI, v. 103, n. 1-2, p. 5-47, 1998.

NAU, Dana et al. SHOP2: An HTN Planning System. Journal of AI Research, v. 20, p. 379-404, 2003.

NEWELL, Allen; SIMON, Herbert A. GPS, A Program that Simulates Human Thought. In: Computers and Thought, p. 279-293, 1963.

NILSSON, Nils J. Principles of Artificial Intelligence. Palo Alto: Tioga Publishing, 1980.

PEDNAULT, Edwin P. D. ADL: Exploring the Middle Ground Between STRIPS and the Situation Calculus. In: KR-89, p. 324-332, 1989.

PENBERTHY, J. Scott; WELD, Daniel S. UCPOP: A Sound, Complete, Partial Order Planner for ADL. In: KR-92, p. 103-114, 1992.

PEARL, Judea. Heuristics: Intelligent Search Strategies for Computer Problem Solving. Reading: Addison-Wesley, 1984.

PUTERMAN, Martin L. Markov Decision Processes: Discrete Stochastic Dynamic Programming. New York: Wiley, 1994.

RINTANEN, Jussi. Planning as Satisfiability: Heuristics. Artificial Intelligence, v. 193, p. 45-86, 2012.

RUSSELL, Stuart; NORVIG, Peter. Artificial Intelligence: A Modern Approach. 4th ed. Upper Saddle River: Pearson, 2020.

SACERDOTI, Earl D. Planning in a Hierarchy of Abstraction Spaces. Artificial Intelligence, v. 5, n. 2, p. 115-135, 1974.

SILVER, David et al. Mastering the Game of Go with Deep Neural Networks and Tree Search. Nature, v. 529, p. 484-489, 2016.

SMITH, David E.; WELD, Daniel S. Temporal Planning with Mutual Exclusion Reasoning. In: IJCAI-99, p. 326-337, 1999.

SUTTON, Richard S.; BARTO, Andrew G. Reinforcement Learning: An Introduction. 2nd ed. Cambridge: MIT Press, 2018.

TATE, Austin. Generating Project Networks. In: IJCAI-77, p. 888-893, 1977.

THRUN, Sebastian; BURGARD, Wolfram; FOX, Dieter. Probabilistic Robotics. Cambridge: MIT Press, 2005.

VERE, Steven. Planning in Time: Windows and Durations for Activities and Goals. IEEE PAMI, v. 5, n. 3, p. 246-267, 1983.

WELD, Daniel S. An Introduction to Least Commitment Planning. AI Magazine, v. 15, n. 4, p. 27-61, 1994.

WILKINS, David E. Practical Planning: Extending the Classical AI Planning Paradigm. San Francisco: Morgan Kaufmann, 1988.

YOUNES, Håkan L. S.; LITTMAN, Michael L. PPDDL1.0: An Extension to PDDL for Expressing Planning Domains with Probabilistic Effects. Technical Report CMU-CS-04-162, 2004.