Heurística
Heurística
Heurística
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