PROBLEMAS FÁCEIS E DIFÍCEIS - inf.ufpr.br · chegaríamos na resposta!!! 0.00000000000000000033...

26
PROBLEMAS FÁCEIS E DIFÍCEIS Prof. André Vignatti – DINF - UFPR

Transcript of PROBLEMAS FÁCEIS E DIFÍCEIS - inf.ufpr.br · chegaríamos na resposta!!! 0.00000000000000000033...

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 𝑛?

Se soubesse disso, não

testaria as lâmpadas

uma a uma para

descobrir onde está a

bomba...

TEMPO DE EXECUÇÃO

Tentativas no pior caso:

•Busca sequencial: 𝑛

•Busca binária: log2 𝑛

𝑛 log2 𝑛

2 1

4 2

8 3

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!

TEMPO DE EXECUÇÃO

São dados 𝑛 números na memória do computador:

50 39 1 78 45 96 12 32

1 12 32 39 45 50 78 96

Queremos reorganizá-los

ordenadamente:

𝑛 𝒏𝟐 𝑛 log2 𝑛

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

Algoritmo “ingênuo”: 𝑛2

Algoritmo “esperto”: 𝑛 log2 𝑛

Outro exemplo: ordenação de dados

VELOCIDADE DO COMPUTADOR

Medida popular: núm. de instruções por segundo

Atualmente: alguns bilhões de instruções por segundo

𝑛 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

Ordenação com 1 bilhão instr/seg

Agora, tarefas

repetitivas resolvo

programando!

Dá pra resolver

problemas

GRANDES

Mas MUITO

GRANDES, só com

algoritmos espertos

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

SeTempo 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, ...

•“difíceis”: caixeiro viajante, mochila, museu, ...

Têm solução esperta

PROBLEMAS DIFÍCEIS E DISFARCES

Existem soluções espertas para os

problemas “difíceis”?

Talvez para a

mochila SIM,

talvez para o

museu NÃO...

Um chute:

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 é contra-

intuitivo: vocês

vão ter que

acreditar...

PROBLEMAS P, NP

Conjunto NP: problemas

com solução

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

Pode ou não ser “fácil”

NINGUÉM SABE (ainda)

A QUESTÃO “P = NP ?”

I. Basta uma única solução esperta para um único problema difícil!

II. Independente da resposta, você ganha U$1000000

P = NP ?Ou seja:

TODOS os problemas difíceis têm soluções espertas?

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

Oferecem U$1000000 para cada problema resolvido

Esse rapaz recusou 1 milhão!!!!

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?