Buscar

Heurísticas e Metaheurísticas 01

Prévia do material em texto

ENP557 –Heur. e Metaheurísticas
Aula 01 –Algoritmos Exatos e Teoria da Complexidade
OTIMIZAÇÃO
 Muitos problemas consistem na busca da melhor
atribuição de valores a um conjunto de variáveis,
sujeito a um conjunto de restrições, de forma a
alcançar um objetivo determinado
 Essas variáveis possuem características discretas ou
continuas
 Dentre os problemas que são modelados com variáveis
discretas, encontram-se os problemas de otimização
combinatória
OTIMIZAÇÃO
 Uma atribuição de valores às variáveis que respeita
todas as restrições é dita como uma solução viável
 O conjunto de todas as possíveis atribuições de valores
às variáveis do problema é chamado de espaço de
busca.
 A melhor solução do espaço de busca é chamado de
solução ótima.
ALGORITMOS VS HEURISTICAS
 Um algoritmo é uma sequencia finita de instruções não
ambíguas que podem ser executadas em um
computador para resolver algum tipo de problema
 Heurísticas são algoritmos que nem sempre retornam
respostas (soluções) exatas para o problema ao qual
elas retratam
 Entretanto, espera-se que essas respostas sejam
próximas da solução exata do problema
HEURÍSTICAS
 Utilizamos heurísticas em vários casos
 Quando o tempo gasto pelo melhor algoritmo que
existe para o problema (estado da arte) é maior que o
tempo disponível
 Quando a quantidade de memoria necessária para se
resolver o problema é superior a quantidade de
memoria disponível
 A quantidade de dados a serem processados é muito
grande
 Quando não se sabe como resolver o problema de
forma exata
CLASSES DE PROBLEMA
 A definição original de NP (e seu uso mais comum até
os dias atuais) não esta relacionado à problemas de
busca, mas sim a problemas de decisão
 Problemas que remetem perguntas que podem ser
respondidas com decisões de SIM e NÃO
 Existe alguma atribuição que satisfaz a formula
booleana?
CLASSES DE PROBLEMA
 Existem problemas de busca que não podem ser
resolvidos em tempo polinomial?
 A maioria dos pesquisadores de algoritmos julgam que
sim
 É difícil de acreditar que uma boa em tempo
exponencial pode ser evitada para todos os casos
 Ou que sempre serão encontrados métodos que
desfaçam a complexidade de problemas difíceis
CLASSES DE PROBLEMA
CLASSES DE PROBLEMA
 A teoria da complexidade concentra-se nos problemas
de decisão
 As propriedades que são válidas para os problemas de
decisão também são válidas para os problemas de
otimização respectivo ao mesmo problema
CLASSE NP
 Nondeterministic Polynomial-time
 Problemas que podem ser resolvidos em tempo
polinomial em máquinas de Turing não determinísticas
 Classe de problemas cuja viabilidade de uma solução
pode ser verificada em tempo polinomial
CLASSE P
 Deterministic Polynomial-time
 Problemas que podem ser resolvidos em tempo polinomial
em maquinas de Turing determinísticas
 P ⊂ NP
 Exemplos:
 Ordenação
 Problema do caminho mais curto
 Programação linear
CLASSE NP-COMPLETE
 Transformação polinomial
 Um problema de decisão A transforma-se
polinomialmente em um problema de decisão B se
 Dada qualquer entrada 𝐼𝐴 para o problema A, pode-se
construir uma entrada 𝐼𝐵 em tempo polinomial para o
problema B
 𝐼𝐴 é uma instancia “sim” para A se, e somente se, 𝐼𝐵 é
uma instancia “sim” para B
 Primeiro problema NP-C
 Em 1971, Stephen Cook provou que todos os problemas
em NP podem ser reduzidos ao SAT (problema da
satisfabilidade) em tempo polinomial
CLASSE NP-COMPLETE
 Um problema de decisão 𝐷 ∈ 𝑁𝑃 é dito NP-C quando
qualquer outro problema em NP pode ser
transformado em D
 Consequência: se existir algum algoritmo polinomial
para a resolução de algum problema em NP-C, então
todos os problemas da classe NP também serão
resolvidos em tempo polinomial
 Então 𝑃 = 𝑁𝑃
CLASSE NP-HARD
 Problemas de otimização relacionados aos problemas
de decisão contidos em NP-C
 Classe de problemas da qual pertentem a maioria dos
