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?