Heurísticas, algoritmos gulosos e aproximações

Slides:



Advertisements
Apresentações semelhantes
Algoritmos de Caminho Mínimo em Grafos
Advertisements

Projeto de Programação PD-I
Árvores CC/EC/Mestrado Teoria dos Grafos ‏ 1.
Algoritmos em Grafos (Parte 2)
Grafos - Caminhos Caminhos Máximo / Mínimo:
Inteligência Artificial
Inteligência Artificial
Fluxo em Redes Prof. Ricardo R. Santos.
Algoritmo polinomial para geração de uma Árvore Geradora Mínima
Problema do caixeiro viajante
Prof. M.Sc. Fábio Francisco da Costa Fontes Abril
Busca em Profundidade Para encontrar um caminho de solução Sol, de um dado nó para algum nó objetivo Se N é um nó objetivo, então Sol=[N] Se há um nó N1.
Metaheurísticas Prof. Aurora Pozo Departamento de Informática Universidade Federal do Paraná
Busca informada (heurística) Parte 2
UM ESTUDO SOBRE O PROBLEMA DO CAIXEIRO VIAJANTE
Árvores.
Dárlinton B. Feres Carvalho
Inteligência Computacional para Otimização
Medida do Tempo de Execução de um Programa
Busca Cega (Exaustiva)
NÃO DETERMINISMO Marcus Eduardo Cabral Seabra
Árvore Geradora de Peso Mínimo
Avaliação de Sistemas Operacionais
Pesquisa Operacional - Profa Úrsula L. F. Ribeiro
Solução de problemas por meio de busca
Daniel Felipe Neves Martins
Estruturas de Dados e Complexidade de Algoritmos
Problemas NP-completo
Inteligência Artificial
TOMADA DE DECISÃO E RACIONALIDADE ADEQUAR OS MEIOS AOS FINS DESEJADOS
INF 1771 – Inteligência Artificial
Grafos Msc. Cintia Carvalho Oliveira Doutoranda em Computação – UFU
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Heurísticas, algoritmos gulosos e aproximações
T ÓPICOS DE I.A. Métodos de Busca Busca em Espaços de Estado Prof. Mário Dantas.
Grafos Árvores Geradoras.
Estratégias de Busca com informação e exploração
Informática Teórica Engenharia da Computação
Otimização por Colônia de Formigas (ACO)
Tópicos em Inteligência Artificial – opt. CI309A inf. ufpr
Otimização Inteira 5a. Aula Franklina.
Conceitos Básicos Alysson e Franklina 2ºs/
O problema do emparelhamento máximo
Busca com informação e exploração
Aula T06 – BCC202 Análise de Algoritmos (Parte 4) Túlio Toffolo
Introdução e Busca Cega
Introdução aos Agentes Inteligentes Busca Cega (Exaustiva)
Sistemas Especialistas
Algoritmos de Busca Local
Tópicos Avançados em Inteligência Artificial
Técnicas de Busca Heurística Problemas da IA complexos demais para serem solucionados por técnicas diretas: criam-se técnicas de busca aprorpiados; chamados.
Disciplina Análise de Algoritmos BCC-UFU Profa. Sandra de Amo
Uma Análise das plataformas CUDA e OpenCL usando MetaHeurísticas aplicadas no Problema do Caixeiro Viajante Aluno: Hedley Luna Gois Oriá Disciplina: Introdução.
Experimentação Algorítmica
CURSO GESTÃO ESTRATÉGICA DA PRODUÇÃO SISTEMAS DE INFORMAÇÃO E TECNOLOGIA RAFAEL F P BRIARD TRABALHO 5.
Busca Combinatorial e Métodos de Heurística
Disciplina Análise de Algoritmos Bacharelado em CC
TEMA E PROBLEMA.
Problemas NP-completos e Programação Dinâmica

Geometria Computacional Fecho Convexo
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Busca Competitiva Disciplina: Inteligência Artificial
Disciplina: Inteligência Artificial Universidade de Itaúna
Mailson Felipe da Silva Marques Johnson Cordeiro Sarmento
Marcos Corrêa Neves Gilberto Câmara Renato M. Assunção
Busca Heurística Prof. Valmir Macário Filho. 2 Busca com informação e exploração Capítulo 4 – Russell & Norvig Seção 4.1 Estratégias de Busca Exaustiva.
Abordagens para Problemas Intratáveis Katia S. Guimarães
Comportamento Assintótico
Transcrição da apresentação:

