Je ne sais pas comment 20Q l'a fait spécifiquement, mais il y a beaucoup d'informations sur la façon de mettre en œuvre un jeu de 20 questions .
Il existe de nombreuses façons de résoudre ce problème, mais je vais décrire une façon. Ces jeux peuvent implémenter une sorte d' arbre de décision . Pour un jeu électronique comme 20Q, cet arbre serait précalculé et assez facile à parcourir. Il existe des méthodes d'utilisation des arbres de décision d'apprentissage où le jeu peut accepter de nouveaux objets à la fin de ses questions s'il est incapable de deviner ce que l'utilisateur demande.
Lorsque les questions sont une série de réponses oui ou non, vous vous retrouvez avec un arbre binaire. Chaque nœud est une question et les feuilles sont des réponses. Lorsque les réponses aux questions sont inconnues ou incertaines, les nœuds enfants peuvent être combinés et leurs questions posées en série pour mieux sélectionner les réponses possibles.
Fondamentalement, c'est le processus:
- Commencez par une liste complète des objets. Ceux-ci peuvent tous commencer à une probabilité égale, ou ils peuvent être triés selon la probabilité que l'objet soit choisi lors du test.
- Commencez par la première question de l'arbre de décision. Poussez-le dans la file d'attente des questions.
- Posez la question en haut de la file d'attente.
- Réponse du processus:
- Les réponses Oui / Non suppriment / ajoutent une quantité prédéterminée de probabilité de chaque réponse en fonction de la question.
- La réponse "Peut-être" supprime / ajoute une fraction de la quantité prédéterminée d'un "oui".
- "Inconnu" ne change pas les probabilités
- Une réponse «inconnu» ou «peut-être» pousse les deux questions des nœuds suivants dans la file d'attente de questions. Une réponse "Oui" ou "Non" ajoute simplement le nœud oui / non respectif à la file d'attente de questions.
- Passez à l'étape 3 jusqu'à ce qu'il n'y ait plus de questions ou que la probabilité d'une réponse unique dépasse le seuil de «certitude» prédéfini.
- Fournissez la réponse la plus probable.
La génération de l'arbre est probablement le sujet d'une autre question. Mais en gros, c'est choisir des questions qui divisent les réponses autant que possible. Posez les questions qui divisent les questions le plus équitablement vers le début afin que le plus grand nombre de questions puisse être éliminé le plus rapidement.
J'ai googlé "code 20q" et trouvé ceci: http://mosaic.cnfolio.com/B142LCW2008A197
Cette version est uniquement pour les animaux, mais les 20 questions actuelles ont probablement un algorithme similaire.
Voici un aperçu rapide du code que j'ai lié:
Il existe plusieurs réponses codées en dur dans le programme. Plusieurs attributs TRUE ou FALSE leur sont alors attribués:
Comme vous pouvez le voir, une abeille n'est pas un mammifère mais elle vole, etc.
Il y a un tableau pour chaque groupe:
Lorsque chaque question est posée:
Le programme examine la définition de la catégorie appropriée et suit quel animal est probablement celui auquel vous pensez en fonction des valeurs VRAI ou FAUX et de votre réponse Oui ou Non à la question.
Cela se fait en:
la source
Ce n'est pas un arbre de décision massif ou un tas d'instructions if / else codées en dur. Robin Burgener, l'inventeur, a complètement documenté son algorithme dans son dépôt de brevet en 2005. C'est ingénieusement simple.
la source