[math-fun] poisoned wine bottles: perfect-union codes
EXPONENTIAL GROWTH THEOREM: M(n) > 2^(0.3333 + 0.07558*n).
Veit Elser: This is interesting (still have to check the details). Any idea how to find the smallest n for which M(n)>n ? --well, to do that, you would want to find theorems giving upper bounds on M(n). If you had good enough lower & upper bounds you might solve this smallest-n problem, but even if not good enough for that, then its still a good thing. SIDE REMARKS: 1. my lower bound, since it was quite simple, can probably be improved. (I'm sure it is correct with some constants, although I could have screwed up the precise constants.) 2. the name "perfect union codes" sucks because the word "perfect" seems uncalled for. Just "union codes" would be a better name, albeit maybe not best. OK, so now let me try to produce an upper bound. Given 4 subsets A,B,C,D of the n-set, clearly AuB is different from CuD, because otherwise A would be a subset of CuD, which is forbidden by definition of perfect-union-code. Also note AuB differs from AuC since otherwise B would be contained in AuC. The number of set-pairs is m*(m-1)/2 where m=M(n), and they must all have unions which (i) differ and (ii) are subsets of {1,2,3,...,n} and (iii) are nonempty. Hence m*(m-1)/2 <= 2^n - 1. Hence UPPER BOUND THEOREM: M(n) < (-1/2) + 2^((n+1)/2). This also has exponential growth but the point is, it has only sqrt(2) not 2 as the growth factor. You could do a bit better by noting AuB must differ from CuD in at least 2 places... sort of... (several cases to treat) this should improve the bound, but not its growth factor.
Another construction is this. Start with a binary error-correcting code X, each codeword n bits long, with min-distance = d. Now discard all codewords whose weight (number of one-bits) w disobeys wmin <= w <= wmax. The result will be a perfect-union-code, provided that 2*wmax < d + wmin. The cardinality of the perfect-union-code can in this way always be assured by suitable initial bitflipping to be at least as large as cardinality(X) * 2^(-n) * sum(k=a...b)of binomial(n,k). This fact in combination with Stirling formula and known Gilbert-Varshamov existence results for binary codes, will also prove a (different and probably stronger) EXPONENTIAL GROWTH THEOREM.
Here's a better code abstraction of the poisoned bottle problem: "more perfect union" code on n symbols: Codewords are subsets of the n symbols with the property that if A and B are distinct codewords as are C and D, then A u B = C u D implies A = C, B = D or A = D, B = C. As before, let M(n) be the maximum number of codewords in a code on n symbols. I've checked that M(n) = n+1 for n < 6. These are the "Speciner codes", given by the empty set and all the singletons (11 as opposed to just 10 codes in the original problem). But already for n = 6 there is an improvement. The following code shows M(6) >= 8: {{4}, {5}, {1, 3}, {2, 6}, {1, 2, 5}, {1, 4, 6}, {2, 3, 4}, {3, 5, 6}} Any ideas on finding good bounds on M(10)? -Veit
participants (2)
-
Veit Elser -
Warren Smith