• Nenhum resultado encontrado

Tópicos de Análise de Algoritmos

N/A
N/A
Protected

Academic year: 2022

Share "Tópicos de Análise de Algoritmos"

Copied!
66
0
0

Texto

(1)

Tópicos de Análise de Algoritmos

Algoritmos de aproximação

Uma introdução

Sec 11.1 e 11.2 do KT

(2)

Problemas de Otimização Combinatória

conjunto de instâncias para cada instância I,

um conjunto Sol(I) de soluções viáveis e

uma funçãoval(S) para cada solução S emSol(I)

(3)

Problemas de Otimização Combinatória

conjunto de instâncias para cada instância I,

um conjunto Sol(I) de soluções viáveis e

uma funçãoval(S) para cada solução S emSol(I) Se Sol(I) é vazio, I éinviável, caso contrário, I é viável.

(4)

Problemas de Otimização Combinatória

conjunto de instâncias para cada instância I,

um conjunto Sol(I) de soluções viáveis e

uma funçãoval(S) para cada solução S emSol(I) Se Sol(I) é vazio, I éinviável, caso contrário, I é viável.

Problema de minimização: Dada uma instância I viável, encontrar uma solução S em Sol(I) tal queval(S) é mínimo.

Problema de maximização: Dada uma instância I viável, encontrar uma solução S em Sol(I) tal queval(S) é máximo.

(5)

Problemas de Otimização Combinatória

conjunto de instâncias para cada instância I,

um conjunto Sol(I) de soluções viáveis e

uma funçãoval(S) para cada solução S emSol(I) Se Sol(I) é vazio, I éinviável, caso contrário, I é viável.

Problema de minimização: Dada uma instância I viável, encontrar uma solução S em Sol(I) tal queval(S) é mínimo.

Problema de maximização: Dada uma instância I viável, encontrar uma solução S em Sol(I) tal queval(S) é máximo.

opt(I): valor ótimo(valor de uma solução ótima)

(6)

Como lidar com problemas NP-difíceis?

Um dito em engenharia:

“Rápido. Barato. Confiável. Escolha dois.”

(7)

Como lidar com problemas NP-difíceis?

Um dito em engenharia:

“Rápido. Barato. Confiável. Escolha dois.”

Podemos ter algoritmos que (1)encontram soluções ótimas (2) em tempo polinomial(3) para qualquer instância.

(8)

Como lidar com problemas NP-difíceis?

Um dito em engenharia:

“Rápido. Barato. Confiável. Escolha dois.”

Podemos ter algoritmos que (1)encontram soluções ótimas (2) em tempo polinomial(3) para qualquer instância.

Abrimos mão de(3) quando procuramos casos particulares do problema que conseguimos resolver eficientemente.

(9)

Como lidar com problemas NP-difíceis?

Um dito em engenharia:

“Rápido. Barato. Confiável. Escolha dois.”

Podemos ter algoritmos que (1)encontram soluções ótimas (2) em tempo polinomial(3) para qualquer instância.

Abrimos mão de(3) quando procuramos casos particulares do problema que conseguimos resolver eficientemente.

Em programação inteira por exemplo abre-se mão de (2).

(10)

Como lidar com problemas NP-difíceis?

Um dito em engenharia:

“Rápido. Barato. Confiável. Escolha dois.”

Podemos ter algoritmos que (1)encontram soluções ótimas (2) em tempo polinomial(3) para qualquer instância.

Abrimos mão de(3) quando procuramos casos particulares do problema que conseguimos resolver eficientemente.

Em programação inteira por exemplo abre-se mão de (2).

Em algoritmos de aproximação, abrimos mão de (1):

(11)

Como lidar com problemas NP-difíceis?

Um dito em engenharia:

“Rápido. Barato. Confiável. Escolha dois.”

Podemos ter algoritmos que (1)encontram soluções ótimas (2) em tempo polinomial(3) para qualquer instância.

Abrimos mão de(3) quando procuramos casos particulares do problema que conseguimos resolver eficientemente.

Em programação inteira por exemplo abre-se mão de (2).

Em algoritmos de aproximação, abrimos mão de (1):

