Otimização combinatória é um ramo da otimização em matemática aplicada "Otimização (matemática)") e em ciência da computação, relacionada à pesquisa operacional, teoria algorítmica da informação e teoria da complexidade computacional. Também está relacionado a outras áreas, como inteligência artificial e engenharia de software. Algoritmos de otimização combinatória resolvem instâncias de problemas que são consideradas difíceis em geral, explorando o espaço de solução (geralmente grande) para essas instâncias. Algoritmos de otimização combinatória conseguem isso reduzindo o tamanho efetivo do espaço e explorando o espaço de busca de forma eficiente.
Algoritmos de otimização combinatória são frequentemente implementados em linguagens imperativas como C e C++ entre outros softwares inteligentes em linguagens de programação lógica como Prolog, ou mesmo em linguagens multiparadigmáticas como Oz.
Ao estudar a teoria da complexidade computacional é possível compreender a importância da otimização combinatória. Algoritmos de otimização combinatória são comumente relacionados a problemas NP-difíceis. Tais problemas em geral não são resolvidos de forma eficiente, no entanto, várias abordagens da teoria da complexidade sugerem que certas instâncias (por exemplo, instâncias "pequenas") desses problemas podem ser resolvidas de forma eficiente. Tais casos têm frequentemente ramificações práticas muito importantes.
definição formal
Uma instância de um problema de otimização combinatória pode ser formalmente descrita como uma tupla
onde.
Definição de problema de otimização
Um problema de otimização combinatória é definido como aquele em que o conjunto de soluções possíveis é discreto. Em outras palavras, é um problema de otimização que envolve um número finito ou contável de soluções possíveis.
Este tipo de problema difere dos problemas de otimização contínua, nos quais o conjunto de soluções possíveis é infinito e incontável. Este ramo da otimização está intimamente relacionado à pesquisa operacional, teoria algorítmica e teoria da complexidade computacional. Algoritmos de otimização combinatória resolvem problemas que geralmente são considerados difíceis, explorando o grande espaço de soluções do problema em questão. Bons algoritmos de otimização combinatória conseguem reduzir o tamanho efetivo do espaço de busca e explorá-lo de forma eficiente.
Projeto otimizado
Introdução
Em geral
Otimização combinatória é um ramo da otimização em matemática aplicada "Otimização (matemática)") e em ciência da computação, relacionada à pesquisa operacional, teoria algorítmica da informação e teoria da complexidade computacional. Também está relacionado a outras áreas, como inteligência artificial e engenharia de software. Algoritmos de otimização combinatória resolvem instâncias de problemas que são consideradas difíceis em geral, explorando o espaço de solução (geralmente grande) para essas instâncias. Algoritmos de otimização combinatória conseguem isso reduzindo o tamanho efetivo do espaço e explorando o espaço de busca de forma eficiente.
Algoritmos de otimização combinatória são frequentemente implementados em linguagens imperativas como C e C++ entre outros softwares inteligentes em linguagens de programação lógica como Prolog, ou mesmo em linguagens multiparadigmáticas como Oz.
Ao estudar a teoria da complexidade computacional é possível compreender a importância da otimização combinatória. Algoritmos de otimização combinatória são comumente relacionados a problemas NP-difíceis. Tais problemas em geral não são resolvidos de forma eficiente, no entanto, várias abordagens da teoria da complexidade sugerem que certas instâncias (por exemplo, instâncias "pequenas") desses problemas podem ser resolvidas de forma eficiente. Tais casos têm frequentemente ramificações práticas muito importantes.
definição formal
Uma instância de um problema de otimização combinatória pode ser formalmente descrita como uma tupla
onde.
Definição de problema de otimização
Um problema de otimização combinatória é definido como aquele em que o conjunto de soluções possíveis é discreto. Em outras palavras, é um problema de otimização que envolve um número finito ou contável de soluções possíveis.
É aqui que entram os algoritmos de otimização combinatória. São capazes de resolver problemas normalmente considerados difíceis, pois exploram um amplo espaço de soluções. Para conseguir isso, esses algoritmos reduzem efetivamente o tamanho do espaço e o exploram de forma eficiente.
No campo da otimização combinatória, é comum que a maioria dos processos de resolução de problemas não consiga garantir a solução ótima, mesmo dentro do contexto do modelo utilizado. No entanto, a aproximação ao ótimo é geralmente suficiente para resolver problemas na prática.
Existem diferentes métodos de resolução que podem ser classificados em quatro grandes grupos:
Os métodos mais comuns utilizados para resolver problemas de otimização combinatória são heurísticas ou metaheurísticas. Esses métodos são capazes de gerar soluções para o problema, embora sejam aproximações que não necessariamente alcançam a solução ótima.
Nos primórdios da Pesquisa Operacional, as limitações do cálculo automático levaram à criação de procedimentos heurísticos que poderiam encontrar soluções rapidamente, embora não necessariamente as melhores.
Embora os métodos de resolução heurística não possam garantir a solução ótima, eles são essenciais por diversas razões. Primeiro, são capazes de gerar soluções, o que é melhor do que não ter nenhuma solução. Em segundo lugar, obter a solução óptima para um modelo que não representa exactamente o problema real não é necessariamente essencial. Finalmente, conceber uma boa heurística requer uma compreensão profunda do problema, o que pode levar a outros tipos de melhorias.
Portanto, métodos heurísticos, incluindo processos de melhoria local e algoritmos metaheurísticos, são ferramentas valiosas para resolver problemas de otimização combinatória na prática.
Exemplos de problemas de otimização
Nesta categoria existem problemas como:
Métodos
Métodos de busca heurística (algoritmos metaheurísticos) como os listados abaixo têm sido usados para resolver problemas deste tipo.
Este tipo de problema difere dos problemas de otimização contínua, nos quais o conjunto de soluções possíveis é infinito e incontável. Este ramo da otimização está intimamente relacionado à pesquisa operacional, teoria algorítmica e teoria da complexidade computacional. Algoritmos de otimização combinatória resolvem problemas que geralmente são considerados difíceis, explorando o grande espaço de soluções do problema em questão. Bons algoritmos de otimização combinatória conseguem reduzir o tamanho efetivo do espaço de busca e explorá-lo de forma eficiente.
É aqui que entram os algoritmos de otimização combinatória. São capazes de resolver problemas normalmente considerados difíceis, pois exploram um amplo espaço de soluções. Para conseguir isso, esses algoritmos reduzem efetivamente o tamanho do espaço e o exploram de forma eficiente.
No campo da otimização combinatória, é comum que a maioria dos processos de resolução de problemas não consiga garantir a solução ótima, mesmo dentro do contexto do modelo utilizado. No entanto, a aproximação ao ótimo é geralmente suficiente para resolver problemas na prática.
Existem diferentes métodos de resolução que podem ser classificados em quatro grandes grupos:
Os métodos mais comuns utilizados para resolver problemas de otimização combinatória são heurísticas ou metaheurísticas. Esses métodos são capazes de gerar soluções para o problema, embora sejam aproximações que não necessariamente alcançam a solução ótima.
Nos primórdios da Pesquisa Operacional, as limitações do cálculo automático levaram à criação de procedimentos heurísticos que poderiam encontrar soluções rapidamente, embora não necessariamente as melhores.
Embora os métodos de resolução heurística não possam garantir a solução ótima, eles são essenciais por diversas razões. Primeiro, são capazes de gerar soluções, o que é melhor do que não ter nenhuma solução. Em segundo lugar, obter a solução óptima para um modelo que não representa exactamente o problema real não é necessariamente essencial. Finalmente, conceber uma boa heurística requer uma compreensão profunda do problema, o que pode levar a outros tipos de melhorias.
Portanto, métodos heurísticos, incluindo processos de melhoria local e algoritmos metaheurísticos, são ferramentas valiosas para resolver problemas de otimização combinatória na prática.
Exemplos de problemas de otimização
Nesta categoria existem problemas como:
Métodos
Métodos de busca heurística (algoritmos metaheurísticos) como os listados abaixo têm sido usados para resolver problemas deste tipo.