problemas de grande importância pratica
REDUÇÃO DE PROBLEMAS
 Uma redução de um problema A para um problema B
são dois algoritmos de tempo polinomial f e h que,
respectivamente
 Transformam qualquer instancia 𝐼𝐴 em uma instancia 𝐼𝐵
 Transformam qualquer instancia 𝐼𝐵 em uma instancia 𝐼𝐴
 Se não existe solução para 𝐼𝐵, por consequência não
existe solução para 𝐼𝐴
REDUÇÃO DE PROBLEMAS
TEORIA DA COMPLEXIDADE
 Estuda a complexidade inerente aos problemas
computacionais e aos algoritmos que resolvem estes
problemas
 Complexidade de algoritmos
 Quais são os requisitos de tempo e de memoria de um
determinado algoritmo em função do tamanho da
entrada?
 Complexidade de problemas
 Qual é a complexidade do algoritmo de menor
complexidade que resolve o problema?
TEORIA DA COMPLEXIDADE
 Insertion Sort
TEORIA DA COMPLEXIDADE
TEORIA DA COMPLEXIDADE
 Complexidade polinomial
 A complexidade de um algoritmo ou de um problema é
dita polinomial se ela é limitada por um polinômio
 Exemplo: 𝑂 𝑛 , 𝑂 𝑛. 𝑙𝑜𝑔𝑛 , 𝑂 𝑛𝑘 k é 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 , entre
outros
 Complexidade exponencial
 A complexidade de um algoritmo ou de um problema é
dita exponencial, se ela cresce de acordo com uma
função exponencial
 Exemplo: 𝑂 𝑛! , 𝑂 𝑛𝑛 , 𝑂 𝑘𝑛 𝑘 é 𝑐𝑜𝑛𝑠𝑡𝑎𝑛𝑡𝑒 , entre
outros
TEORIA DA COMPLEXIDADE
 Como provar a complexidade de um problema?
 A complexidade de um algoritmo que resolve o
problema nos dá um limite superior para a
complexidade do problema
 Problema de ordenação→ 𝑂 𝑛2
 Dá para fazer melhor?
TEORIA DA COMPLEXIDADE
 Problema do fecho convexo
TEORIA DA COMPLEXIDADE
 Pode-se ordenar qualquer conjunto de números usando
o seguinte algoritmo
TEORIA DA COMPLEXIDADE
 Transforme o problema de ordenação em um problema
de fecho convexo
 𝑃 = 𝑎, 𝑎2 , 𝑏, 𝑏2 , 𝑐, 𝑐2 , … , 𝑧, 𝑧2
 𝑂 𝑛
TEORIA DA COMPLEXIDADE
 Resolva o problema de fecho convexo utilizando o
algoritmo de Graham
 𝑂 𝑛. 𝑙𝑜𝑔𝑛
TEORIA DA COMPLEXIDADE
 Percorra todos os pontos do fecho até encontrar o que
contenha o menor valor no eixo das abscissas
 𝑂 𝑛
TEORIA DA COMPLEXIDADE
 A partir do ponto selecionado, percorra novamente
todos os pontos no polígono, retornando os valores
contidos na coordenada X
 𝑂 𝑛
TEORIA DA COMPLEXIDADE
 Com isso, a complexidade total do algoritmo é
 𝑂 𝑛 + 𝑂 𝑛. 𝑙𝑜𝑔𝑛 + 𝑂 𝑛 + 𝑂 𝑛 = 𝑂 𝑛. 𝑙𝑜𝑔𝑛
TEORIA DA COMPLEXIDADE
 Estes estudos são realizados, em suma, para resolver
problemas que pertencem a classe NP-H
 Mas pra que isso se posso usar métodos exatos para
resolver esses problemas?
TEORIA DA COMPLEXIDADE
 Na prática, os problemas NP-H podem ser
solucionados utilizando das seguintes técnicas
 Algoritmos exatos pseudo-polinomiais
 Programação dinâmica
 Métodos exatos de enumeração implícita
 Backtraking, branch-and-bound
 Algoritmos evolucionários
 Programação genética
 Heurísticas e Metaheurísticas
KNAPSACK PROBLEM
KNAPSACK PROBLEM
ALGORITMOS EXATOS
PROGRAMAÇÃO DINÂMICA
BRANCH-AND-BOUND
HEURÍSTICA
 Algoritmo guloso
 Ordena os itens pelo valor de custo benefício

Continue navegando