Escolar Documentos
Profissional Documentos
Cultura Documentos
24/04/2019 2
Problemas P
O problema P é um problema de decisão (ou seja, a resposta pode ser sim ou não), que possa
ser resolvido em tempo polinomial. (problemas tratáveis)
◦ problemas que são resolvidos pelos computadores em um tempo razoável
São chamados assim porque seu tempo de cálculo é descrito por um polinômio no tamanho dos
dados.
Por exemplo, o problema de multiplicar duas matrizes de n fileiras e colunas pode ser resolvido
utilizando menos de n3 multiplicações.
24/04/2019 3
Problemas NP
O problema NP (Non-Deterministic Polynomial time) pode ser provado mas não resolvido em
tempo polinomial.
◦ Dada uma entrada, podemos verificar se ela é uma solução de um problema NP.
◦ Inclui todos os problemas da classe P, mas também muitos outros que se comportam de maneira
intrigante.
Ninguém conseguiu demonstrar que são intratáveis. Estão em uma espécie de limbo
informático: não se sabe se são polinomiais ou se são intratáveis
24/04/2019 4
Problemas NP-completos
Os problemas NP-completo
Subclasse da classe NP na qual são agrupados os problemas mais difíceis da classe NP;
Se para qualquer um dos tais problemas se encontrar um algoritmo polinomial, então todos eles
seriam resolvidos em tempo polinomial
24/04/2019 5
Problemas NP-completos
criptografia atual depende de um problema é da classe NP;
O mais algoritmo mais eficiente de todos levou 18 meses para decompor em fatores um número
de 200 cifras decimais, que são os habitualmente usados em criptografia.
24/04/2019 6
Problemas NP Difíceis
Subclasse dos problemas NP-completos;
24/04/2019 7
Algoritmos aproximados
Problemas NP-Difíceis são demorados, complexos de implementar e complexos de se executar;
◦ Taxa de crescimento muito elevada
24/04/2019 8
Algoritmos gulosos (greedy)
Algoritmos que tomam a decisão aparentemente mais apropriada;
◦ escolha que parece ser a melhor no momento;
◦ decisões apenas com informações disponíveis - não se preocupa com os efeitos futuros das decisões,
◦ A cada iteração tomam a decisão que ”parece” mais satisfatória;
24/04/2019 9
Algoritmos gulosos (greedy)
Algoritmos que tomam a decisão aparentemente mais apropriada;
◦ escolha que parece ser a melhor no momento;
◦ decisões apenas com informações disponíveis - não se preocupa com os efeitos futuros das decisões,
◦ A cada iteração tomam a decisão que ”parece” mais satisfatória;
24/04/2019 10
Algoritmos gulosos (greedy)
Algoritmos que tomam a decisão aparentemente mais apropriada;
◦ escolha que parece ser a melhor no momento;
◦ decisões apenas com informações disponíveis - não se preocupa com os efeitos futuros das decisões,
◦ A cada iteração tomam a decisão que ”parece” mais satisfatória;
24/04/2019 11
Algoritmos gulosos (greedy)
Algoritmos que tomam a decisão aparentemente mais apropriada;
◦ escolha que parece ser a melhor no momento;
◦ decisões apenas com informações disponíveis - não se preocupa com os efeitos futuros das decisões,
◦ A cada iteração tomam a decisão que ”parece” mais satisfatória;
Mas qual o critério de escolha?
24/04/2019 12
Algoritmos gulosos (greedy)
Um critério guloso deve ser elaborado previamente à execução do algoritmo
24/04/2019 13
Algoritmos gulosos (greedy)
Um critério guloso deve ser elaborado previamente à execução do algoritmo
Tempo de execução
Tempo de execução
Ou seja:
Dependente de informações;
◦ Maximizar/Minimizar por algoritmos gulosos só é possível se houver informações sobre o domínio.
24/04/2019 16
Algoritmo guloso – Problema do
escalonamento de tarefas
Vamos exemplificar:
◦ Temos que escalonar as tarefas de forma a realizar o máximo de tarefas possíveis durante o expediente
de trabalho;
◦ Só se realiza uma tarefa por vez (São homens que estão trabalhando).
24/04/2019 17
Tarefas
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 18
Intervalos disjuntos
Dois intervalos são disjuntos se eles não se sobrepõem;
◦ T1 se sobrepõe a T2 e T3 ;
◦ T2 se sobrepõe a T1, T3 e T4;
◦ T3 se sobrepõe a T1, T2 , T3 e T4;
◦ T4 se sobrepõe a T2 e T3;
◦ T1 e T4 não se sobrepõem. 0 1 2 3 4 5 6
T1
T2
T3
T4
24/04/2019 19
Algoritmo guloso – Problema do
escalonamento de tarefas
Vamos exemplificar:
◦ Temos que escalonar as tarefas de forma a realizar o máximo de tarefas disjuntas possíveis durante o
expediente de trabalho;
◦ MAXIMIZAR a quantidade de tarefas;
Critério guloso:
◦ Tarefas que começam primeiro?
◦ Tarefas que terminam primeiro?
◦ Tarefas maiores?
◦ Tarefas menores?
24/04/2019 20
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 1:
◦ Tarefas que se iniciam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 21
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 1:
◦ Tarefas que se iniciam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
◦ Quantidade de tarefas T3
realizadas: T4
T5
T6
Solução: {T3, }
T7
T8
T9
T10
T11
24/04/2019 22
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 1:
◦ Tarefas que se iniciam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
◦ Quantidade de tarefas T3
realizadas: T4
T5
T6
Solução: {T3, T8, }
T7
T8
T9
T10
T11
24/04/2019 23
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 1:
◦ Tarefas que se iniciam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
◦ Quantidade de tarefas T3
realizadas: 3 T4
T5
T6
Solução: {T3, T8, T11}
T7
T8
T9
T10
T11
24/04/2019 24
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 2:
◦ Tarefas que tem a menor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
duração; T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 25
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 2:
◦ Tarefas que tem a menor 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
duração; T1
T2
◦ Quantidade de tarefas T3
realizadas: 2 T4
T5
T6
Solução: {T4, T11}
T7
T8
T9
T10
T11
24/04/2019 26
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 27
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 28
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 29
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
24/04/2019 30
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
◦ Quantidade de tarefas T3
realizadas: 4 T4
T5
T6
Solução: {T1, T4, T8, T11}
T7
T8
T9
T10
T11
24/04/2019 31
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
primeiro; T1
T2
◦ Quantidade de tarefas T3
realizadas: 4 T4
T5
T6
Solução: {T1, T4, T8, T11}
T7
T8
T9
Solução ótima!
T10
T11
24/04/2019 32
Algoritmo guloso – Problema do
escalonamento de tarefas
Critério guloso 3:
◦ Tarefas que terminam primeiro;
Algoritmo:
◦ Entrada: Vetor de tarefas;
◦ Saída: Tarefas escalonadas;
24/04/2019 33
Algoritmo guloso – Problema do troco
Quando uma compra gera um troco, algumas
perguntas devem ser respondidas antes de
executar a tarefa
◦ MAXIMIZAÇÃO ou MINIMIZAÇÃO?
24/04/2019 34
Algoritmo guloso – Problema do troco
Quando uma compra gera um troco, algumas
perguntas devem ser respondidas antes de
executar a tarefa
24/04/2019 35
Algoritmo guloso – Problema do troco
M = {1, 2, 5, 10, 20} moedas disponíveis.
24/04/2019 36
Algoritmo guloso – Problema do troco
M = {1, 2, 5, 10, 20} moedas disponíveis.
24/04/2019 37
Algoritmo guloso – Problema do troco
Estratégia:
24/04/2019 38
Algoritmo guloso – Problema do troco
M = {1, 2, 5, 10, 20} moedas disponíveis.
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43
24/04/2019 39
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43
SENÃO: i++
FIM ENQUANTO;
24/04/2019 40
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 0 43
trocoGerado trocoDesejado
SENÃO: i++
FIM ENQUANTO;
Solução: {}
24/04/2019 41
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 0 43
trocoGerado trocoDesejado
Solução: {}
24/04/2019 42
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 20 43
trocoGerado trocoDesejado
Solução: {20}
24/04/2019 43
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 20 43
trocoGerado trocoDesejado
Solução: {20}
24/04/2019 44
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 45
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 46
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 47
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 48
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 49
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 50
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 51
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 40 43
trocoGerado trocoDesejado
24/04/2019 52
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 42 43
trocoGerado trocoDesejado
24/04/2019 53
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 42 43
trocoGerado trocoDesejado
24/04/2019 54
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 42 43
trocoGerado trocoDesejado
24/04/2019 55
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 43 43
trocoGerado trocoDesejado
24/04/2019 56
Algoritmo guloso – Problema do troco
M’ = {20, 10, 5, 2, 1}
trocoGerado = 0
trocoDesejado = 43 43 43
trocoGerado trocoDesejado
24/04/2019 57
Outro teste
24/04/2019 58
Algoritmo guloso – Problema do troco
M = {1, 4, 6}, moedas disponíveis.
24/04/2019 59
Algoritmo guloso – Problema do troco
M = {1, 4, 6}, moedas disponíveis.
M’ = {6, 4, 1}
trocoGerado = 0
trocoDesejado = 8
24/04/2019 60
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 0
trocoDesejado = 8 0 8
trocoGerado trocoDesejado
SENÃO: i++
FIM ENQUANTO;
Solução: {}
24/04/2019 61
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 0
trocoDesejado = 8 0 8
trocoGerado trocoDesejado
Solução: {}
24/04/2019 62
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 6
trocoDesejado = 8 6 8
trocoGerado trocoDesejado
Solução: {6}
24/04/2019 63
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 6
trocoDesejado = 8 6 8
trocoGerado trocoDesejado
Solução: {6}
24/04/2019 64
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 6
trocoDesejado = 8 6 8
trocoGerado trocoDesejado
Solução: {6}
24/04/2019 65
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 6
trocoDesejado = 8 6 8
trocoGerado trocoDesejado
Solução: {6}
24/04/2019 66
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 6
trocoDesejado = 8 6 8
trocoGerado trocoDesejado
Solução: {6}
24/04/2019 67
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 6
trocoDesejado = 8 6 8
trocoGerado trocoDesejado
Solução: {6}
24/04/2019 68
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 7
trocoDesejado = 8 7 8
trocoGerado trocoDesejado
Solução: {6, 1}
24/04/2019 69
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 7
trocoDesejado = 8 7 8
trocoGerado trocoDesejado
Solução: {6, 1}
24/04/2019 70
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 8
trocoDesejado = 8 8 8
trocoGerado trocoDesejado
Solução: {6, 1, 1}
24/04/2019 71
Algoritmo guloso – Problema do troco
M’ = {6, 4, 1}
trocoGerado = 8
trocoDesejado = 8 8 8
trocoGerado trocoDesejado
24/04/2019 72
Algoritmo guloso
É míope:
ele toma decisões com base nas informações disponíveis na iteração corrente.
24/04/2019 73
Problema do troco – algoritmo guloso
24/04/2019
74
Problema da mochila
um ladrão que rouba uma loja encontra N itens, onde cada item i vale vi reais e wi quilos,
sendo vi e wi inteiros. O ladrão deseja levar a carga mais valiosa possível mas, no entanto,
consegue carregar apenas W quilos na sua mochila (W também é um inteiro).
24/04/2019 75
Problema da mochila
um ladrão que rouba uma loja encontra N itens, onde cada item i vale vi reais e wi quilos,
sendo vi e wi inteiros. O ladrão deseja levar a carga mais valiosa possível mas, no entanto,
consegue carregar apenas W quilos na sua mochila (W também é um inteiro).
Se o critério guloso de maior valor por kg for adotado o item 1 é o primeiro a ser selecionado
24/04/2019 76
Problema da mochila
A mochila pode suportar até 50 Kg
Se o critério guloso de maior valor por kg for adotado o item 1 é o primeiro a ser selecionado
Solução ótima
24/04/2019 77
Problema da mochila
A mochila pode suportar até 50 Kg
Se o critério guloso de maior valor por kg for adotado o item 1 é o primeiro a ser selecionado
Solução ótima
Critério guloso:
◦ Nesse caso a relação valor/peso leva a uma solução
ótima;
24/04/2019 79
Problema da mochila fracionada
1. Ordenar os itens por valor/peso decrescente;
2. Colocar na mochila o máximo do item I (começando em 0) que puder;
3. Passe para o próximo item;
24/04/2019 80
Problema da mochila fracionada
1. Ordenar os itens por valor/peso decrescente;
2. Colocar na mochila o máximo do item I (começando em 0) que puder;
3. Passe para o próximo item;
Solução ótima
24/04/2019 81
Algoritmos gulosos
Tomada de decisão/escolha de caminhos/combinação de possibilidades/...
24/04/2019 82
Problema do espaço digital
Cada arquivo num computador ocupa um certo número de Kbytes;
Um pendrive com capacidade c Kbytes é selecionado;
Implementar uma estratégia gulosa para gravar o maior número possível de arquivos no
pendrive.
24/04/2019 83
Problema do espaço digital
Cada arquivo num computador ocupa um certo número de Kbytes;
Um pendrive com capacidade c Kbytes é selecionado;
Implementar uma estratégia gulosa para gravar o maior número possível de arquivos no
pendrive.
Modelagem:
Arquivos (tamanho em Kbytes) A: {8, 24, 256, 1024, 16, 32, ...}
Encontrar o maior subconjunto de A em unidades em que a soma dos valores não ultrapasse c;
24/04/2019 84