buscamosboas soluções que possam ser obtidas eficientemente.

(12)

Algoritmos de aproximação

Algoritmo Aé de aproximação se é polinomial e existe α>0 tal que

val(A(I))≤α·opt(I)

para toda instância I do problema (de minimização).

(13)

Algoritmos de aproximação

Algoritmo Aé de aproximação se é polinomial e existe α>0 tal que

val(A(I))≤α·opt(I)

para toda instância I do problema (de minimização).

A é umaα-aproximação e

α é a razão de aproximação (ou garantia de performance).

(14)

Algoritmos de aproximação

Algoritmo Aé de aproximação se é polinomial e existe α>0 tal que

val(A(I))≤α·opt(I)

para toda instância I do problema (de minimização).

A é umaα-aproximação e

α é a razão de aproximação (ou garantia de performance).

α >1 para problemas de minimização

(15)

Algoritmos de aproximação

Algoritmo Aé de aproximação se é polinomial e existe α>0 tal que

val(A(I))≤α·opt(I)

para toda instância I do problema (de minimização).

A é umaα-aproximação e

α é a razão de aproximação (ou garantia de performance).

α >1 para problemas de minimização Para problemas de maximização, a desigualdade é invertida e α<1.

(16)

Algoritmos de aproximação

Algoritmo Aé de aproximação se é polinomial e existe α>0 tal que

val(A(I))≤α·opt(I)

para toda instância I do problema (de minimização).

A é umaα-aproximação e

α é a razão de aproximação (ou garantia de performance).

α >1 para problemas de minimização Para problemas de maximização, a desigualdade é invertida e α<1.

Objetivo: α tão perto de 1 quanto possível

(17)

Escalonamento em máquinas idênticas

Dados: q máquinas n tarefas

duração d[i]da tarefa i (i =1, . . . ,n) escalonamento: partição {M[1], . . . ,M[q]}de{1, . . . ,n}

tarefas máquinas

(18)

Exemplo 1

q =3 n=7

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(19)

Exemplo 1

q =3 n=7

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

{{1,4,7},{2,5},{3,6}} ⇒ Tempo de conclusão =13

(20)

Exemplo 2

q =3 n=7

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

{{1,2,3},{4,5},{6,7}} ⇒ Tempo de conclusão =12

(21)

Problema

Encontrar um escalonamento com tempo de conclusão mínimo.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

{{1,4},{2,3},{5,6,7}} ⇒ Tempo de conclusão =9

(22)

NP-difícil mesmo para q = 2

tarefas máquinas

Algoritmo: testa todo M[1]⊆ {1, . . . ,n} e escolhe melhor

(23)

NP-difícil mesmo para q = 2

tarefas máquinas

Algoritmo: testa todo M[1]⊆ {1, . . . ,n} e escolhe melhor 2n subconjuntos exponencial

(24)

NP-difícil mesmo para q = 2

tarefas máquinas

Algoritmo: testa todo M[1]⊆ {1, . . . ,n} e escolhe melhor 2n subconjuntos exponencial

NP-difícil é improvável que exista algoritmopolinomial NP-difícil que resolva o problema (se existir, P=NP)

(25)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(26)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(27)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(28)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(29)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(30)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(31)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(32)

Algoritmo de Graham

Atribui, uma a uma, cada tarefa à máquina menosocupada.

1 2 3 4 5 6 7 8 9 10 11 12 13 14

d[1] d[2] d[3] d[4] d[5] d[6] d[7]

1 2

2

3 7 5 6

M[1]

M[2]

M[3]

(33)

Escalonamento-Graham

Recebe números inteiros positivos q e n e um vetor d[1. .n] e devolve um escalomento de {1, . . . ,n}em q máquinas.

ESCALONAMENTO-GRAHAM (q,n,d) 1 para j 1 atéq faça

2 M[j]← ∅ 3 T[j]0

(34)

Escalonamento-Graham

Recebe números inteiros positivos q e n e um vetor d[1. .n] e devolve um escalomento de {1, . . . ,n}em q máquinas.

