来道关于猜数字的难题
相信猜数字的游戏不少人都见过了。Alice先默想一个1~N之间的数字,然后Bob来猜。每次Bob都只能问一个yes or no的问题,而Alice则要如实相告。问Bob怎样猜可以用最少的轮数确保正确的猜出这个数。
比如下面是一个典型的游戏,N = 4:
Bob: 这个数是奇数么?
Alice: 不是。
Bob: 这个数是2么?
Alice: 不是。
Bob: 我知道了,这个数是4!
那么Bob就猜对了,总共猜了3次。可以证明,即使Bob足够聪明,最坏情况下也要猜3次。
类似的,如果N = 100的话,最坏情况下8次就可以确保猜出。
终于有一天Alice和Bob厌倦了这个无聊的游戏。于是他们更换了规则,允许Alice在回答问题的时候撒一次谎(也可以不撒谎,但不允许撒一次以上的谎)。假设Bob足够聪明,遵循了最优策略来猜,那么他要多少次就能确保猜出Alice所想的数呢?假设N = 100,答案是多少呢?