Heurísticas, algoritmos gulosos e aproximações Fábio Nakano

Heurística – a palavra A heurística (do greco ευρίσκω, heurísko, literalmente "descubro" ou "acho") é uma parte da epistemologia e do método científico. A etimologia da palavra heurística é a mesma que a palavra eureka, cuja exclamação se atribui a Arquimedes no conhecido episódio da descoberta de como medir o volume de um objeto irregular utilizando água.

Heurística – em ciência É a parte da pesquisa que visa favorecer o acesso a novos desenvolvimentos teóricos ou descobertas empíricas. Define-se procedimento heurístico como um método de aproximação das soluções dos problemas, que não segue um percurso claro mas se baseia na intuição e nas circunstâncias a fim de gerar conhecimento novo. É o “oposto” do procedimento algoritmico.

Heurística – em computação De acordo com a ANSI/IEEE STD 100-1984, a heurística trata de métodos ou algoritmos exploratórios para solução de problemas. As soluções são buscadas por aproximações sucessivas, avaliando-se os progressos alcançados, até que o problema seja resolvido. Trata-se de métodos em que, embora a exploração seja feita de forma algorítmica, o progresso é obtido pela avaliação puramente empírica do resultado. Ganhos de eficácia, principalmente nos termos da eficiência computacional, no custo da precisão. As técnicas heurísticas são usadas por exemplo nos problemas em que a complexidade da solução do algoritmo disponível é a função exponencial de algum parâmetro; quando o valor deste cresce, o problema torna-se rapidamente mais complexo. Uma alternativa heurística será praticável se a complexidade do cálculo depender, por exemplo, polinomicamente do mesmo parâmetro. As técnicas heurísticas não asseguram as melhores soluções, mas somente soluções válidas, aproximadas; e freqüentemente não é possível justificar em termos estritamente lógicos a validade do resultado.

Heurística – exemplo No problema da Mochila binária, pegar os objetos até que não caiba mais nenhum na mochila. Apresenta uma solução para o problema? É rápido? Apresenta a melhor solução para o problema? ... e se usar um algoritmo guloso??

Estratégia “gulosa” (greedy) Resolve problemas de otimização por exemplo encontrar o caminho de menor custo em um grafo. Nunca reconsidera a decisão Soluções gulosas seguem uma estrutura bem definida:

Existe um conjunto de candidatos Uma função de seleção determina qual é o candidato mais promissor. São acumulados um conjunto de candidatos escolhidos e um de candidatos rejeitados. Nenhum elemento é examinado mais de uma vez. Existe uma função que verifica se um conjunto de candidatos é solução. Outra que verifica se um conjunto de candidatos é viável. Uma função objetivo determina ou o custo ou a utilidade da solução encontrada.

Acha o ótimo global? ... na verdade não acha sempre, mas dadas certas propriedades, é possível provar que a solução que o algoritmo encontra é ótima. propriedade da escolha gulosa: A otimalidade de uma solução não depende de escolhas futuras, em outras palavras, uma escolha futura não leva a reconsiderar escolhas passadas. propriedade da subestrutura ótima: Uma solução ótima contém soluções ótimas dos sub-problemas.

Exemplo prático – árvore geradora mínima. Você é o executivo responsável pelo projeto de ocupação racional de uma área da floresta amazônica. O comitê gestor decidiu que a qualidade de vida dos habitantes dos povoados da região é determinante para que estes tenham condições de aprender, implementar e fiscalizar políticas de ocupação racional. Para isto, é necessário criar rotas de transporte de alimentos, medicamentos e pessoas entre os povoados e a cidade-base do projeto. Sua tarefa é implantar as rotas de transporte com o menor impacto ambiental possível.

O estudo de viabilidade levantou conexões candidatas e seus custos ambientais 4 9 4 1 5 3 9 7 10 9 2 6 4 8 2 9 Base 3 18 8 9 9

Com que algoritmo escolheremos os trechos? 4 9 4 1 5 3 9 7 10 9 2 6 4 8 2 9 Base 3 18 8 9 9

Construir a partir da base? 4 9 4 1 5 3 9 7 10 9 2 6 4 8 2 9 Base 3 18 8 9 9 custo=42 A propriedade gulosa é satisfeita? A sub-estrutura é ótima?

Árvore geradora mínima 4 9 4 1 5 3 9 10 9 2 6 4 8 2 9 Base 3 18 8 9 9 A propriedade gulosa é satisfeita? A sub-estrutura é ótima?

