2010-06-10 12 views
7

Aus meinem Algorithmen Lehrbuch:Kompressibilität Beispiel

Die jährlichen Kreispferderennen werden in drei Vollblüter zu bringen, die gegen eine nie teilgenommen haben ein anderes. Aufgeregt studieren Sie ihre vergangenen 200 Rennen und fassen diese als Wahrscheinlichkeitsverteilung über vier Ergebnisse zusammen: zuerst ("erster Platz"), zweiter, dritter und anderer.

     Outcome  Aurora Whirlwind Phantasm 
         first  0.15  0.30   0.20 

         second  0.10  0.05   0.30 

         third  0.70  0.25   0.30 

         other  0.05  0.40   0.20 

Welches Pferd ist das vorhersehbar? Ein quantitativer Ansatz für diese Frage ist die Komprimierbarkeit. Schreiben Sie die Geschichte jedes Pferdes als eine Kette von 200 Werten auf (erste, zweite, dritte, andere). Die Gesamtzahl der Bits, die zum Codieren dieser Verfolgungsaufzeichnungsfolgen benötigt werden, kann dann unter Verwendung des Huffman-Algorithmus berechnet werden. Dies ergibt 290 Bit für Aurora, 380 für Whirlwind und 420 für Phantasm (überprüfen Sie es!). Aurora hat die kürzeste Kodierung und ist daher in einem starken Sinne am vorhersehbarsten.

Wie haben sie 420 für Phantasm bekommen? Ich bekomme immer 400 Bytes, so:

Kombiniere zuerst, andere = 0,4, kombinieren zweite, dritte = 0,6. Ende mit 2 Bits, die jede Position kodieren.

Gibt es etwas, was ich über den Huffman-Codierungsalgorithmus falsch verstanden habe?

Lehrbuch hier verfügbar: http://www.cs.berkeley.edu/~vazirani/algorithms.html (Seite 156).

+0

"Welches Pferd ist am vorhersehbarsten?" - das beantwortet das nicht, denn die Platzierung hängt von den anderen Pferden im Rennen ab. Aurora könnte den Kurs jedes Mal genau zur gleichen Zeit ausführen - bis zur Millisekunde! - und immer noch die dort gezeigten Ergebnisse wegen der anderen Pferde im Rennen bekommen. –

Antwort

4

Ich denke, du hast Recht: Phantasms 200 Ergebnisse können mit 400 Bits (nicht Bytes) dargestellt werden. 290 für Aurora und 380 für Whirlwind sind korrekt.

Der korrekte Huffman-Code wird in der folgenden Weise erzeugt:

  1. die zwei am wenigsten wahrscheinlichen Ergebnisse Kombinieren: 0,2 und 0,2 liegt. Erhalte 0,4.
  2. Kombinieren Sie die nächsten zwei unwahrscheinlichsten Ergebnisse: 0,3 und 0,3. Erhalte 0,6.
  3. Kombinieren Sie 0.4 und 0.6. Erhalte 1.0.

Sie würden 420 Bits erhalten, wenn Sie diese stattdessen tat:

  1. Kombinieren Sie die beiden am wenigsten wahrscheinlichen Ergebnissen: 0,2 und 0,2. Erhalte 0,4.
  2. Kombinieren Sie 0,4 und 0,3. (Falsch!) Erhalte 0,7.
  3. Kombinieren Sie 0,7 und 0,3. Get 1.0