Jump to content

Obtendo o mínimo teórico de sistemas V,K,T – Fórmula de Schonheim


Recommended Posts

A Fórmula de Schonheim é representada da seguinte maneira: C(v,k,t) >= (v/k) * C(v-1,k-1,t-1)

 

Sendo que:
C = número de blocos
v = quantidade de números no sistema
k = quantidade de números por bloco
t = garantia pretendida

 

Vamos obter o mínimo para C(30, 5, 3):
v = 30
k = 5
t = 3

 

Aplicando na fórmula:

 

C(30, 5, 3) >= (30/5) * C(29, 4, 2)

 

E agora? Como eu vou obter C(29, 4, 2)? Aplica de novo a fórmula!

 

C(29, 4, 2) >= (29/4) * C(28, 3, 1)

 

De novo? E agora, como obter C(28, 3, 1)? Aplica a fórmula!

 

C(28, 3, 1) >= (28/3) * C(27, 2, 0)

 

Já está ficando chato isso, neh? Calma! Agora as coisas melhoram. Sempre quando t = 0 o C será 1. Ou seja, C(v, k, 0) = 1. Entendeu? Agora nós temos C(27, 2, 0)!

 

C(27, 2, 0) >= 1

 

É só substituir e calcular C(28, 3, 1):

 

C(28, 3, 1) >= (28/3) * C(27, 2, 0)
C(28, 3, 1) >= (28/3) * 1
C(28, 3, 1) >= 28/3
C(28, 3, 1) >= 9,333...

 

Agora vem um detalhe. Sempre que a divisão não for inteira, arredonde para cima!

 

Então:

 

C(28, 3, 1) >= 10

 

Retornando no C(29, 4, 2), já que temos C(28, 3, 1):

 

C(29, 4, 2) >= (29/4) * C(28, 3, 1)
C(29, 4, 2) >= (29/4) * 10
C(29, 4, 2) >= 290/4
C(29, 4, 2) >= 72,5
C(29, 4, 2) >= 73

 

Temos também C(29, 4, 2), já podemos obter o tão esperado C(30, 5, 3):

 

C(30, 5, 3) >= (30/5) * C(29, 4, 2)
C(30, 5, 3) >= (30/5) * 73
C(30, 5, 3) >= 2190/5
C(30, 5, 3) >= 438

 

Nesse último a divisão deu inteira, então não precisou arredondar para cima. Portanto, a mínimo teórico para C(30, 5, 3) é 438 ou mais blocos!

 

 

Vamos fazer mais um exemplo para fixar bem. Vamos obter o mínimo teórico de C(15,6,4).

 

C(15, 6, 4) >= (15/6) * C(14, 5, 3)

 

Vamos deixar de lado C(15, 6, 4) e vamos tentar obter C(14, 5, 3).

 

C(14, 5, 3) >= (14/5) * C(13, 4, 2)

 

Vamos deixar de lado C(14, 5, 3) e vamos tentar obter C(13, 4, 2).

 

C(13, 4, 2) >= (13/4) * C(12, 3, 1)

 

Vamos deixar de lado C(13, 4, 2) e vamos tentar obter C(12, 3, 1).

 

C(12, 3, 1) >= (12/3) * C(11, 2, 0)

 

Como sabemos que todo C(v, k, 0) é igual a 1, então é só substituir C(11, 2, 0) por 1.

 

C(12, 3, 1) >= (12/3) * 1
C(12, 3, 1) >= 12/3
C(12, 3, 1) >= 4

 

Voltando em C(13, 4, 2):

 

C(13, 4, 2) >= (13/4) * C(12, 3, 1)
C(13, 4, 2) >= (13/4) * 4
C(13, 4, 2) >= 52/4
C(13, 4, 2) >= 13

 

Voltando em C(14, 5, 3):

 

C(14, 5, 3) >= (14/5) * C(13, 4, 2)
C(14, 5, 3) >= (14/5) * 13
C(14, 5, 3) >= 182/5
C(14, 5, 3) >= 36,4
C(14, 5, 3) >= 37

 

Voltando em C(15, 6, 4):

 

C(15, 6, 4) >= (15/6) * C(14, 5, 3)
C(15, 6, 4) >= (15/6) * 37
C(15, 6, 4) >= 555/6
C(15, 6, 4) >= 92,5
C(15, 6, 4) >= 93 

 

Pronto! O mínimo teórico de C(15, 6, 4) é 93 ou mais blocos.

 

 

Espero ter explicado bem como se aplica essa fórmula. Caso persista dúvidas, sinta-se à vontade para perguntar.

  • Like 8
  • Thanks 1
Link to comment
Share on other sites

2 horas atrás, Julio Cezar disse:

 

@rockcavera 

 

C(15, 6, 4) >= 93

 

Muito boa para 20 com 5 fixas

 

Posso Agrupar 100 em 4 x 25  e

Dispenso 5 e FIXO 5

E PIMBA com 93

 

Me diga si tentou e no que deu?

 

Nunca tentei, Julio. Quase não ando jogando. Quando eu jogo (acumulado ou concursos especiais), não tenho feito assim.

Link to comment
Share on other sites

  • 5 weeks later...
6 horas atrás, MOC disse:

Implementei a fórmula de Schonheim em meu site de forma a realizar o cálculo recursivamente. Utilizei o exemplo postado pelo @rockcavera

 

 http://megacombinacao.online/Schonheim.php

 

image.png.25db8418bd5fc60a196b2072606a482c.png

A título de curiosidade, é possível fazer o cálculo sem usar recursividade, que em muitas linguagens é limitada ou proibida.

 

Aqui está o código meu em PHP:

function schonheim($v, $k, $t) {
	$i = $t - 1;
	$r = '1';

	while ($i >= 0) {
		$r = bcmul($r, $v - $i);

		if ('0' == bcmod($r, $k - $i)) $r = bcdiv($r, $k - $i);
		else $r = bcadd(bcdiv($r, $k - $i), '1');

		$i--;
	}
	return $r;
}

Código simples e limpo. $r é o resultado final e começa como 1, pois sabemos que 1 é o mínimo teórico de todos os sistemas que T = 0. O cálculo é todo efetuado dentro de um loop, que começa de T = 0 até T = x, onde x é o valor do T do sistema V,K,T desejado.

 

Observação: utilizei BCMath do PHP para poder usar números maiores que os limites das operações matemáticas convencionais do PHP.

  • Like 2
Link to comment
Share on other sites

  • 2 months later...
  • 2 weeks later...
Em 13/04/2020 em 14:42, khundalini disse:

E como fica esse cálculo quando entra a condição (M)?

 

Em 15/01/2020 em 22:40, bitwizardry disse:

Apenas complementando com mais uma informação, para aqueles que ainda não sabem como calcular o mínimo teórico usando a fórmula tradicional, aqui está:

 

 

 

 

CodeCogsEqn.gif

@khundalini o amigo acima da sua postagem mencionou a fórmula. Você pode pegar a mesma fórmula escrita de outra forma em www.lotdrw.tk, na parte de ferramentas. Claro que para usar a fórmula é necessário conhecimentos de matemática.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...