Thursday, August 9, 2012

How can you get an average of numbers which are secret?

This is one of the more "blue sky" questions posed in the Gamesman section of IEEE Potentials, Vol. 31, No. 4 for August 2012. I like this little magazine very much and it comes free with membership in the IEEE, at least for students. All EE students should join IEEE as soon as possible.

Seven employees are in a meeting room and the topic of conversation turns to salaries. Each employee would like to know how his/her salary compares to the average but, at the same time, does not want to violate the company policy that prohibits disclosing salaries. What strategy can the employees use to get the information they want?

I did not think at length although it seemed interesting to me. My initial theory was that it could be done by some form of obfuscation with multipliers. Each employee could pick a different random number, say 65 or 213, by which to multiply their salary and then write it down as an unmanageable fractional representation that could not be estimated off the top of the head by anyone present. Then one of them could feed the sum of the fractional quantities inline into his or her TI-89 and without reducing the fractions (since this is the data to be obscured), calculate the average of them and record it. The original fractional values on a piece of paper can be shredded. The security of this comes in the fact that the calculator is the only thing that will consider the un-obscured salary figures, since none of the employees will see the numbers long enough to reduce it in their heads.

The magazine's solution might be more secure than mine: The first employee can add his salary to an arbitrary number, then whisper the sum to the second employee. The second can then add her salary and whisper it to the third employee, and so on. At the end, the seventh employee can whisper the total to the first employee, who can then subtract the arbitrary number he chose initially and divide by seven to obtain an average. 

No comments:

Post a Comment