Mi ha sempre sorpreso come il Akinator app possa indovinare un personaggio facendo solo alcune domande. Quindi mi chiedo che tipo di algoritmo o metodo lo lasci fare? C'è un nome per quella classe di algoritmi e dove posso leggere di più su di loro?Che tipo di algoritmo c'è dietro al gioco Akinator?
risposta
sì, c'è un nome per questi classe di algoritmi - si chiama classification algorithms nel campo della machine learning. Decision trees è un esempio per l'algoritmo di classificazione.
In questo problema di classificazione, le funzionalità dell'algoritmo sono le risposte alla domanda.
Decidere quale domanda deve essere posta successivamente può essere fatto in vari modi - ad esempio cercando di massimizzare il previsto (o medio) entropy dalla domanda successiva.
Penso che questo sia come un sistema esperto, con struttura B-Tree.
Questo gioco è talvolta noto come 20 domande. Ci sono alcune domande sul SO su di esso, per esempio:
Principali caratteristiche dei algoritmo:
- auto-educare
- errori -indulgenza
- intelligente sistema di domanda successiva scegliere
Akinator modello algoritmo di gioco si chiama "sistema esperto basato su logica fuzzy".
E questo NON è un albero decisionale, perché non ha alcun indulgenza agli errori.
avevo scritto un po 'di tempo fa su C#, si può trovare dal link: https://github.com/ukushu/AkinatorEngine
vorrei aggiungere a Amit di rispondere che non si dovrebbe sorprendere che alcune domande sono in grado di trovare il personaggio. Lo screenshot che ho visto aveva 5 possibilità di risposta. Chiedendo solo 8 domande, puoi distinguere tra 8^5 = 2^15 = 32768 caratteri, il che è sufficiente per coprire i personaggi pensati dalla stragrande maggioranza delle persone. – HerrKaputt
@HerrKaputt - Teoricamente sì, ma ricorda che c'è "rumore" - le persone potrebbero scambiare o dare un significato diverso (fortemente d'accordo/debolmente d'accordo) alla stessa domanda. (Questo è il motivo per cui la semplice ricerca binaria fallisce in questi casi e hai bisogno di qualcosa che sia più basato sulle statistiche, che è esattamente ciò che gli algoritmi di classificazione intendono fare) – amit
@HerrKaputt il numero di permutazioni dovrebbe essere '5^8' non' 8^5', tuttavia, ci sono solo due opzioni non cinque. "Non so" è ignorare una domanda e le varianti "probabilmente" servono solo a rendere più deboli le risposte "si" e "no". Quindi il numero di permutazioni per 8 domande è solo '2^8' che è' 256'. – dualed