Algoritmo

Propaganda
PROBLEMAS FÁCEIS
E DIFÍCEIS
Prof. André Vignatti – DINF - UFPR
ENCONTRANDO CARTAS E PALAVRAS...
Experimento em sala: encontrar carta no
baralho, encontrar palavra no dicionário
Qual das duas buscas é mais eficiente?
COMANDOS BÁSICOS DE UM COMPUTADOR
Atribuições
Desvios Condicionais
Repetições
PROBLEMAS COMPUTACIONAIS
Problema Computacional:
 Entrada
 Saída
Exemplo (Problema “PRIMO”):
 Entrada: um número 𝒏 inteiro
 Saída: SIM ou NÃO, dependendo se 𝒏 é primo ou não
ALGORITMOS
Algoritmo: é a solução para problemas
computacionais, usando comandos básicos do
computador
Existem várias soluções (algoritmos) para
um mesmo problema!
TEMPO DE EXECUÇÃO
Voltando ao exemplo inicial...
No pior caso, quantas tentativas até encontrar
uma carta num deck com 𝒏 cartas?
TEMPO DE EXECUÇÃO
No pior caso, quantas tentativas até encontrar uma
palavra num dicionário (ordenado) com n páginas?
𝑛
2
𝑛
22
𝑛
23
⋮
𝑛
2𝑖
⋮
1
Reformulando: Quantas vezes deve-se elevar 2 para que 2𝑖
seja igual a 𝑛?
TEMPO DE EXECUÇÃO
Tentativas no pior caso:
𝑛
log 2 𝑛
2
1
•Busca sequencial: 𝑛
4
2
8
3
• Busca binária: log 2 𝑛
16
4
32
5
...
...
1024
10
...
...
1 milhão
≈ 20
...
...
1 bilhão
≈ 30
Moral da História: algoritmos
inteligentes são muito mais rápidos!
Se soubesse disso, não
testaria as lâmpadas
uma a uma para
descobrir onde está a
bomba...
TEMPO DE EXECUÇÃO
Outro exemplo: ordenação de dados
São dados 𝑛 números na memória do
computador:
50
39
1
78
45
96
12
12
32
39
45
50
78
𝒏𝟐
𝑛 log 2 𝑛
10
100
320
100
10000
650
1000
1 milhão
10000
1 milhão
1 trilhão
20 milhões
1 bilhão
1018
30 bilhões
32
Queremos reorganizá-los
ordenadamente:
1
𝑛
96
Algoritmo “ingênuo”: 𝑛2
Algoritmo “esperto”: 𝑛 log 2 𝑛
VELOCIDADE DO COMPUTADOR
Medida popular: núm. de instruções por segundo
Atualmente: alguns bilhões de instruções por segundo
Agora, tarefas
repetitivas resolvo
programando!
Dá pra resolver
problemas
GRANDES
Mas MUITO
GRANDES, só com
algoritmos espertos
Ordenação com 1 bilhão instr/seg
𝑛
ingênuo
esperto
10
-
-
100
0,00001 s
-
1000
0,001 s
0,00001s
1 milhão
16,6 min
0,2 s
1 bilhão
31,7 anos
30 s
CAIXEIRO VIAJANTE
Maria vendia em todos os estados dos EUA
Ela esboçou a seguinte rota: (total=11126 Km)
Depto de Viagens: “Maria, pode fazer melhor?”
CAIXEIRO VIAJANTE
Maria programou para testar todas as soluções e pegar a melhor
 1 semana depois o programa não havia parado...
 Após uma conta rápida: 𝟒𝟖! possibilidades
48! é igual a
12.413.915.592.536.072.670.862.289.047.373.375.038.521.486.354.677.760.000.000.000
Se
Tempo do Teste = Tempo para a luz atravessar um átomo
Então
Após Dez Trilhões de Trilhões vezes a Idade da Universo
chegaríamos na resposta!!!
0.00000000000000000033
segundos
CAIXEIRO VIAJANTE
PROBLEMA DA MOCHILA
Um ladrão vai roubar uma casa
 Os objetos têm peso e valor
 Sua mochila aguenta até um certo peso
Quais itens ele deve levar?
PROBLEMA DA MOCHILA
Número de Itens
Número de Possibilidades
5
32
10
1024
20
1048576
50
1125899906842624
100
1267650600228229401496703205376
GUARDAS NO MUSEU
Contratar guardas para vigiar TODOS os
corredores de um museu
 Ficam na “junção” dos corredores
