Abordagens para Problemas Intratáveis

Propaganda
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.
Download