Find the smallest group to cover all the combinational possibilities.

I am doing some combinatorics exercises and trying to figure out how to solve the question below:

Given a group of 25 bits, set (select) 15 (non-permutable and NON order):

n!/(k!(n-k)!) = 3.268.760

Now for each of these possibilities, we will create a matrix in which I intersect each unique 25-bit element against all other 25-bit members, in the ratio between them there should be at least 11 common set bits (only one, not zeros).

Let me illustrate how it is represented as binary data, so the first member will be:

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.

Now the intersection of these values ​​in the matrix for 1 x 1 I should have 15 bits. Since the result is> = 11, this is a “useful” result.

For 1 x 2, we have 14 bits, as well as a valid result.

, , 1 x 3.268.760 5- , < 11 "".

( ), , , 11 .

, N , , , 11 , 3.268.760 x 3.268.760 .

, , 81 25- . , ( 12).

, 12 3.268.760, , (3,156x10e69 ).

, , , .

, .

PS: . "" :

(Not(a xor b)) and a

.

: (@btilly) "" Fractal like relations matrix

( 15 ) ( 11 ) 10 .

4096.

+5
2

tl; dr: , . btilly , . , , . , . , , .

EDIT: , . k 1 [25, 15] * k/[ k ]. 12 ( 10 , ) k = 1. : m , k of m. , k , . [25 15] * k/[ k ], , , . , m-set, .

, (e/(e-1)) - (≈ 1.58): , , ( : , ). e/(e-1) k , , , .

: , [25 15], k !

+1

, , .

" " . ... ?

, , , . , 3 , ( , ), , , .

, . , , .

2- P , P(n, m) - , 11 , m n , 1 , 1 . 225 .

:

  • P(15, m) 0, m < 11, 1 .
  • n < 15:

    P(n, m) = P(n+1, m+1) * (15-m) / (25-n) + P(n+1, m) * (10-n+m) / (25-n)
    

, " " . :

  • 15 1, 0.
  • 10 0, 1.
  • 8 1, 7 1, 0.
  • 1-4, 9-12, 16-23 1, 0.

, (25 15), , .

.

While there are unmatched members:
    Find the bit that appears in the most unmatched members (break ties randomly)
    Make that the first set bit of our candidate member for the group.
    While the candidate member has less than 15 set bits:
        Let p_best = 0, bit_best = 0;
        For each unset bit:
            Let p = 0
            For each unmatched member:
                p += P(n, m) where m = number of bits in common between
                             candidate member+this bit and the unmatched member
                             and n = bits in candidate member + 1
            If p_best < p:
                p_best = p
                bit_best = this unset bit
        Set bit_best as the next bit in our candidate member.
    Add the candidate member to our collection
    Remove all unmatched members that match this from unmatched members
The list of candidate members is our answer

, , . , , 77 ( 4), 271 (25, , 24, .. 11, 15-, , ). 20867 . 1 , 20 .

. .

0