Objetivo: quanto menos guardas, melhor!
Número
de Itens
Número de Possibilidades
5
32
10
1024
20
1048576
50
1125899906842624
100
1267650600228229401496703205376
MORAL DA HISTÓRIA
Alguns problemas são:
•“fáceis”: busca, ordenação, ...
Têm solução esperta
•“difíceis”: caixeiro viajante, mochila, museu, ...
PROBLEMAS DIFÍCEIS E DISFARCES
Existem soluções espertas para os
problemas “difíceis”?
Um chute:
Talvez para a
mochila SIM,
talvez para o
museu NÃO...
PROBLEMAS DIFÍCEIS E DISFARCES
Existem soluções espertas para os
problemas “difíceis”?
Caixeiro Viajante, Mochila e Museu são,
no fundo, O MESMO PROBLEMA!!!
Só têm “disfarces diferentes”
Solução esperta para um =
Solução esperta para TODOS
Todos problemas
difíceis DO MUNDO!!!
Isso é contraintuitivo: vocês
vão ter que
acreditar...
PROBLEMAS P, NP
Conjunto NP: problemas
com solução
Pode ou não ser “fácil”
NINGUÉM SABE (ainda)
Intuitivamente: qualquer problema
Busca, Ordenação, Caixeiro Viajante, Problema
da Mochila e do Museu TODOS são problemas NP
Conjunto P: problemas com solução
“esperta”
Busca e Ordenação são problemas P
Caixeiro Viajante, Mochila e Museu NINGUÉM SABE!!
problemas “fáceis”,
com soluções espertas
A QUESTÃO “P = NP ?”
P = NP ?
Ou seja:
TODOS os problemas difíceis têm soluções espertas?
I.
Basta uma única solução esperta para um único
problema difícil!
II. Independente da resposta, você ganha U$1000000
A QUESTÃO “P = NP ?”
As maiores questões não resolvidas da matemática:
1.
2.
3.
4.
5.
6.
7.
conjectura de Birch e Swinnerton-Dyer
conjectura de Hodge
equações de Navier-Stokes
P = NP ?
conjectura de Poincaré
hipótese de Riemann
Teoria de Yang-Mills
Esse rapaz recusou 1 milhão!!!!
Oferecem U$1000000 para cada problema resolvido
Mas, se P = NP, um computador resolveria
facilmente os outros: ganha U$6000000!!!
SE P = NP...
E se a resposta de “P = NP?” for SIM?
Vamos esboçar um futuro deste mundo bonito:
2016 – Milena Pavel, cientista da computação, avisa um pequeno grupo
de teóricos da computação sobre um artigo onde provou que “P=NP”
2017 – O ano segue com vários grupos ao redor do mundo verificando
se não há erros no artigo de Milena
2018 – Milena recebe a medalha Fields. Apesar de ser uma grande
descoberta teórica, na prática o algoritmo não executa tão bem...
2019 – Milena receba o prêmio de U$1 milhão, aceita e doa para
instituições ligadas à educação no Brasil. Começam esforços para
melhorar a execução prática do algoritmo
2020 – Um russo tem uma boa ideia que melhora a execução, mas ainda
assim continua ruim
SE P = NP...
2022 – Estudantes de graduação do MIT fazem melhorias no código,
e colocam para executar no computador mais rápido dos EUA. Pela
1ª vez, conseguem executar na prática
2023 – A Boeing usa a solução para fazer a “asa ótima” para seu
novo 797. O avião faz um vôo direto de Londres até Sidney
2025 – Um mestrando japonês usa o algoritmo para otimizar o
código do próprio algoritmo. Melhora a execução em 5%
2026 – Um doutorando finlandês expande a ideia: repetidamente,
usa o código otimizado para gerar um mais otimizado, com melhorias
sucessivas. Agora, o algoritmo é rebatizado de “algoritmo Helsinki”
2029 – Análise de DNA e sangue identificam exatamente um câncer
e testa as proteínas que eliminam o câncer. A abordagem agora é
individual, ao invés de generalizada. Graças ao “algoritmo de
Helsinki”
SE P = NP...
2030 – o algoritmo de Helsinki faz previsão do tempo 100% correta,
incluindo tempestades, tornados e furacões. Casamentos a céu aberto
são mais caros em dias de tempo bom, e têm bons descontos em dias
chuvosos.
2031 – Transporte de todas as formas são agendadas de forma
otimizada para mover pessoas e mercadorias mais rápido e mais
barato. Fabricantes melhoram sua produção para aumentar a
velocidade e criar menos resíduos.
ETC....
Difícil crer que um algoritmo faria tudo isso?
SIM, é difícil:
Faz 40 anos da pergunta P=NP?
P=NP: problema difícil com solução esperta (até hoje,
nenhum sucesso)
 Por isso, muitos acham que P ≠ NP
Mas então:
COMO SERÁ O FUTURO
MAIS PROVÁVEL?
Download