Variante 1
Tratamos el caso general en el que $x \in \{1..m\}$ para cualquier número entero positivo $m$ , en lugar de sólo $x \in \{1..2^n\}$ . Sea $k$ sea el número mínimo de consultas necesarias. Si $m = 1$ entonces $k = 0$ por lo que a partir de ahora supondremos que $m \ge 2$ en cuyo caso es fácil ver que $k \ge 3$ . $\def\floor#1{\left\lfloor #1\right\rfloor }$ $\def\ceil#1{\left\lceil #1\right\rceil }$
Límite inferior
Considere la siguiente estrategia del director del juego:
Para cada $i \in \{1..k\}$ mantener $S_i$ como la colección de todos los posibles $x$ que satisface las respuestas a las consultas hasta el momento en que el $i$ -se supone que se responde falsamente, y se mantiene $S_0$ como la colección de todos los posibles $x$ que satisface las respuestas a todas las consultas hasta el momento. A continuación, en cada consulta, elige la respuesta que maximiza el total de los tamaños de las $S_i$ , a saber $\sum_{i=0}^k \#(S_i)$ .
Al principio, $\sum_{i=0}^k \#(S_i) = (k+1)m$ . En cada consulta, para cada $i \in \{0..k\}$ dejar $T_i$ y $U_i$ sea la resultante $S_i$ al responder "sí" y "no" respectivamente. A continuación, $S_i$ es la unión disjunta de $T_i,U_i$ porque cada posibilidad queda bajo exactamente una de las dos respuestas. Así, $\sum_{i=0}^k \#(S_i)$ $= \sum_{i=0}^k \#(T_i) + \sum_{i=0}^k \#(U_i)$ y, por tanto, la resultante $\sum_{i=0}^k \#(S_i)$ será al menos la mitad del valor anterior.
Al final, el jugador debe saber $x$ y, por lo tanto, saber también qué pregunta se ha contestado falsamente, si es que se ha contestado. Por lo tanto, sólo una de $S_{0..k}$ es no vacía, y por lo tanto $\sum_{i=0}^k \#(S_i) = 1$ .
Por lo tanto, $2^k \ge (k+1)m$ . De esto obtenemos $k \ge \log_2(4m) = \log_2(m)+2$ y por lo tanto:
$k \ge \log_2( \ceil{\log_2(m)+3} \cdot m ) = \log_2(m) + \log_2(\ceil{\log_2(m)+3})$ .
Obsérvese que el razonamiento de Martin no es válido porque afirma que el jugador debe distinguir $(k+1)m$ posibilidades, lo que nunca es cierto en ningún momento del juego; desde el punto de vista del jugador el número de escenarios posibles es siempre como máximo $m$ . Sin embargo, lo anterior muestra que la idea de Martin de cómo el jugador puede encontrar $x$ eficientemente se puede convertir en una estrategia para que el game-master pueda retrasar al jugador de encontrar $x$ .
También hay que tener en cuenta que esta estrategia para el director del juego puede no ser óptima. Es posible que la elección de la respuesta que deja un $\sum_{i=0}^k \#(S_i)$ podría ser mejor en algunos casos raros porque los "cortes" posteriores podrían ser lo suficientemente desiguales como para que sea peor que elegir la respuesta contraria.
Estrategia óptima
Obsérvese que en la estrategia óptima, dada cualquier $2$ consultas precedentes " $<a$ " y " $<b$ ", si las respuestas son ambas "sí", entonces $x < \max(a,b)$ porque sólo puede haber como máximo una respuesta falsa, y del mismo modo si las respuestas son ambas "no" entonces $x \ge \min(a,b)$ . Como es inútil hacer una consulta que "corte" fuera del intervalo posible para $x$ la estrategia óptima siempre mantendría tres intervalos adyacentes de longitud $p,q,r$ en ese orden tal que $x$ está en uno de ellos y se encuentra en el intervalo medio si las consultas que lo delimitan fueron respondidas con veracidad. Sea $f(p,q,r)$ sea el número mínimo de consultas necesarias para determinar $x$ .
Entonces obtenemos inmediatamente el siguiente programa recursivo (en Javascript con memoización):
var v=[];
function f(p,q,r)
{
if( p+q+r<=1 ) return 0;
if( q==0 ) return Math.ceil(Math.log(p+r)/Math.log(2));
if( !v[[p,q,r]] )
{
var m=2*(p+q+r);
if( p>0 ) m=Math.min(m,Math.max(f(p,0,q),f(0,q,r)));
if( r>0 ) m=Math.min(m,Math.max(f(p,q,0),f(q,0,r)));
for(var a=1;a<q;a++) m=Math.min(m,Math.max(f(p,a,q-a),f(a,q-a,r)));
v[[p,q,r]]=1+m;
}
return v[[p,q,r]];
}
Brevemente, los casos base son obvios, es decir, cuando sólo hay un valor posible para $x$ o el intervalo central está vacío, lo que significa que la mentira se ha agotado y podemos realizar una búsqueda binaria ordinaria en el intervalo restante. Los casos de transición se deben a que es inútil hacer una consulta que "corte" fuera del intervalo medio (¡esto requiere algo de reflexión!), y también es inútil hacer la misma consulta la tercera vez si las dos primeras se responden de forma consistente.
Por supuesto, $k = f(0,m,0)$ y se necesita $O(M^4)$ para calcular todos los $k$ para $m \in \{1..M\}$ Así que lo ejecuté para $M = 100$ :
Si $m = 2$ entonces $k = 3$ .
Si $m \in \{3..4\}$ entonces $k = 5$ .
Si $m \in \{5..7\}$ entonces $k = 6$ .
Si $m \in \{8..12\}$ entonces $k = 7$ .
Si $m \in \{13..22\}$ entonces $k = 8$ .
Si $m \in \{23..40\}$ entonces $k = 9$ .
Si $m \in \{41..70\}$ entonces $k = 10$ .
Si $m \in \{71..100\}$ entonces $k = 11$ .
Por todo esto, $k$ es como máximo $1$ más que el límite inferior, por lo que conjetura :
? $k \le \ceil{ \log_2(m) + \log_2(\ceil{\log_2(m)+3}) } + 1$ .
Pero, ¿cómo demostrarlo? Lo he intentado pero no he encontrado la manera. ¿Alguien puede probarlo o refutarlo?
Una estrategia más sencilla que podría ser óptima
El jugador puede (dado $k$ ) siguen la siguiente estrategia:
Mantener el mismo $S_{0..k}$ como se ha definido anteriormente. En cada paso, elija $y$ y hacer la pregunta " $x < y$ " de manera que el resultado $\sum_{i=0}^k \#(S_i)$ es lo más cercano posible a la mitad del valor anterior.
No está claro si ésta es la estrategia óptima, aunque es probable que lo sea. Martin afirma que es la mejor, pero esto es un error clásico de asumir que la solución codiciosa es globalmente óptima. ¿Cómo podemos saber si un "corte" un poco menos uniforme en un paso no garantiza "cortes" más fáciles más adelante? Pero si sabemos que la estrategia del director del juego anterior es óptima, entonces la optimalidad de esta estrategia se deduce porque las posibilidades resultantes son monótonas en la ubicación del "corte si la respuesta a la consulta es la misma.
Dejemos que $c_t$ sea $\sum_{i=0}^k \#(S_i)$ después del paso $t$ , donde $c_0$ es el valor inicial al comienzo del juego.
En el paso $t \in \{1..k\}$ , eligiendo $y = 0$ hará $\sum_{i=0}^k \#(T_i) = 0$ , mientras que la elección de $y = m$ hará $\sum_{i=0}^k \#(T_i) = \sum_{i=0}^k \#(S_i)$ . También aumenta $y$ por $1$ hará $\sum_{i=0}^k \#(T_i)$ aumentar en algún número en el rango $[0,k-t+2]$ porque $S_i,S_j$ son disjuntos para cualquier $i,j \in \{0..t-1\}$ . Por lo tanto, siempre podemos elegir $y$ tal que $\sum_{i=0}^k \#(T_i)$ está dentro de $\frac{k-t+2}{2}$ de $\frac12 c_{t-1}$ , lo que implicaría que $c_t \le \floor{ \frac12 c_{t-1} + \frac{k-t+2}{2} }$ .
Esta es la recurrencia más ajustada que puedo conseguir, ¡pero aún no es suficiente! Si no me he equivocado, al resolver la recurrencia se obtiene el límite superior de $c_k$ siendo siempre mayor que $3$ lo que significa que no podemos garantizar analíticamente que $k$ Las consultas que siguen esta estrategia son suficientes independientemente del tamaño $k$ ¡es! Sé que esto parece ridículo, pero no veo la manera de apretar los límites.
Por lo tanto, dado que no podemos demostrar la optimalidad de la estrategia del game-master o el éxito de la estrategia de este jugador, incluso la implementación de este algoritmo tal cual es inútil, porque sí sabemos si la respuesta con menor $c_t$ será mejor para el game-master o no, y por tanto acabamos teniendo que realizar una búsqueda exponencial (podada o no) para asegurar la corrección.
Además, no sabemos $k$ así que no podemos ni siquiera implementar este algoritmo a menos que encontremos $k$ por algún otro medio primero (como la estrategia óptima).
Variante 2
El límite inferior se extiende a esta variante por un argumento similar. Sin embargo, la estrategia óptima no lo hace. La estrategia más sencilla sí lo hace, pero está aún menos claro si es óptima, y de nuevo nos enfrentamos al problema de encontrar $k$ .
0 votos
¿Se trata del peor número de aciertos o del número medio de aciertos? Cuando hicimos una pregunta similar en rec.puzzles hace veinte años, el peor caso era más fácil.
0 votos
@Michael: Pensé que te interesaría ver mi respuesta; resolví la variante 1 mediante una recurrencia, pero no puedo demostrar un límite superior conjeturado en la respuesta.