ESCALONAMENTO-GRAHAM (q,n,d) 1 para j 1 atéq faça

2 M[j]← ∅ 3 T[j]0

4 para i 1até n faça

5 sejak tal queT[k]é mínimo

(35)

Escalonamento-Graham

Recebe números inteiros positivos q e n e um vetor d[1. .n] e devolve um escalomento de {1, . . . ,n}em q máquinas.

ESCALONAMENTO-GRAHAM (q,n,d) 1 para j 1 atéq faça

2 M[j]← ∅ 3 T[j]0

4 para i 1até n faça

5 sejak tal queT[k]é mínimo 6 M[k]←M[k]∪ {i}

7 T[k]←T[k] +d[i] 8 devolva{M[1], . . . ,M[q]}

(36)

Delimitações para opt

opt =menor tempo de conclusão de um escalonamento

(37)

Delimitações para opt

opt =menor tempo de conclusão de um escalonamento

Duração da tarefa mais longa:

optmax{d[1],d[2], . . . ,d[n]}

(38)

Delimitações para opt

opt =menor tempo de conclusão de um escalonamento

Duração da tarefa mais longa:

optmax{d[1],d[2], . . . ,d[n]}

Distribuição balanceada:

opt d[1]+d[2]+· · ·+d[n] q

(39)

Fator de aproximação

TG: conclusão do escalonamento obtido pelo algoritmo i: última tarefa a concluir

j: máquina em que i está, a partir do instanteT

1 2 3 4 . . . T TG

M[1]

... M[j]

... M[q]

(40)

Fator de aproximação (cont.)

TG: conclusão do escalonamento obtido pelo algoritmo i: última tarefa a concluir

j: máquina em que i está, a partir do instanteT

1 2 3 4 . . . T TG

M[1]

... M[j]

... M[q]

T ·q≤d[1]+· · ·+d[n]

(41)

Fator de aproximação (cont.)

TG: conclusão do escalonamento obtido pelo algoritmo i: última tarefa a concluir

j: máquina em que i está, a partir do instanteT

1 2 3 4 . . . T TG

M[1]

... M[j]

... M[q]

T ·q≤d[1]+· · ·+d[n] T d[1]+· · ·+d[n] q

(42)

Fator de aproximação (cont.)

1 2 3 4 . . . T TG

M[1]

... M[j]

... M[q]

TG =T +d[i]

(43)

Fator de aproximação (cont.)

1 2 3 4 . . . T TG

M[1]

... M[j]

... M[q]

TG =T +d[i]

d[1]+· · ·+d[n] q +d[i]

d[1]+· · ·+d[n]

q + max{d[1], . . ,d[n]}

opt+opt=2opt

(44)

Conclusão

ESCALONAMENTO-GRAHAM (q,n,d) 1 para j 1 atéq faça

2 M[j]← ∅ 3 T[j]0

4 para i 1até n faça

5 sejak tal queT[k]é mínimo 6 M[k]←M[k]∪ {i}

7 T[k]←T[k] +d[i] 8 devolva{M[1], . . . ,M[q]} Teorema:

O algoritmo ESCALONAMENTO-GRAHAMé uma 2-aproximação.

(45)

Uma melhora no algoritmo

Regra LPT:longest processing time rule

Ordene as tarefas pelo tempo de processamento,

com as mais longas primeiro, e aplique ESCALONAMENTO-GRAHAM.

(46)

Uma melhora no algoritmo

Regra LPT:longest processing time rule

Ordene as tarefas pelo tempo de processamento,

com as mais longas primeiro, e aplique ESCALONAMENTO-GRAHAM. Exercício:

Mostre que o algoritmo resultante é uma 32-aproximação.

(47)

Uma melhora no algoritmo

Regra LPT:longest processing time rule

Ordene as tarefas pelo tempo de processamento,

com as mais longas primeiro, e aplique ESCALONAMENTO-GRAHAM. Exercício:

Mostre que o algoritmo resultante é uma 32-aproximação.

(Na verdade, ele é uma 43-aproximação.)

(48)

Uma melhora no algoritmo

Regra LPT:longest processing time rule

Ordene as tarefas pelo tempo de processamento,

