
Czech: 
Když reprezentujeme informace,
třeba obrázek, digitálně,
musíme ji rozdělit do malých kousků.
To nám umožní poslat obrázek jako
posloupnost symbolů barev.
A tyto barvy můžeme reprezentovat pomocí
čísel, použitím nějakého kódu.
Podívejme se na následující problém: Alice a Bob umí vysílat a přijímat zprávy v dvojkové soustavě.
[pípání Morseovky]
Účtují svým zákazníkům 1 penci za každý bit,
pokud chtějí používat jejich systém.
Přijde pravidelný zákazník a chce poslat zprávu.
A jeho zpráva má 1000 symbolů.
Význam té zprávy je zcela neznámý.
Normálně bychom tuto zprávu poslali standardním dvoubitovým kódováním.

English: 
When we represent
information, such as an image,
digitally, it means we must
slice it up into tiny chunks.
This allows us to send an image
as a sequence of color symbols.
And these colors can be
represented as unique numbers
using some code.
Consider the
following challenge.
Alice and Bob can transmit and
receive messages in binary.
They charge their
customers one penny
per bit to use their system.
And a regular customer arrives
who wants to send a message.
And their messages are
1,000 symbols long.
The meaning of the messages
is completely unknown.
Normally, this is sent with a
standard two-bit code, which

English: 
results in charging
for 2,000 bits.
However, Alice and Bob
already did some analysis
on this customer
before and determined
that the probability of
each symbol in the message
is different.
Can they use these
known probabilities
to compress the transmission
and increase their profits?
What's the optimal
coding strategy?
David Huffman famously
provided the optimal strategy,
which he published
in 1952, and based
on building a binary
tree from the bottom up.
To begin, we can
list all symbols
at the bottom, which
we can call nodes.
And then we find the two
least probable nodes,
in this case B and C,
and merge them into one,
and add the
probabilities together.
Then we repeat with the
next two least likely nodes,

Czech: 
Což vede k účtování za 2000 bitů.
Alice a Bob ale předtím zanalyzovali
tohoto zákazníka.
A zjistili, že pravděpodobnost použití
jednotlivých symbolů je různá.
Můžou využít znalost těchto pravděpodobností ke zmenšení objemu přenosu a zvýšení jejich zisku?
Jaká je optimální strategie kódování?
David Huffman vymyslel optimální strategii
a publikoval ji v roce 1952.
Je založená na budování
binárního stromu zespoda nahoru.
Začneme tak, že si vypíšeme všechny symboly
dolů a budeme jim říkat uzly.
A pak najdeme 2 uzly s nejmenšími pravděpodobnostmi, v našem případě B a C.
A spojíme je do jednoho.
A sečteme jejich pravděpodobnosti.
A tohle opakujeme s dalšími 2 nejméně pravděpodobnými uzly.

Czech: 
A pokračujeme ve spojování, dokud nám
nezbude jediný uzel nahoře.
Nakonec označíme hrany v tomto stromě
0 a 1, v libovolném pořadí.
Kódem pro každé písmeno je prostě cesta z vršku stromu k danému písmenu.
Třeba pro A je to jediná hrana s 1.
Říká se tomu Huffmanovo kódování
a v takovýchto případech
ho nemůžete porazit.
Schválně to zkuste.
Například, když zkrátíte kód pro D na pouhou 0.
Pak zpráva 011 by mohla znamenat DAA
nebo možná taky jenom B.
Takže kdybyste chtěli, aby to fungovalo, museli byste zavést mezeru mezi znaky, a to by vyrušilo všechny úspory během přenosu.
Jak moc tohle zmenší zprávu, v porovnání
s původními 2000 bity?
Musíme prostě spočítat, kolik bitů připadne průměrně na jedno písmeno.

English: 
and continue merging until you
have a single node at the top.
Finally, we label the edges
in this tree with 0 or 1
in any order.
Now the code for
each letter is just
the path from the top of the
tree to the given letter.
So for A, it's just
one edge, or 1.
This is now known
as a Huffman coding,
and for examples of
the following type,
you cannot beat it.
Go ahead and try.
For example, if you shorten
the code for D to just 0,
then a message 011 could perhaps
mean DAA, or maybe just B.
So for this to work, you'd
need to introduce letter spaces
which cancel out any
savings during transmission.
Now how far does this
compress the message
compared to the
original 2,000 bits?
Well, we just need to calculate
the number of bits per letter
on average.

English: 
So we multiply the length of
each code times the probability
of occurrence and
add them together,
which results in an average
length of 1.75 bits per symbol
on average.
That means with
this Huffman coding,
we can expect to
compress the messages
from 2,000 bits to 1,750 bits.
And Claude Shannon
was the first to claim
that the limit of
compression will always
be the entropy of
the message source.
As the entropy, or
uncertainty of our source
decreases due to known
statistical structure,
the ability to
compress increases.
[MORSE CODE BEEPING]
While if the entropy increases
due to unpredictability,
our ability to
compress decreases.

Czech: 
Vynásobíme tedy délku každého kódu s pravděpodobností výskytu a sečteme je dohromady.
Zjistíme, že průměrná délka
je 1.75 bitů na jeden symbol.
To znamená, že při použití Huffmanova kódování očekáváme zmenšení zprávy
z 2000 bitů na 1750 bitů.
Claude E. Shannon byl první, kdo tvrdil, že limit komprese bude vždy entropie zdrojové zprávy.
Když se entropie neboli nejistota našeho zdroje snižuje, díky známé statistické struktuře,
schopnost komprimace se zvyšuje.
[pípání Morseovky]
Naopak, když se entropie zvyšuje,
kvůli nepředvídatelnosti, naše schopnost komprimovat se snižuje.

English: 
[MORSE CODE BEEPING]
If we want to compress
it beyond entropy,
we must necessarily throw away
information in our messages.

Czech: 
[pípání Morseovky]
Pokud bychom chtěli komprimovat za hranici entropie, nutně bychom museli zahodit část informace z naší zprávy.
