Drexel dragonThe Math ForumDonate to the Math Forum

Ask Dr. Math - Questions and Answers from our Archives
_____________________________________________
Associated Topics || Dr. Math Home || Search Dr. Math
_____________________________________________

Guessing a Mystery Number

Date: 05/23/2007 at 10:54:51
From: Akash
Subject: Searching for a number - one lie allowed

Hello,

Recently I came across this problem in which a guesser tries to 
find a number a hider has thought of.  It is known that the number 
lies amongst the first n natural numbers i.e., if the number is 
k, then k <= n.

The problem is the hider will lie once.  How do I find an algorithm 
which finds the hidden number? 

I was also wondering about the minimum number of steps required to
know the number.  With no lie I understand it is log2(n).
 



Date: 05/24/2007 at 09:53:51
From: Doctor Vogler
Subject: Re: Searching for a number - one lie allowed

Hi Akash,

Thanks for writing to Dr. Math.  I think that this is easier to 
analyze going in the other direction.  Given m questions, how much 
information can you get?

By your formula, I assume that all questions must be yes-or-no 
questions, like "Is the hidden number one of the following 
numbers: ...?"  Well, since there are 2 ways to answer each question, 
there are 2^m ways to answer m questions.  If the hider always tells 
the truth, then you can distinguish between 2^m possibilities by 
asking m questions.  Therefore, if there are n possibilities, then 
you ask m questions for the smallest m with

  2^m >= n.

Of course, then you have to construct the questions, but one easy way 
to do this is to ask whether the i'th bit in the binary representation 
of the hidden number is 1, for 0 <= i < m.

If the hider is allowed (respectively, required) to lie, then the 
problem is that each possibility (possible k, that is) can manifest 
itself in the answers of your questions in m+1 (respectively, m) 
different ways, since the hider might lie about any one question.  You 
don't want any of these to overlap, or you won't always be able to 
distinguish the correct answer.  That means that you can distinguish,
at most, (2^m)/(m+1) (respectively, (2^m)/m) different possibilities 
with m questions, when the hider can (resp. must) lie once.  
Therefore, if there are n possibilities, then you ask m questions for
the smallest m with

  (2^m)/(m+1) >= n.

Then you still have to construct the questions, and that will take
some thought, but this tells you exactly how many questions you need.

If you have any questions about this or need more help, please write 
back and show me what you have been able to do, and I will try to 
offer further suggestions.

- Doctor Vogler, The Math Forum
  http://mathforum.org/dr.math/ 




Date: 05/29/2007 at 06:41:12
From: Akash
Subject: Searching for a number - one lie allowed

Thank you sir.

It was interesting to notice the question you framed, which was:

ask whether the i'th bit in the binary representation of the hidden
number is 1, for 0 <= i < m.

I tried to figure out the type of questions I would ask from there but
got stuck again.  So, I need more help....

Thanks for the same in advance.




Date: 05/29/2007 at 18:37:54
From: Doctor Vogler
Subject: Re: Searching for a number - one lie allowed

Hi Akash,

This is sort of a cop-out way of answering your question, but it seems 
to me to be a valid answer anyway.  After each question, you could 
list off the numbers that are still possible and divide it into 
groups, and ask which group the number belongs to.

More precisely, you will have some (say X) numbers that fit the 
answers to all previous questions, and some (say Y) numbers that fit 
the answers to all previous questions except one.  If you have n 
questions left to ask, then there are X*(n+1) + Y possibilities 
remaining (here, I'm thinking of a possibility as the hidden number 
together with which question was lied about), which you need to divide 
in half; you want half of the possibilities to fit a "Yes" answer, and 
half to fit a "No" answer.  So you carefully make a list of some of 
these numbers and ask if it is one of the numbers in your list.  If 
the answer is no, then that rules out all of the Y numbers that made 
it onto your list and also moves the X numbers that made it onto your 
list into the Y table.  So if you put a of the X numbers and b of the 
Y numbers on the list, then a "No" answer will rule out

  a*(n-1) + b

possibilities, and leave you with

  (X-a)*n + (Y-b+a)

possibilities.  Since you want these as close as possible to equal, 
you want

  a*(n-1) + b = (X-a)*n + (Y-b+a)

or

  a*(n-1) + b = (X*n + Y)/2

(which are equivalent equations).  So I would take

  a = (X*n + Y)/(2(n-1)), rounded down to the nearest integer,

and then let b be the difference

  b = (X*n + Y)/2 - a*(n-1).

Then repeat for the next question.

- Doctor Vogler, The Math Forum
  http://mathforum.org/dr.math/ 




Date: 05/31/2007 at 02:13:36
From: Akash
Subject: Thank you (Searching for a number - one lie allowed)

Thank you very much doctor for your help.  It was nice going through
that "copping-out" way.  Have a great day.

Yours truly,

-Akash
Associated Topics:
High School Number Theory
High School Puzzles

Search the Dr. Math Library:


Find items containing (put spaces between keywords):
 
Click only once for faster results:

[ Choose "whole words" when searching for a word like age.]

all keywords, in any order at least one, that exact phrase
parts of words whole words

Submit your own question to Dr. Math

[Privacy Policy] [Terms of Use]

_____________________________________
Math Forum Home || Math Library || Quick Reference || Math Forum Search
_____________________________________

Ask Dr. MathTM
© 1994-2013 The Math Forum
http://mathforum.org/dr.math/