com as mais longas primeiro, e aplique ESCALONAMENTO-GRAHAM. Exercício:

Mostre que o algoritmo resultante é uma 32-aproximação.

(Na verdade, ele é uma 43-aproximação.)

Existe um PTAS para este problema.

PTAS: polynomial-time approximation scheme

(49)

Problema dos k -centros

Dados: grafo completo G = (V,E), inteiro k >0 e

distâncias dij para cadai ej emV tais que dii =0 para todoi, dij =dji para todo i e j, e dij ≤di+dj.

(50)

Problema dos k -centros

Dados: grafo completo G = (V,E), inteiro k >0 e

distâncias dij para cadai ej emV tais que dii =0 para todoi, dij =dji para todo i e j, e dij ≤di+dj.

S: conjunto não vazio de vértices d(i,S):= min{dij :j ∈S}

raio de S: max{d(i,S):i ∈V}

(51)

Problema dos k -centros

Dados: grafo completo G = (V,E), inteiro k >0 e

distâncias dij para cadai ej emV tais que dii =0 para todoi, dij =dji para todo i e j, e dij ≤di+dj.

S: conjunto não vazio de vértices d(i,S):= min{dij :j ∈S}

raio de S: max{d(i,S):i ∈V}

Objetivo: encontrar conjunto S comk vértices deV e raio mínimo.

(52)

Problema dos k -centros

Dados: grafo completo G = (V,E), inteiro k >0 e

distâncias dij para cadai ej emV tais que dii =0 para todoi, dij =dji para todo i e j, e dij ≤di+dj.

S: conjunto não vazio de vértices d(i,S):= min{dij :j ∈S}

raio de S: max{d(i,S):i ∈V}

Objetivo: encontrar conjunto S comk vértices deV e raio mínimo.

Vamos mostrar uma 2-aproximação para o problema.

(53)

Se soubéssemos o valor ótimo...

Vamos supor que V ={1, . . . ,n}e seja r o valor ótimo.

INFORMADO (n,k,d)

1 S ← ∅ V ←V

2 enquanto V= faça

3 sejas um elemento arbitrário de V

4 S ←S ∪ {s}

5 remova de V os vértices a distância até 2r des 6 devolvaS

(54)

Se soubéssemos o valor ótimo...

Vamos supor que V ={1, . . . ,n}e seja r o valor ótimo.

INFORMADO (n,k,d)

1 S ← ∅ V ←V

2 enquanto V= faça

3 sejas um elemento arbitrário de V

4 S ←S ∪ {s}

5 remova de V os vértices a distância até 2r des 6 devolvaS

O algoritmo acima usaria no máximo k centros.

Esboço da prova:

(55)

Se soubéssemos o valor ótimo...

Vamos supor que V ={1, . . . ,n}e seja r o valor ótimo.

INFORMADO (n,k,d)

1 S ← ∅ V ←V

2 enquanto V= faça

3 sejas um elemento arbitrário de V

4 S ←S ∪ {s}

5 remova de V os vértices a distância até 2r des 6 devolvaS

O algoritmo acima usaria no máximo k centros.

Esboço da prova: Cada novo elemento incluído emS leva consigo todo o cluster que o contém no ótimo.

(56)

Se soubéssemos o valor ótimo...

Vamos supor que V ={1, . . . ,n}e seja r o valor ótimo.

INFORMADO (n,k,d)

1 S ← ∅ V ←V

2 enquanto V= faça

3 sejas um elemento arbitrário de V

4 S ←S ∪ {s}

5 remova de V os vértices a distância até 2r des 6 devolvaS

O algoritmo acima usaria no máximo k centros.

Esboço da prova: Cada novo elemento incluído emS leva consigo todo o cluster que o contém no ótimo.

Faça uma busca binária pelo valor ótimo.

(57)

Mas não precisa do valor ótimo...

Vamos supor que V ={1, . . . ,n}. GULOSO(n,k,d)

1 S ← {1}

2 enquanto |S|<k faça

3 j arg max{d(,S) :∈V} mais distante deS

4 S ←S ∪ {j}

