Acabo de salir de mi clase de Matemáticas y Lógica con mi amigo. Durante la clase, se presentó un conocido rompecabezas matemático/lógico:
El Rey ha 1000 vinos, 1 del cual está envenenado. Necesita identificar el vino envenenado lo antes posible y con los menores recursos, por lo que contrata al protagonista, un matemático. El rey le ofrece sus sirvientes prescindibles para que le ayuden a comprobar qué vino está envenenado.
El vino envenenado es muy potente, tanto que una sola molécula del vino provocará la muerte de cualquiera que lo beba. Sin embargo, es de acción lenta. La naturaleza del veneno de acción lenta significa que sólo hay tiempo para probar un "trago" por sirviente. (Una bebida puede ser una mezcla de cualquier número de vinos) (Supongamos que el Rey necesita saberlo en una hora, y que cualquier veneno en la bebida tarda una hora en mostrar cualquier síntoma)
¿Cuál es la cantidad mínima de sirvientes que necesitaría para identificar el vino envenenado?
Con suficiente tiempo y razonamiento, uno puede ver eventualmente que esto requiere como máximo diez ( 10 ) sirvientes (de hecho, se podrían probar 24 vinos más además de esos 1000 antes de necesitar un undécimo sirviente). La prueba/procedimiento se deja al lector.
Sin embargo, mi amigo y yo no nos conformamos con esta respuesta. Mi amigo añadió la pregunta:
¿Qué sería diferente si hubiera 2 ¿vinos que fueron envenenados de los 1000? ¿Cuál es entonces el nuevo mínimo?
Al final generalizamos el problema a esto:
Dado N botellas de vino ( N>1 ) y, de esos, k vinos envenenados ( 0<k<N ), cuál es el método óptimo para identificar todos los vinos envenenados, y cuántos servidores se necesitan ( s(N,k) )?
Después de hacer algunos cálculos, mi amigo y yo conseguimos encontrar algunos límites inferiores y superiores (posiblemente poco útiles):
log_2 {N \choose k} \le s(N,k) \le N-1
Esto se debe a que log_2 {N \choose k} es el número mínimo de servidores para identificar de forma única el N \choose k posibles configuraciones de k vinos envenenados en N total de vinos.
¿Puede alguien ayudarnos a encontrar una estrategia óptima? Además de la trivial que requiere N-1 servidores. ¿Qué tal un posible enfoque para empezar?
¿Sería este problema diferente si sólo se requiriera encontrar una estrategia que con seguridad encontrara un vino que sea no envenenado, en lugar de identificar todos los vinos envenenados? (aparte de la solución ligeramente trivial de k servidores)