Árvore geradora mínima - solução 4 9 4 1 5 3 9 7 10 9 2 6 4 8 2 9 Base 3 18 8 9 9 custo=38 A propriedade gulosa é satisfeita? A sub-estrutura é ótima?

Pseudo-código

Complexidade?

Complexidade? |E|lg(|E|)

Outro problema... o do caixeiro viajante! Queremos construir esses trechos de maneira que tenha o custo mínimo e o transporte passe apenas uma vez em cada povoado. Este é o problema do caixeiro viajante. Sabe-se que só é possível encontrar a solução ótima inspecionando todo os casos, o que tem complexidade inaceitável. Precisamos usar outra estratégia.

Que tal esta: Partindo da base, percorra as arestas que levam a vértices não visitados. Após visitar todos os vértices, una o último visitado ao primeiro. ... em princípio é uma heurística e apresenta uma solução...

Uma heurística apresenta uma solução... 4 9 4 1 5 3 9 10 9 2 6 4 8 2 9 Base 3 18 8 9 9 custo=53 é possível dizer mais sobre a solução? por exemplo, quão longe do ótimo está?

Aproximações Um algoritmo aproximativo (ou algoritmo de aproximação) é heurístico, ou seja, utiliza informação e intuição a respeito da instância do problema e da sua estrutura para resolvê-lo de forma rápida. Entretanto, nem todo algoritmo heurístico é aproximativo, ou seja, nem toda heurística tem uma razão de qualidade comprovada matematicamente ou prova formal de convergência. Por este motivo, em várias referências bibliográficas distingue-se os termos algoritmo aproximativo e heurística: aproximativo é a denominação do algoritmo que fornece soluções dentro de um limite de qualidade absoluto ou assintótico, assim como um limite assintótico polinomial de complexidade (pior caso) comprovado matematicamente; heurística e método heurístico são denominações para o algoritmo que fornece soluções sem um limite formal de qualidade, tipicamente avaliado empiricamente em termos de complexidade (média) e qualidade das soluções.

Aproximação para solução do TSP Tome uma árvore geradora mínima Percorra a árvore por busca em profundidade, quando for retornar por uma aresta já percorrida, “salta” para um vértice não visitado usando uma aresta do grafo. Prossegue a busca em profundidade até que todos os vértices tenham sido visitados Acrescente a aresta que liga o início ao fim do caminho.

Árvore geradora mínima - solução 4 9 4 1 5 3 9 7 10 9 2 6 4 8 2 9 Base 3 18 8 9 9 custo=38

TSP – modificando árvore geradora mínima 4 9 4 1 5 3 9 7 10 9 2 6 4 8 2 9 Base 3 18 8 9 9 custo=49

Esta heurística tem garantia de valor mínimo e valor máximo No caso de um grafo euclidiano (em que o custo por um caminho direto sempre é menor que o custo por um caminho indireto, ou seja, vale a desigualdade triangular e a noção de custo coincide com a noção de distância euclidiana) é possível demonstrar que custo_AGM<custo_otimo<= custo_encontrado<=2*custo_AGM<2*custo_otimo ... esta heurística é uma aproximação!!!

Aproximações Um algoritmo aproximativo (ou algoritmo de aproximação) é heurístico, ou seja, utiliza informação e intuição a respeito da instância do problema e da sua estrutura para resolvê-lo de forma rápida. Entretanto, nem todo algoritmo heurístico é aproximativo, ou seja, nem toda heurística tem uma razão de qualidade comprovada matematicamente ou prova formal de convergência. Por este motivo, em várias referências bibliográficas distingue-se os termos algoritmo aproximativo e heurística: aproximativo é a denominação do algoritmo que fornece soluções dentro de um limite de qualidade absoluto ou assintótico, assim como um limite assintótico polinomial de complexidade (pior caso) comprovado matematicamente; heurística e método heurístico são denominações para o algoritmo que fornece soluções sem um limite formal de qualidade, tipicamente avaliado empiricamente em termos de complexidade (média) e qualidade das soluções.

Estratégia gulosa sobre o problema da mochila binária Agora cada objeto tem valor e peso. Deseja-se carregar o máximo valor dentro do limite de peso estipulado. Qual é a função de seleção? Qual é a função utilidade? Podemos garantir a propriedade gulosa? Objetos {(8,100),(8,80),(5,65),(6,60),(7,55)} peso máximo: 20