Otimização Combinatória e o Uso de Heurísticas
Classificado em Tecnologia
Escrito em em
português com um tamanho de 3,24 KB
O que são Problemas de Otimização Combinatória?
Problemas de Otimização Combinatória são aqueles nos quais as variáveis de decisão são discretas, ou seja, onde a solução é um conjunto ou uma sequência de inteiros ou outros objetos discretos. O desafio de encontrar soluções ótimas para tais problemas é conhecido como otimização combinatória. Estes problemas têm como característica um número enorme de soluções viáveis, que surgem de diferentes maneiras de realizar operações ou de alocar itens ou pessoas a diferentes posições.
O Conceito de Heurística
O termo "heurística" deriva da palavra grega heuriskein, que significa "encontrar" ou "descobrir". No contexto da Otimização Combinatória, uma heurística é utilizada em contraste com os métodos exatos, que garantem encontrar uma solução ótima global.
Definição: Uma heurística é uma técnica que busca encontrar boas soluções (próximas da ótima) a um custo computacional razoável, sem, no entanto, garantir a viabilidade ou a otimalidade. Em muitos casos, também não é possível estabelecer quão próxima da solução ótima uma determinada solução viável se encontra.
Heurísticas geralmente são mais flexíveis e capazes de lidar com funções-objetivo e/ou restrições mais complicadas (e mais realistas) do que os algoritmos exatos.
Por que usar Heurísticas?
Existem duas causas principais que justificam o enorme interesse no uso de heurísticas:
- O desenvolvimento do conceito de complexidade computacional;
- O aumento significativo na potência e eficiência das abordagens computacionais mais modernas.
Tipos de Heurísticas
- Construtivas: Iniciam com os dados do problema e, passo a passo, adicionam elementos que parecem contribuir para uma boa solução final. O ponto de partida é uma solução incompleta que é complementada gradualmente. Exemplo: Heurística do vizinho mais próximo para o problema do caixeiro-viajante.
- De Melhoramento: Partem de uma solução completa e a modificam progressivamente, buscando aperfeiçoá-la. Utilizam a ideia de vizinhança para explorar soluções alternativas. Várias soluções iniciais podem ser usadas, e a melhor solução final é escolhida. Esta estratégia também pode ser usada para transformar uma solução inviável em viável. Exemplo: Método de subida/descida (hill climbing).
- Análise de Componentes: Baseadas na abordagem "dividir para conquistar", são úteis para problemas complexos que precisam ser divididos em partes menores para análise. A ideia é lidar com os componentes separadamente e, depois, uni-los de maneira aceitável.
- De Aprendizagem: Analisam e combinam as diferentes opções como se fossem ramos de uma árvore. Um método é definido para percorrer esses ramos em busca da melhor solução, e a escolha de qual ramo seguir é guiada pela aprendizagem com os resultados de decisões anteriores. Exemplo: O término antecipado em um algoritmo de busca do tipo branch and bound.