5 devolvaS

(58)

Mas não precisa do valor ótimo...

Vamos supor que V ={1, . . . ,n}. GULOSO(n,k,d)

1 S ← {1}

2 enquanto |S|<k faça

3 j arg max{d(,S) :∈V} mais distante deS

4 S ←S ∪ {j}

5 devolvaS

Teorema:

GULOSOé uma 2-aproximação para o problema dos k-centros.

Esboço da prova:

(59)

Mas não precisa do valor ótimo...

Vamos supor que V ={1, . . . ,n}. GULOSO(n,k,d)

1 S ← {1}

2 enquanto |S|<k faça

3 j arg max{d(,S) :∈V} mais distante deS

4 S ←S ∪ {j}

5 devolvaS

Teorema:

GULOSOé uma 2-aproximação para o problema dos k-centros.

Esboço da prova: É um caso particular do anterior.

Especificamente, o j escolhido aqui poderia ser um s do algoritmo anterior em cada iteração.

(60)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

(61)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

Conjunto dominante: conjunto S de vértices tal que

todo vértice do grafo ou está em S ou é adjacente a um vértice deS.

(62)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

Conjunto dominante: conjunto S de vértices tal que

todo vértice do grafo ou está em S ou é adjacente a um vértice deS. Problema: Dado um grafoG e um inteirok 0,

existe um conjunto dominante em G de tamanho no máximok?

(63)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

Conjunto dominante: conjunto S de vértices tal que

todo vértice do grafo ou está em S ou é adjacente a um vértice deS. Problema: Dado um grafoG e um inteirok 0,

existe um conjunto dominante em G de tamanho no máximok? Este problema é NP-completo.

(64)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

Conjunto dominante: conjunto S de vértices tal que

todo vértice do grafo ou está em S ou é adjacente a um vértice deS. Problema: Dado um grafoG e um inteirok 0,

existe um conjunto dominante em G de tamanho no máximok? Este problema é NP-completo.

Esboço da prova do teorema: Redução do conjunto dominante.

(65)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

Conjunto dominante: conjunto S de vértices tal que

todo vértice do grafo ou está em S ou é adjacente a um vértice deS. Problema: Dado um grafoG e um inteirok 0,

existe um conjunto dominante em G de tamanho no máximok? Este problema é NP-completo.

Esboço da prova do teorema: Redução do conjunto dominante.

Dado G e k, defina dij =1 sei e j são vizinhos em G, e dij =2 caso contrário.

(66)

Problema dos k -centros

Teorema: Se existe uma α-aproximação para

o problema dos k-centros comα <2, então P=NP.

Conjunto dominante: conjunto S de vértices tal que

todo vértice do grafo ou está em S ou é adjacente a um vértice deS. Problema: Dado um grafoG e um inteirok 0,

existe um conjunto dominante em G de tamanho no máximok? Este problema é NP-completo.

Esboço da prova do teorema: Redução do conjunto dominante.

Dado G e k, defina dij =1 sei e j são vizinhos em G, e dij =2 caso contrário.

Há conjunto dominante com k vértices sse aα-aproximação aplicada a (V(G),k,d) encontra um tal conjunto dominante.

Referências

Documentos relacionados

Fase: se se desmarca todos os itens e começa nova Fase: se se fase deixando s para ser atendido nela.. Fase:

Como adaptar MST-K RUSKAL para resolver o k -clustering?... Algoritmo inspirado

Notas de aula de um curso do Robert Tarjan. “Amortized

Podemos ter algoritmos que (1) encontram soluções ótimas (2) em tempo polinomial (3) para qualquer instância..?. Como lidar com

Podemos ter algoritmos que (1) encontram soluções ótimas (2) em tempo polinomial (3) para qualquer instância.... Como lidar com

decidir qual dos k itens será desalojado para dar espaço para d... Política ótima

há 2 créditos sobre cada item novo no vetor, e isso é suficiente para pagar pela cópia de todos os itens do vetor para o novo vetor pois, quando o vetor está cheio, há um item novo

Qual é o custo de MTF se comparado com um algoritmo ótimo de acesso?.. se A não