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 n inteiro Saída: SIM ou NÃO, dependendo se n é 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 n cartas?
TEMPO DE EXECUÇÃO No pior caso, quantas tentativas até encontrar uma palavra num dicionário (ordenado) com n páginas? n 2 n 2 2 n 2 3 n 2 i Reformulando: Quantas vezes deve-se elevar 2 para que 2 i seja igual a n? 1
TEMPO DE EXECUÇÃO Tentativas no pior caso: Busca sequencial: n Busca binária: log 2 n 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... n log 2 n 2 1 4 2 8 3 16 4 32 5...... 1024 10...... 1 milhão 20...... 1 bilhão 30
TEMPO DE EXECUÇÃO Outro exemplo: ordenação de dados São dados n números na memória do computador: 50 39 1 78 45 96 12 32 Queremos reorganizá-los ordenadamente: 1 12 32 39 45 50 78 96 n n 2 n log 2 n 10 100 320 100 10000 650 1000 1 milhão 10000 1 milhão 1 trilhão 20 milhões 1 bilhão 10 18 30 bilhões Algoritmo ingênuo : n 2 Algoritmo esperto : n log 2 n
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 n 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: 48! 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 0.00000000000000000033 segundos Após Dez Trilhões de Trilhões vezes a Idade da Universo chegaríamos na resposta!!!
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. conjectura de Birch e Swinnerton-Dyer 2. conjectura de Hodge 3. equações de Navier-Stokes 4. P = NP? 5. conjectura de Poincaré 6. hipótese de Riemann 7. 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?