Corrigé Examen 2018

Corrigé Examen 2018

by Tanish Patil -
Number of replies: 5

Hello,
For the mark scheme of the 2018 exam, for question 1.2, you wrote that

H(X) ≤ log₂(33) < Lc(Huffman(X))


However, the second inequality is not always true. In this particular question, the "worst-case scenario" is when 4 letters appear thrice, and the other 29 each appear four times. Calculating the average length of our Huffman code, we get 5.046875, which is marginally greater than log₂(33). However, for any other distribution of letters, the average Huffman length is less than log₂(33). (This also means the answer to the question itself should be no and not yes, since an average length of 5.5 is impossible.) 

What we do have are the two inequalities


H(X) ≤ log₂(n)
and
H(X) ≤ Lc(Huffman(X))


However, these two together do not imply the second inequality. Furthermore, whilst one might argue that when the letters are equally distributed we have H(X) = log₂(n), this can only occur when the number of letters in the word is a multiple of n. Otherwise, the second inequality is not necessarily true. For example, if n = 3, and the word is of length 4, we have only a few possible letter-frequency distributions ( (4,0,0), (3,1,0), (2,2,0) and (2,1,1) ) of which the "worst-case scenario" (maximal average-length) is the latter (so for example the word ADAM). For this word, we could encode the letters as follows:

  • A = 0
  • D = 10
  • M = 11
    which gives an average Huffman-length of 6/4 = 1.5. But this is inferior to log₂(3), and so for all possible words of length 4, including the worst case, the second inequality is incorrect. Indeed, if your question posed that the word length was 64 instead of 128, then the second inequality would also never hold in that case, as the longest possible Huffman-length occurs with a distribution of (1, 1, 2, 2, .... 2), which gives a length of 5.03125. But this is inferior to log₂(33) !

    Regards,
    Tanish Patil
In reply to Tanish Patil

Re: Corrigé Examen 2018

by Jean-Cédric Chappelier -

je ne comprends pas le but/sens de votre message et ne sais pas à quel « mark scheme » vous faites référence car je sais bien tout ça et n'ai jamais affirmé de telles implications dans mon corrigé officiel (que je viens d'ailleurs de mettre en ligne).

Ce que j'y dis est exactement la chose suivante : cela SEMBLE possible (mais peut être que cette subtilité de langue vous aura échappée).

Mais il est clair que tout ce que vous dites est vrai (j'ai d'ailleurs une remarque dans le même sens, mais moins poussée, dans la 2e réponse). Simplement, avec les données en possession (exprimées par la donnée) et sans avoir les moyens de faire un calcul exhaustif, cela SEMBLE possible.
Ce qui est très différent que d'affirmer que c'est TOUJOURS possible (ce que je ne fais, bien sûr, pas !).

Évidemment 5.5 n'est pas possible si l'on fait tous les calculs exhaustivement (et un étudiant ayant fait tout ça de tête pendant l'examen aurait eu tous les points [d'où l'importance de la JUSTIFICATION !!] ;-) )
mais j'ai choisi 5.5 pour être pile entre log_2(32) et log_2(64) ce qui, avec la concavité du logarithme laisse une place/marge de possibilité pour des calculs de tête.
La réponse attendue était donc celle du corrigé : cela SEMBLE possible (sans pour autant, on est bien d'accord la dessus, pouvoir conclure de façon absolue, puisque, justement, dans la réalité ce n'est que très marginalement possible; mais possible quand même).

Est-ce plus clair ?
Réagissiez vous à un autre corrigé, non officiel ?


In reply to Jean-Cédric Chappelier

Re: Corrigé Examen 2018

by Tanish Patil -

Oui, c'est tres clair maintenant. J'avais mal compris le sens du mot 'semble'. Cependant, le deuxiéme question (1.2.2) est different en fonction de notre reponse pour le 1.2.1. Je suppose que si on avait mit non comme reponse pour le 1 (avec justification) on corrigera notre reponse pour le 1.2.2 aussi? (il n'y a aucun correction dans le corrigé officiel). 

Merci, 

Tanish

In reply to Tanish Patil

Re: Corrigé Examen 2018

by Jean-Cédric Chappelier -

oui c'est pour cela que j'avais mis les 2 cas (et demandé les justifications).

mais personne ne peut, à mon sens, aller aussi loin en temps limité et sans calculatrice...
en tout cas ça ne s'est pas produit ;-)

In reply to Jean-Cédric Chappelier

Re: Corrigé Examen 2018

by Tanish Patil -

Merci. 

En tout cas, quand j'ai fait la question je me suis dit que si je prends le pire cas (4× 3, 29× 4) et je lui donne un code au bol, je pouvais calculer le longuer moyenne pour cette code, j'aurais un borne superieur pour Lc(Huff). Le code le plus simple a tester est celui ou on a 31 des 32 codes de longueur 5 possible, et on affixe un 0 et un 1 a la fin du dernier code de longeur 5 pour obtenir deux codes de longueur 6. La longeur moyenne est donc ((6×3×2)+(5×3×2)+(5×29×4))/128. Le numerateur est assez facilement calculé (grace au 5×2 et 5×4 qui rend deux produits beaucoup plus facilement calculé) et on obtient 36+30+580 = 646 < 11×64, dont la longeur moyenne maximal est clairement plus petit que 5.5 avec un raisonnement de 5 minutes.

Je vous remerci beaucoup pour tout votre temps, 

Tanish

In reply to Tanish Patil

Re: Corrigé Examen 2018

by Jean-Cédric Chappelier -

Excellent ! (utiliser l'optimalité de Huffman).
Et c'est bien pour cela que je voulais la justification (j'avais bien conscience que le choix de 5.5 pour faciliter les calculs de tête était « un peu trop grand » ;-) )

Et du coup la réponse que j'aurais attendue pour 2.2 dans votre cas eût été, dans la partie « non » : H(X) <= L_Hu <= 646/128.

Mais je n'ai eu aucun raisonnement de la sorte l'an passé (les non que j'ai eu prenaient le log(128) pour H...)