Sommaire:
Parce qu’il représente le nombre total moyen de questions parfaites auxquelles vous avez besoin d’être répondu afin de résoudre complètement toutes les ambiguïtés dans des données que vous n’aviez pas encore vues. Une question parfaite avec réponses possibles est celle qui, une fois répondu, l’espace des possibilités sera réduit de n fois.nn
Exemple:
Supposons que j'ai lancé un dé à faces et que vous deviez prédire son résultat. L'espace de possibilités est 6 . Vous pouvez me poser des questions comme celle-ci binaire "est le résultat 1 ?" (la réponse est oui ou non, c'est-à-dire n = 2 ) et ma réponse pourrait être "nopies!". Ensuite, l'espace de possibilités par 1 . Donc, cette question n'est pas bonne à poser.661n=21
Alternativement, vous pourriez poser de meilleures questions, telles que cette question binaire supérieure "est-elle supérieure à ?", Et ma réponse serait "bravo!" - Alors boum, l’espace des possibles est réduit de moitié! -À- dire il y a seulement 6 / 2 = 3 candidats de gauche (sur l'origine 6). Hell yeah mec.3.56/2=3
Maintenant , supposons que vous continuez à demander récursive plus de ces bonnes questions jusqu'à ce que vous atteignez le cas lorsque l'espace des possibilités ne dispose que d' possibilité, qui -Par definition- il n'y a pas d' ambiguïté à gauche (vous connaissez la réponse).1
Faisons cela:
- possibilités. Q: Le résultat est-il > 3.5 ? A: oui6>3.5
- possibilitésgauche. Q: le résultat est-il ≥ 5 ? A: oui6/2=3≥5
- possibilitésgauche. Q: le résultat est-il = 6 ? A: oui6/2/2=1.5=6
Vous en concluez que le résultat doit être le numéro et qu'il vous suffit de poser 3 questions binaires. Ie c e i l ( log 2 ( 6 ) ) = c e i l ( 2,58 ) = 363ceil(log2(6))=ceil(2.58)=3
Maintenant, évidemment, le nombre de questions binaires est toujours un nombre naturel. Alors , pourquoi ne pas utiliser l'entropie de Shannon fonction? Parce qu’il crée en réalité le nombre moyen de bonnes questions à poser.ceil
Si vous répétez cette expérience (en écrivant un code Python), vous remarquerez que vous devrez en moyenne poser questions binaires parfaites.2.58
Bien sûr, si vous posez des questions binaires, vous définissez la base du journal en conséquence. Alors, connectez-vous ici 2 Parce que nos questions étaient binaires. Si vous posezquestions qui attendent n beaucoupréponses possibles, vous définirez la base n au lieu de 2 , soit log n ( . . . ) .log2(...)nn2logn(...)
Simulation:
import random
total_questions = 0
TOTAL_ROUNDS = 10000
for i in range(0,TOTAL_ROUNDS):
outcome = random.randrange(1,7)
total_questions += 1
if outcome > 3.5:
total_questions += 1
if outcome >= 5:
total_questions += 1
if outcome == 5:
pass
else:
# must be 6! no need to ask
pass
else:
# must be 4! no need to ask
pass
else:
total_questions += 1
if outcome >= 2:
total_questions += 1
if outcome == 2:
pass
else:
# must be 3! no need to ask
pass
else:
# must be 1! no need to ask
pass
print 'total questions: ' + str(total_questions)
print 'average questions per outcome: ' + str(total_questions/float(TOTAL_ROUNDS))
Résultats:
total questions: 26634
average questions per outcome: 2.6634
Holy molly dude .2.6634≠log2(6)≠2.58
Qu'est-ce qui ne va pas? C'est presque proche, mais pas vraiment comme je l'espérais. Est-ce que c'est PRNG de Python qui essaie de dire une blague lente? Ou est-ce Shannon qui se trompe? Ou est-ce-Dieu interdit? Ma compréhension est fausse? De toute façon, HELP. SOS déjà mec.