Psychic Modeling
Projeto e Análise de Algoritmo
Prof. Diane Castonguay
Charles Gomes
Rogério Arantes Gaioso
O que será feito ?
• War Story
• Apresentação do problema
• Alguns conceitos
• A primeira tentativa
• Solução final
• Moral da história
• Referências
War Story
[1]
O que é isso ?????????
Psychic Modeling
Descrição do problema:
A partir de um conjunto de números fornecido pelo jogador,
com garantia que um subconjunto deste contém alguns dos
números vencedores, deseja-se a relação de combinações
possíveis para se obter premiação.
Exemplo Mega Sena:
 Cartela que possui 60 números onde o jogador aposta
6 números, sendo que com 4 números o bilhete ganha
prêmio.
 Jogador informa um subconjunto de 15 números e
garante que quatro deles serão premiados.
 Sistema deve listar as combinações possíveis.
Psychic Modeling

Instância
•
•
•

[1]
Conjunto C = {c1,...,cn}
Subconjunto S = {s1,...,s15}
Subconjunto S’ = {s’1,...,s’4}, sendo S’ ⊆ S
Instância de Set Cover
Classes P, NP e NP-Completo



Classe P
 Problemas que podem ser resolvidos em tempo
polinomial, isto é, O (nk) onde n é o tamanho da
entrada e k é alguma constante
Classe NP
 NP significa “não deterministicamente polinomial”
 Problemas que são verificáveis em tempo polinomial
Classe NP- C
 Um problema é NP - completo se ele é NP e pode ser
reduzido a um outro problema NP - completo
P = NP
Set Cover
•
Instância:
•
•
•
•
[3]
Conjunto E = {e1,...,en}
Subconjunto S = {C1,...,ct}
Função de custo: S -> W
Pergunta
•
Existe uma cobertura de mínima de
conjunto aonde subconjunto S' ⊆ S
Set Cover
[3]
Componentes da solução




[1]
Gerar subconjunto
Definir quais subconjuntos atendem
Uma estrutura de dados necessária
Estratégia de busca
[4]
[6]
[5]
Variáveis
[2]
M = conjunto de números totais existentes
R = quantidade de números por cartela
J = quantidade mínima para acertar e ganhar um prêmio
N = quantidade de números fornecidos pelo adivinho
P = quantidade de números garantidos entre os vencedores
W = quantidade de acertos desejados
J <= P <= R <= N
NC
P
= (N/P!)/(N-P)! combinações possíveis com P números
Primeira tentativa
[1]
• Força bruta
• Resultado final: 28 combinações
Bastavam apenas 5 bilhetes !!!!!!!!
Primeira tentativa (cont.)
[2]
R = 4, J = 2, W = 1, P = 3, N = 5
{1, 2, 4, X }
{1, 2, 3, X }
{1, 2, 5, X }
{1, 3, 5, X }
{1, 3, 4, X }
{1, 4, 5, X }
{2, 3, 5, X }
{2, 3, 4, X }
{2, 4, 5, X }
{3, 4, 5, X }
Primeira tentativa (cont.)
[2]
R = 4, J = 2, W = 1, P = 3, N = 5
{1, 3, 5, X }
{2, 4, 5, X }
Sobreposições
[2]
É possível que entre os subconjuntos possíveis de P números haja
alguns com pelo menos J números diferentes. Quando isso ocorre,
estes subconjuntos se sobrepõem com respeito aos J números, e
apenas um deles deveria ser comprado. Se a diferença entre dois
subconjuntos é maior ou igual a P-J, então eles não se sobrepõem.
NC
P
= (N/P!)/(N-P)! combinações possíveis com P números
2 número total de possível de conjuntos de bilhetes, onde  = NCP
NC
J
subconjuntos possíveis de ocorrer
Complexidade total:
2   N CJ
Segunda tentativa
[2]
• Heurísticas
• Geração Randômica
• Resultados semelhantes ao calculado, com tempo
de execução menor
Comparativo
[2]
R
J
N
P
W
Limite
Inferior
Nº
Bilhetes
Tempo
(seg)
5
5
5
5
6
6
6
6
6
10
4
4
4
5
4
5
6
4
4
6
15
15
15
15
15
15
15
18
18
18
5
5
5
5
5
5
6
5
5
7
1
2
3
1
1
1
1
1
1
1
58
117
176
3003
58
3003
5005
129
129
408
137
218
294
3127
138
3109
5129
330
330
4080
95
147
163
333
145
346
503
432
449
919
Moral da história
[1]
“Tenha certeza que você modelou o problema
corretamente antes de tentar resolvê-lo”.
O sucesso em corrigir o erro foi possível devido à correta
formulação inicial e no uso de rotinas e abstrações bem definidas:
• seleção/eliminação de subconjuntos do resultado final
• a estrutura de dados
• a busca combinatória
[3]
[4]
[5]
Referências
[1] The Algorithm Design Manual, Steven S. Skiena. 1997.
http://www2.toki.or.id/book/AlgDesignManual/
[2] Randomized algorithms for identifying minimal lottery ticket sets
F. Younas, S. Skiena. Journal of Undergraduate Research, 1996.
http://www.cs.sunysb.edu/~skiena/papers/lotto.doc
[3] Set Cover.
http://www2.toki.or.id/book/AlgDesignManual/BOOK/BOOK5/
NODE201.HTM#setcover
[4] Geração de subconjuntos.
http://www2.toki.or.id/book/AlgDesignManual/BOOK/BOOK4/
NODE152.HTM#generatingsubsets
[5] Estrutura de dados.
http://www2.toki.or.id/book/AlgDesignManual/BOOK/BOOK3/
NODE133.HTM#setdatastructures
[6] Busca combinatória.
http://www2.toki.or.id/book/AlgDesignManual/BOOK/BOOK2/
NODE92.HTM#simulatedannealing
Download

Psychic Modeling, p.21-24