09.05.2013 Views

Heurística

Heurística

Heurística

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

TÓPICOS ESPECIAIS EM COMPUTAÇÃO I-A<br />

Ciência da Computação<br />

Introdução aos<br />

métodos heurísticos<br />

Profª Regiane Klidzio<br />

© 2007 by Prentice Hall


<strong>Heurística</strong><br />

• Define-se heurística como sendo uma técnica<br />

inspirada em processos intuitivos que procura<br />

uma boa solução a um custo computacional<br />

aceitável, sem, no entanto, estar capacitada a<br />

garantir sua otimalidade, bem como garantir quão<br />

próximo está da solução ótima.<br />

© 2007 by Prentice Hall


<strong>Heurística</strong><br />

• Uma heurística é um procedimento algorítmico<br />

desenvolvido através de um modelo cognitivo,<br />

usualmente através de regras baseadas na<br />

experiência dos desenvolvedores.<br />

• Ao contrário dos métodos exatos, as heurísticas<br />

normalmente tendem a apresentar um certo grau<br />

de conhecimento acerca do comportamento do<br />

problema, gerando um número muito menor de<br />

soluções.<br />

© 2007 by Prentice Hall


<strong>Heurística</strong><br />

• Em IA, podemos dizer que uma heurística refere-se a<br />

um método de busca de soluções em que não existe<br />

qualquer garantia de sucesso.<br />

• Em um problema de otimização, o sucesso pode ser<br />

representado pela obtenção da solução ótima para<br />

problemas que tenham seus modelos representados<br />

por expressões lineares.<br />

© 2007 by Prentice Hall


<strong>Heurística</strong><br />

• Os métodos heurísticos englobam estratégias,<br />

procedimentos e métodos aproximativos com o<br />

objetivo de encontrar uma boa solução, mesmo que<br />

não seja a ótima, em um tempo computacional<br />

razoável.<br />

• <strong>Heurística</strong>s são aplicadas quando é impossível<br />

avaliar todas as possibilidades. Este fato impede o<br />

uso dos métodos, dito exatos, dado o tempo muito<br />

elevado de se encontrar a solução ótima.<br />

– Exemplo: o jogador de xadrez.<br />

© 2007 by Prentice Hall


Importante:<br />

Algoritmos heurísticos<br />

• Um algoritmo heurístico abdica da garantia de achar<br />

a melhor solução, para que uma solução possa ser<br />

encontrada rapidamente.<br />

© 2007 by Prentice Hall


Classificação dos métodos<br />

heurísticos<br />

• Construtivos: criam soluções<br />

— Constroem uma solução passo a passo,<br />

elemento por elemento.<br />

— Geralmente são algoritmos gulosos.<br />

— A grande vantagem desta metodologia reside na<br />

simplicidade de implementação.<br />

— Segundo testes empíricos, a desvantagem é a<br />

baixa qualidade em média da solução final<br />

produzida, que em geral requer um maior<br />

esforço computacional na fase de refinamento.<br />

© 2007 by Prentice Hall


Classificação dos métodos<br />

heurísticos<br />

• De refinamento (busca local): procuram soluções<br />

— Consistem em melhorar uma solução, através<br />

de modificações em seus elementos.<br />

— Constituem uma família de técnicas baseadas<br />

na noção de vizinhança.<br />

— Em linhas gerais, esta classe de heurísticas<br />

parte de uma solução inicial qualquer e<br />

caminha, a cada iteração, de vizinho para<br />

vizinho de acordo com a definição de vizinhança<br />

adotada.<br />

© 2007 by Prentice Hall


Métodos construtivos<br />

• As heurísticas de métodos construtivos iniciam a<br />

solução de um problema, sem nenhum resultado, e<br />

constroem passo a passo uma solução viável.<br />

• Apresentam algoritmos gulosos, os quais, devido a<br />

enxergarem apenas o que está mais próximo do<br />

objetivo desejado, são também chamados de<br />

algoritmos míopes.<br />

— Exemplo: Problema da Mochila<br />

© 2007 by Prentice Hall


Métodos construtivos<br />

• Quando se trata de solucionar o PCV, as variações<br />

desta classe de algoritmo, que se apresentam com<br />

maior destaque, são:<br />

– <strong>Heurística</strong> do vizinho mais próximo<br />

– <strong>Heurística</strong> da inserção mais distante<br />

– <strong>Heurística</strong> da inserção mais barata<br />

© 2007 by Prentice Hall


• Problema da Mochila<br />

Exemplo<br />

Um excursionista planeja fazer uma viagem<br />

acampando. Há 5 itens que ele deseja levar consigo,<br />

mas estes, juntos, excedem o limite de 23 quilos que<br />

ele supõe ser capaz de carregar. Para ajudar a si<br />

próprio no processo de seleção, ele deverá atribuir<br />

valores, por ordem crescente de importância a cada<br />

um dos itens. O objetivo é determinar o conjunto de<br />

objetos que devem ser colocados na mochila de<br />

forma a maximizar o valor de retorno respeitando a<br />

capacidade da mochila.<br />

© 2007 by Prentice Hall


• Problema da Mochila<br />

Exemplo<br />

Seja, então, uma mochila de capacidade b = 23 e os 5<br />

objetos da tabela a seguir, com os respectivos pesos e<br />

benefícios.<br />

