Definições
Abordagens para Problemas Intratáveis
Letícia Rodrigues Bueno
UFABC
Definições
Motivação
Se você se depara com um problema intratável...
Definições
Motivação
Se você se depara com um problema intratável...
I can’t find an efficient algorithm, but neither can all these
famous people.
Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness,
Definições
Motivação
...e não pode usar alternativas como eBay...
Fonte: http://xkcd.com/399/
Definições
Motivação
...mas ainda precisa de uma solução...
Definições
Motivação
...mas ainda precisa de uma solução...
"You are on your own!"
Fonte: GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A guide to the theory of NP-Completeness,
W.H. Freeman and Company: New York, 1979.
Definições
Algumas Abordagens
...há problemas NP-completos que admitem um tratamento
razoável desde que algumas concessões sejam feitas
(relaxações):
Definições
Algumas Abordagens
...há problemas NP-completos que admitem um tratamento
razoável desde que algumas concessões sejam feitas
(relaxações):
1. Algoritmos heurísticos: fornecem soluções sem limite
formal de qualidade, avaliação empírica de complexidade
e qualidade das soluções. Exemplos: algoritmos gulosos,
Simulated Annealing, busca tabu, algoritmos genéticos,
ant system, etc;
Definições
Algumas Abordagens
...há problemas NP-completos que admitem um tratamento
razoável desde que algumas concessões sejam feitas
(relaxações):
1. Algoritmos heurísticos: fornecem soluções sem limite
formal de qualidade, avaliação empírica de complexidade
e qualidade das soluções. Exemplos: algoritmos gulosos,
Simulated Annealing, busca tabu, algoritmos genéticos,
ant system, etc;
2. Algoritmos randomizados: fornecem melhor solução
possível com probabilidade (alta) conhecida em tempo
execução determinístico (Monte Carlo) e/ou fornecem
melhor solução possível em tempo execução que é
variável aleatória (Las Vegas);
Definições
Algumas Abordagens
1. Algoritmos aproximativos: fornecem soluções que estão
a um fator ǫ da melhor solução possível;
Definições
Algumas Abordagens
1. Algoritmos aproximativos: fornecem soluções que estão
a um fator ǫ da melhor solução possível;
2. Algoritmos paralelos: fornecem soluções pelo uso de
computadores com grande poder de processamento e do
princípio de que alguns problemas grandes podem ser
divididos em problemas menores que então são resolvidos
em paralelo.
Definições
Heurísticas: Algoritmos Gulosos
• heurística que faz a escolha localmente ótima a cada
estágio com a esperança de encontrar o ótimo global.
Definições
Heurísticas: Algoritmos Gulosos
• heurística que faz a escolha localmente ótima a cada
estágio com a esperança de encontrar o ótimo global.
• Problemas com subestrutura ótima: se solução ótima
contém dentro dela soluções ótimas para subproblemas;
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
t
x
1
10
s
9
2
3
4
5
6
7
y
2
z
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
t
∞
x
1
∞
10
s
0
9
2
3
4
5
6
7
∞
y
2
∞
z
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
t
∞
x
1
∞
10
s
0
9
2
3
4
5
6
7
∞
y
2
∞
z
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
10
t
x
1
∞
10
s
0
9
2
3
4
5
6
7
5
y
2
∞
z
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
8
t
x
1
14
10
s
0
9
2
3
4
5
6
7
5
y
2
z
7
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
8
t
x
1
13
10
s
0
9
2
3
4
5
6
7
5
y
2
z
7
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
8
t
x
1
9
10
s
0
9
2
3
4
5
6
7
5
y
2
z
7
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Caminho mínimo de fonte única (algoritmo de Dijkstra):
8
t
x
1
9
10
s
0
9
2
3
4
5
6
7
5
y
2
z
7
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
8
3
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
8
3
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
8
3
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
8
3
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
8
3
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
3
8
Custo: 25
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema do Caixeiro Viajante:
c1
4
9
5
c4
8
c3
3
8
Custo: 24
c2
Definições
Algoritmo Guloso Mal-sucedido
Problema da Mochila 0 − 1:
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Mal-sucedido
Problema da Mochila 0 − 1:
item 3
50
item 2
item 1
30
20
10
R$60
R$100
R$120 Mochila
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Mal-sucedido
Problema da Mochila 0 − 1:
item 3
item 2
item 1
30 R$120
+
30
20
20 R$100
10
R$60
R$100
R$120 Mochila=R$220
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Mal-sucedido
Problema da Mochila 0 − 1:
item 3
item 2
item 1
20
10
R$60
20 R$100
30
+
10 R$60
R$100
R$120 Mochila=R$160
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Mal-sucedido
Problema da Mochila 0 − 1:
item 3
30
item 2
R$120
item 1
30
20
10
R$60
+
10 R$60
R$100
R$120 Mochila=R$180
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Problema da Mochila Fracionária:
item 3
50
item 2
item 1
30
20
10
R$60
R$100
R$120 Mochila
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Algoritmo Guloso Bem-sucedido
Problema da Mochila Fracionária:
20/30
item 3
item 2
item 1
20
R$60
+
20 R$100
30
10
R$80
+
10 R$60
R$100
R$120 Mochila=R$240
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Programação Dinâmica
• Método de resolução de problemas complexos que os
quebra em subproblemas mais simples (procura resolver
cada subproblema somente uma vez, tentando reduzir o
número de computações);
• Problema da Mochila 0 − 1;
• Multiplicação de Matrizes;
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1
f2
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9
f2 12
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9 18
f2 12 16
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9 18 20
f2 12 16 22
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9 18 20 24
f2 12 16 22 25
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9 18 20 24 32
f2 12 16 22 25 30
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9 18 20 24 32 35
f2 12 16 22 25 30 37
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Exemplo de Programação Dinâmica
Programação de linha de montagem:
2
7
9
3
2
2
4
8
4
3
1
5
8
1
3
2
6
2
4
4
3
7
2
4
1
5
f1 9 18 20 24 32 35
f2 12 16 22 25 30 37
Fonte: CORMEN et al. Introduction to Algorithms, 3a edição, MIT Press,
2009.
Definições
Bibliografia
CORMEN, T. H.; LEISERSON, C. E.; RIVEST, R. L. e STEIN, C.
Introduction to Algorithms, 3a edição, MIT Press, 2009.
GAREY, M. R. e JOHNSON, D. S. Computers and Intractability. A
guide to the theory of NP-Completeness, W.H. Freeman and
Company: New York, 1979.
ZIVIANI, N. Projeto de Algoritmos: com implementações em Pascal e
C, 2a edição, Cengage Learning, 2009.