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
- 1. algoritmo giudice gioco diplomazia
- 2. Che tipo di serializzazione utilizza Wcf dietro le quinte?
- 3. Algoritmo "Circle the Cat" del gioco classico?
- 4. Trova un algoritmo per bilanciare questo gioco
- 5. Creazione di un algoritmo per un campo di gioco
- 6. Algoritmo di Tricky Line per un gioco (indipendente dalla lingua)
- 7. Algoritmo dietro correzioni errori di battitura in Ricerca Google
- 8. Algoritmo genetico per un gioco di carte (Dominion)
- 9. Algoritmo per disegnare solo ciò che vede la telecamera?
- 10. Qualche algoritmo per il gioco "Flip all" (Light Out)?
- 11. SSH al server dietro il firewall
- 12. Qual è la cronologia dietro la classe di tipo Functor?
- 13. Individuazione del tipo di calcestruzzo dietro un'istanza di interfaccia
- 14. Qual è l'intento dietro al requisito C++ Standard che il nuovo char [] restituisca memoria allineata?
- 15. Esiste un algoritmo per trovare un oggetto che corrisponde a determinate proprietà, come un gioco di 20 domande?
- 16. Oggetti di gioco che parlano tra loro
- 17. Come aggiungere l'animazione Spine al gioco Phaser?
- 18. Qual è la matematica dietro questa animazione di tipo ray?
- 19. Posizionamento di strutture difensive in un gioco
- 20. Algoritmo per scegliere lettere casuali per il gioco di ricerca di parole che consente di scrivere molte parole
- 21. Risorse che spiegano o indagano approcci/strategie di intelligenza artificiale (IA) al gioco di Mahjong
- 22. 2 di fila C# programma di gioco
- 23. Che tipo di problemi non vengono inoltrati al riferimento universale?
- 24. Struttura dati dietro il tipo di dizionario T9
- 25. Impossibile eseguire il recupero di git-svn dietro al proxy
- 26. Che cos'è un algoritmo s2k?
- 27. Implementazione algoritmo di inferenza di tipo Damas-Hindley-Milner
- 28. algoritmo di oggetti circostanti
- 29. Algoritmo di tipo Levenshtein con i vettori numerici
- 30. Trovare lo stile predefinito per un tipo in codice dietro
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