15 ms·
This reminds me of a challenge at the Free University Berlin. A lecturer gave the following list of numbers to his students. The task was to find two different
by vog 11y ago
This reminds me of a challenge at the Free University Berlin. A lecturer gave the following list of numbers to his students. The task was to find two different subsets that have the same sum:
http://www.inf.fu-berlin.de/lehre/WS07/mafi1/90zahlen.txt http://www.inf.fu-berlin.de/lehre/WS07/mafi1/90zahlen.txt
His point was: It it simple to prove that those subsets must exist, but it is very hard to compute them. To make his point even more clear, he offered some prize money if anyone found an explicit solution.
A friend told me about that challenge, and I tried. With a lot of conceptual work, programming, optimization and some luck I was finally able find such a solution (and received the prize):
https://njh.eu/90 https://njh.eu/90
(Sorry, German language, but the solution is readable, I guess :-))
- Strilanc 11y agoWhy is it easy to prove that this particular set of numbers can be broken into equal subsets?
- unlikelymordant 11y agoGiven the subsets it is easy to verify the subsets come from the set and their sum is the same. Finding them is hard.
- deleted 11y ago[deleted]
- deleted 11y ago[deleted]
- vog 11y agoI'm afraid you missed the point.
- vog 11y agoYou just have to compare the number of subsets with the number of possible sum values. 1) There are 90 numbers, so we have 2^90 subsets. 2) All numbers are < 10^25, so the sum of all 90 numbers is < 90 * 10^25 < 10^27. So each sum of a subset is an integer in the range of 0 to 10^27-1. So we have ≤ 10^27 possible sum values. Since 2^90 > 10^27, we have more subsets than possible sum values. Hence, there are at least two subsets having the same sum. BTW, this is a beautiful application of the Pigeonhole principle: https://en.wikipedia.org/wiki/Pigeonhole_principle https://en.wikipedia.org/wiki/Pigeonhole_principle
- deleted 11y ago[deleted]
- noobie 11y ago> The sum of all 90 numbers is < 2^89 Why? (Obviously you wouldn't compute it so what's the "trick"?)
- crystalmeph 11y agoRegarding item 1, yes there are 2^90 ways to choose one subset, but since you are comparing two separate subsets, those subsets can't overlap (or else you could just choose the same subset twice!), so it seems like there should be "more" to this calculation? Am I missing something here? Edit: wait I think I've got it: Each subset implicitly also chooses it's counter subset, e.g. if you choose the subset consisting of the first 45 numbers, you've also therefore said the other subset consists of the last 45 numbers. Since there are more of these "dual subsets" than possible sums, the pigeonhole principle yadda-yadda.
- vog 11y agoI'm think you misunderstood the question. You are not forced to use all numbers. (And in fact, my explicit solution doesn't use all numbers.) There is no restriction that the union of both subsets must be equal to the full set. Note that this restriction would change the question dramatically. See also: https://news.ycombinator.com/item?id=10023098 https://news.ycombinator.com/item?id=10023098 Also note that it is allowed for both chosen subsets to overlap. In fact, the proof just says that two different (i.e. not entirely equal) subsets with the same sum exist. However, once you have a pair of different overlapping subsets of the same sum, you can simply remove the intersection from both sets. Both sums decrease by the same amount. You then get a pair of two disjoint sets that have the same sum.