No sé cómo 20Q lo hizo específicamente, pero hay mucha información sobre cómo implementar un juego de 20 preguntas .
Hay muchas formas de resolver esto, pero describiré una manera. Estos juegos pueden implementar algún tipo de árbol de decisión . Para un juego electrónico como 20Q, este árbol sería precalculado y bastante fácil de atravesar. Existen métodos para utilizar los árboles de decisión de aprendizaje en los que el juego puede aceptar nuevos objetos al final de sus preguntas si no puede adivinar lo que el usuario pregunta.
Cuando las preguntas son una serie de respuestas sí o no, terminas con un árbol binario. Cada nodo es una pregunta y las hojas son respuestas. Cuando las preguntas se responden con desconocidas o no seguras, los nodos secundarios se pueden combinar y formular sus preguntas en serie para eliminar aún más las posibles respuestas.
Básicamente este es el proceso:
- Comience con una lista completa de los objetos. Todos estos pueden comenzar con la misma probabilidad, o pueden ordenarse según la probabilidad de que el objeto fuera elegido en la prueba.
- Comience con la primera pregunta en el árbol de decisiones. Empújalo a la cola de preguntas.
- Haga la pregunta en la parte superior de la cola.
- Respuesta al proceso:
- Las respuestas Sí / No eliminan / agregan una cantidad predeterminada de probabilidad de cada respuesta en función de la pregunta.
- La respuesta "Quizás" elimina / agrega una fracción de la cantidad predeterminada de un "sí".
- "Desconocido" no cambia las probabilidades
- Una respuesta "Desconocida" o "Quizás" empuja las dos preguntas de los nodos siguientes a la cola de preguntas. Una respuesta "Sí" o "No" simplemente agrega el nodo respectivo sí / no a la cola de preguntas.
- Vaya al paso 3 hasta que las preguntas o la probabilidad de una sola respuesta superen un umbral predefinido de "certeza".
- Proporcione la respuesta más probable.
La generación del árbol es probablemente el tema de otra pregunta. Pero básicamente está eligiendo preguntas que dividen las respuestas tanto como sea posible. Ponga las preguntas que dividen las preguntas más equitativamente cerca del principio para que la mayor cantidad de preguntas pueda ser seleccionada más rápido.
Busqué en Google "código 20q" y encontré esto: http://mosaic.cnfolio.com/B142LCW2008A197
Esta versión es solo para animales, pero las 20 preguntas reales probablemente tengan un algoritmo similar.
Aquí hay una descripción general rápida del código que vinculé:
hay varias respuestas diferentes codificadas en el programa. Luego se les asignan varios atributos VERDADERO o FALSO:
Como puede ver, una abeja no es un mamífero pero sí vuela, etc.
Hay una matriz para cada grupo:
Cuando se hace cada pregunta:
El programa analiza la definición de la categoría apropiada y rastrea qué animal es el que probablemente esté pensando en función de los valores VERDADERO o FALSO y su respuesta Sí o No a la pregunta.
Esto se hace en:
fuente
No es un árbol de decisión masivo o un montón de declaraciones if / else codificadas. Robin Burgener, el inventor, documentó completamente su algoritmo en su solicitud de patente de 2005. Es ingeniosamente simple.
fuente