que estoy haciendo algunos ejercicios en el algoritmo de combinatoria y tratando de encontrar la manera de resolver la cuestión a continuación:Encuentra el grupo conjunto más pequeño para cubrir todas las posibilidades combinatorias
Dado un grupo de 25 bits, ajuste (elegir) 15 (asuntos no permutables y orden no):
n!/(k!(n-k)!) = 3.268.760
Ahora, para cada una de estas posibilidades construir una matriz donde cruzo cada miembro 25bit única contra todo otro miembro 25bit donde en la relación entre allí debe ser al al menos 11 bits configurados comunes (solo unos, no ceros).
Vamos a tratar de ilustrar representándolo como datos binarios, por lo que el primer miembro sería:
0000000000111111111111111 (10 zeros and 15 ones) or (15 bits set on 25 bits)
0000000001011111111111111 second member
0000000001101111111111111 third member
0000000001110111111111111 and so on....
...
1111111111111110000000000 up to here. The 3.268.760 member.
Ahora cruzar estos valores a través de una matriz para el 1 x 1 Debo tener 15 bits comunes. Como el resultado es> = 11, es un resultado "útil".
Para el 1 x 2 tenemos 14 bits comunes por lo que también es un resultado válido.
Hacer eso para todos los miembros, finalmente, cruzar 1 x 3.268.760 debería dar como resultado 5 bits comunes, por lo que dado que es < 11 no es "útil".
Lo que necesito es averiguar (por matemática o algoritmo) cuál es el número mínimo de miembros necesarios para cubrir todas las posibilidades que tienen 11 bits comunes.
En otras palabras, un grupo de N miembros que si se prueban contra todos los demás puede tener al menos 11 bits comunes en todo el universo de 3.268.760 x 3.268.760.
Usando un algoritmo de fuerza bruta descubrí que con 81 miembro de 25 bits es posible lograr esto. Pero supongo que este número debería ser más pequeño (algo cerca de 12).
Estaba tratando de usar un algoritmo de fuerza bruta para hacer todas las variaciones posibles de 12 miembros sobre el 3.268.760 pero el número de posibilidades es tan grande que tomaría más de cien años calcularlo (3,156x10e69 combinaciones)
He buscado en Google sobre combinatoria, pero hay tantos campos que no sé en los que deberían encajar estos problemas.
Así que cualquier dirección sobre qué campo de combinatoria, o cualquier algoritmo para estos problemas es muy apreciada.
PD: Solo como referencia. La "similitud" de dos miembros se calcula utilizando:
(Not(a xor b)) and a
Después de que hay un pequeño bucle recursivo para contar los bits dado el número de bits comunes.
EDIT: Como lo prometido es deuda (@btilly) en el comentario a continuación aquí está la imagen 'fractal' de las relaciones oscila o link to image
La escala de color de rojo (partido de 15bits) a verde (11 bits partido) a negro para valores menores de 10 bits.
Esta imagen es solo una muestra de los primeros 4096 grupos.
Si el orden es importante, ¿no debería haber combinaciones 'n!/(N-k)!'? – SirGuy
Creo que esto sería más adecuado para [math.SE] (http://math.stackexchange.com). – jwodder
GuyGreer consulte [aquí] (http://en.wikipedia.org/wiki/Combination). EDITAR: vale la ortografía (el orden no importa). jwodder estoy de acuerdo, pero dado que debería haber una solución no solo usando matemáticas sino también un algoritmo, y dado que soy más un programador que un matemático, prefiero escuchar gente aquí;;) –