Buscas Informadas ou Heurísticas - Parte II Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Graduação em Ciência da Computação / 2006
FUNÇÕES HEURÍSTICAS - 1/7
FUNÇÕES HEURÍSTICAS - 2/7 Solução típica: 20 passos (dependendo do estado inicial) Fator de ramificação: 3 Espaço no centro: 4 Espaço nos cantos: 2 Espaços em outras posições: 3 Busca exaustiva até a profundidade 20: Examina 3 20 = 3.5x10 9.
FUNÇÕES HEURÍSTICAS - 3/7 Verificação de estados repetidos: São 9! = 362.880 arranjos de 9 ladrilhos. Solução melhor: heurística. h 1 = número de ladrilhos em posições erradas. Na figura anterior: 7 dos 8 estão em posições erradas h1 = 7. h 2 = soma das distâncias do ladrilhos até a meta (distâncias verticais + horizontais).
FUNÇÕES HEURÍSTICAS - 3/7 Distância Manhattan - para os ladrilhos de 1 a 8: h 2 = 2 + 3+ 3 + 2 + 4 + 2 + 0 + 2 = 18
FUNÇÕES HEURÍSTICAS - 4/7 b*: Efeito da precisão da heurística na performance. Para uma árvore uniforme, se o número total de nós expandidos por A*, para um problema particular é N e profundidade da solução é d, então: N = 1 + b +(b ) 2 +... + (b ) d. Fator de ramificação efetivo
FUNÇÕES HEURÍSTICAS - 5/7 Normalmente, o fator de ramificação efetivo de uma dada heurística é constante. Valores experimentais medidos de b*, para pequenos conjuntos de problemas, podem representar boas dicas para heurísticas de uso mais amplo.
FUNÇÕES HEURÍSTICAS - 6/7 Uma boa heurística: Deve ter um b* próximo de 1. Para testar heurísticas (h 1, h 2 ): Gera-se, aleatoriamente, 100 problemas com soluções de comprimento 2, 4,..., 20. Resolve-se os problemas usando-se Busca A* (com h 1 e h 2 ) e também Busca com Aprofundamento Iterativo (IDS).
FUNÇÕES HEURÍSTICAS - 7/7 Custo da Busca b* D IDS A*(h 1 ) A*(h 2 ) IDS A*(h 1 ) A*(h 2 ) 2 10 6 6 2.45 1.79 1.79 4 112 13 12 2.87 1.48 1.45 6 680 20 18 2.73 1.34 1.3 8 6384 39 25 2.80 1.33 1.24 10 47127 93 39 2.79 1.38 1.22 12 364404 227 73 2.78 1.42 1.24 14 3473941 539 113 2.83 1.44 1.23 16 1301 211 1.45 1.25 18 3056 363 1.46 1.26 20 7276 676 1.47 1.27 22 18094 1219 1.48 1.28 24 39135 1641 1.48 1.26
CRIANDO HEURÍSTICAS 1/9 As restrições sobre os operadores podem ser aliviadas: o problema pode ser relaxado. O custo de uma solução exata para um problema relaxado pode ser uma boa heurística para o problema original.
CRIANDO HEURÍSTICAS 2/9 Se a definição do problema está escrita em uma linguagem formal é possível construir problemas relaxados automaticamente. Exemplo Quebra-cabeças de 8 Um ladrilho pode ser mover de A para B se A e B são adjacentes e B é vazio.
CRIANDO HEURÍSTICAS 3/9 Uma (ou mais) das condições a seguir podem ser removidas: gera-se novos problemas. 1. O movimento pode acontecer se A é adjacente a B. 2. O movimento pode acontecer se B está vazio. 3. O movimento pode acontecer de A para B.
CRIANDO HEURÍSTICAS 4/9 Pode-se ter várias heurísticas admissíveis. Deve-se escolher uma. Pode-se obter a melhor solução definindo-se a função: h(n) = max(h 1 (n),..., h m (n)) - n: nó sendo considerado.
CRIANDO HEURÍSTICAS 5/9 Pode-se usar informações estatísticas: Executa-se a busca sobre alguns problemas de treinamento. Exemplo Pode-se tomar 100 instâncias do quebra-cabeças escolhidas aleatoriamente. Pode-se identificar que se h 2 (n) = 14, 90% das vezes a distância real até meta é 18. Ao tratar problemas reais: se h 2 (n) indicar 14, usa-se 18.
CRIANDO HEURÍSTICAS 6/9 Uso de probabilidades: Pode-se estar abrindo mão da garantia de admissibilidade. É provável que se expanda menos nós, na média.
CRIANDO HEURÍSTICAS 7/9 Características dos estados podem contribuir na definição da heurística, mesmo quando é difícil estabelecer qual contribuição seria. Exemplo No xadrez: Número de peças de cada tipo dos oponentes. Número de peças sendo atacadas pelo adversário. Etc.
CRIANDO HEURÍSTICAS 8/9 A função pode ser considerada como uma combinação linear dos valores selecionados. Mesmo se não se sabe a importância das características selecionadas; ou Se tais características são boas ou ruins. Um algoritmo de aprendizado pode identificar coeficientes razoáveis para cada característica.
CRIANDO HEURÍSTICAS 9/9 O custo do cálculo da função heurística pode ser relevante. O custo do cálculo da função heurística pode ser relevante. Uma boa heurística deve ser eficiente e precisa.
PROBLEMA DA COLORAÇÃO DE MAPAS - 1/6 Deve-se evitar que países adjacentes sejam coloridos com a mesma cor. Pode-se usar, no máximo, três cores: verde, vermelho e amarelo. O país A deve aparecer em verde e o país B em vermelho.
PROBLEMA DA COLORAÇÃO DE MAPAS - 2/6
PROBLEMA DA COLORAÇÃO DE MAPAS - 3/6
PROBLEMA DA COLORAÇÃO DE MAPAS - 4/6
PROBLEMA DA COLORAÇÃO DE MAPAS - 5/6
HEURÍSTICAS PARA PROBLEMAS COM RESTRIÇÕES (CSPs) - 6/6 Não é necessário busca para a resolução do problema: pode-se usar a intuição. Heurística da variável-mais-restrita. É usada em conjunto com a checagem adiante ( foward checking ).
HEURÍSTICA DA VARIÁVEL-MAIS-RESTRITA. Identifica os valores que ainda são permitidos para cada variável, em função das escolhas feitas até o momento. A cada momento: A variável com menos possíveis valores é escolhida para ser instanciada. O fator de ramificação tende a ser minimizado.
HEURÍSTICA DA VARIÁVEL-MENOS-RESTRITA. Escolher um valor que exclua o menor número possível de valores para as variáveis conectadas à variável corrente pelas restrições. No exemplo anterior: após instanciar A e B, pode-se decidir instanciar C com vermelho, pois esta escolha dá mais opções para futuras escolhas.
BUSCA A* - APROFUNDAMENTO ITERATIVO (IDA*) Cada iteração é uma busca em profundidade. O algoritmo de Busca em Profundidade é modificado: Usa-se uma função de custo f, ao invés de um limite de profundidade.
AVALIAÇÃO DA BUSCA IDA* Completa e ótima (nas mesmas condições de A*). Como é feita uma Busca em Profundidade: Requer um espaço proporcional ao caminho mais longo que é explorado.
AVALIAÇÃO DA BUSCA IDA* Não precisa inserir e retirar nós de uma fila de prioridades: Sua sobrecarga por nó é muito menor que A*. A solução ótima para muitos problemas práticos é encontrada primeiro por IDA*.
AVALIAÇÃO DA BUSCA IDA* Não produz bons resultados em domínios muito complexos. Exemplo: problema do caixeiro viajante. O valor heurístico é diferente para cada estado. Cada contorno de f: inclui apenas um nó a mais. Se A* expande N nós: IDA* terá de realizar N iterações terá de expandir 1 + 2 +... + N = O(N 2 ) nós.
COMPLEXIDADE TEMPORAL Depende fortemente do número de valores diferentes que a função heurística pode tomar. Tipicamente, a função f aumenta duas ou três vezes ao longo do caminho até a solução. Na última iteração: IDA* expande exatamente o mesmo número de nós que A*.
ALGORITMO ADMISSÍVEL-ε O limite de custo f pode ser expandido por um valor fixo ε em cada iteração. O número total de iterações é proporcional a 1/ε. Reduz o custo da busca, mas pode retornar uma solução pior que a ótima.
BUSCA A* - APROFUNDAMENTO ITERATIVO (IDA*) Não pode lembrar sua história : é condenado a repetí-la. O problema é mais grave quando o espaço de estados é um grafo ao invés de uma árvore. Pode ser modificado para verificar estados repetidos em um mesmo caminho. Não se pode evitar estados repetidos gerados por caminho alternativos.