Objeto (j) 1 2 3 4 5<br />

Peso (w j) 4 5 7 9 6<br />

Benefício (p j) 2 2 3 4 4<br />

© 2007 by Prentice Hall


Exemplo<br />

• Passos para resolver o Problema da Mochila:<br />

1º Passo: Calcular a relação benefício/peso;<br />

2º Passo: Ordenar os elementos;<br />

3º Passo: Escolher o elemento que produzir a maior relação<br />

benefício/peso, e que respeite a capacidade da mochila;<br />

4º Passo: Repetir o passo anterior até que nenhum elemento<br />

possa ser colocado na mochila sem ultrapassar a capacidade<br />

deste.<br />

© 2007 by Prentice Hall


Exemplo<br />

© 2007 by Prentice Hall


Outra solução<br />

• Uma outra forma muito comum de se gerar uma<br />

solução inicial é escolher os elementos candidatos<br />

aleatoriamente.<br />

© 2007 by Prentice Hall


Métodos de refinamento<br />

• As heurísticas de refinamento em problemas de<br />

otimização, também chamadas de técnicas de<br />

busca local, constituem uma família de técnicas<br />

baseadas na noção de vizinhança.<br />

• Seja S, o espaço de busca e f a função objetivo. A<br />

função N, associa a cada solução s Є S sua<br />

vizinhança N(S) S. Cada solução s’ Є N(s) é<br />

chamada de vizinho de s.<br />

© 2007 by Prentice Hall


Métodos de refinamento<br />

• Princípio de funcionamento:<br />

– A partir de uma solução inicial qualquer, trafegase,<br />

a cada iteração, de vizinho para vizinho de<br />

acordo com a definição de vizinhança adotada,<br />

tentando melhorar a solução construída.<br />

– Uma heurística clássica para quando não existe<br />

nenhum vizinho melhor que a solução corrente<br />

(ótimo local), sob uma determinada medida de<br />

desempenho.<br />

© 2007 by Prentice Hall


Métodos de refinamento<br />

• Um exemplo típico de problemas desta natureza é o<br />

problema de programação de horários de cursos<br />

universitários.<br />

• A restrição principal desse problema requer que as<br />

aulas dadas pelo mesmo professor para turmas<br />

distintas não se sobreponham, isto é, que não sejam<br />

realizadas no mesmo horário.<br />

© 2007 by Prentice Hall


Métodos de refinamento<br />

• Entre os métodos clássicos de refinamento citam-se:<br />

– Método da descida/subida<br />

– Método de primeira melhora<br />

– Método de descida/subida randômica<br />

– Método não ascendente/descendente randômico<br />

– Descida em vizinhança variável<br />

© 2007 by Prentice Hall


Quando utilizar heurísticas?<br />

• Existem muitos fatores que tornam interessante a<br />

utilização de algoritmos heurísticos na resolução de<br />

um determinado problema:<br />

– quando não existe um método exato para a<br />

resolução do problema, ou quando o método<br />

requer um tempo muito alto de processamento<br />

• Neste caso, oferecer uma solução boa é melhor do<br />

que não ter nenhuma solução.<br />

© 2007 by Prentice Hall


Quando utilizar heurísticas?<br />

– quando não é necessária a solução ótima, pois as<br />

soluções obtidas já são razoáveis;<br />

– quando os dados são pouco confiáveis. Neste caso,<br />

a busca pela solução ótima não tem sentido, pois a<br />

mesma será uma aproximação da realidade;<br />

– quando há limitações de tempo e/ou dinheiro as<br />

quais obrigam a utilização de métodos de resposta<br />

rápida como passos intermediários de outros<br />

algoritmos, potencialmente exatos ou heurísticos.<br />

© 2007 by Prentice Hall


Desafios...<br />

• O desafio é produzir, em tempo reduzido, soluções<br />

tão próximas quanto possível da solução ótima.<br />

• Muitos esforços têm sido feitos nesta direção e<br />

heurísticas muito eficientes foram desenvolvidas<br />

para diversos problemas.<br />

• A maioria das heurísticas desenvolvidas é muito<br />

específica para um problema particular, não sendo<br />

eficientes (ou mesmo aplicáveis) na resolução de<br />

uma classe mais ampla de problemas.<br />

© 2007 by Prentice Hall


Desafios...<br />

• Somente a partir da década de 1980<br />

intensificaram-se os estudos no sentido de se<br />

desenvolver procedimentos heurísticos com uma<br />

certa estrutura teórica e com caráter mais geral,<br />

sem prejudicar a principal característica destes,<br />

que é a flexibilidade.<br />

• Denominados como melhores estratégias ou<br />

métodos “inteligentemente flexíveis”, conhecidos<br />

como “metaheurísticas”.<br />

© 2007 by Prentice Hall


Seminário<br />

• Entre os métodos construtivos:<br />

– <strong>Heurística</strong> do vizinho mais próximo<br />

– <strong>Heurística</strong> da inserção mais distante<br />

– <strong>Heurística</strong> da inserção mais barata<br />

• Entre os métodos clássicos de refinamento:<br />

– Método da descida/subida<br />

– Método de primeira melhora<br />

– Método de descida/subida randômica<br />

– Método não ascendente/descendente randômico<br />

– Descida em vizinhança variável<br />

© 2007 by Prentice Hall

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!