[go: up one dir, main page]

Hopp til innhold

Huffman-koding: Forskjell mellom sideversjoner

Fra Wikipedia, den frie encyklopedi
Slettet innhold Innhold lagt til
PladaskBot (diskusjon | bidrag)
Ingen redigeringsforklaring
 
(11 mellomliggende versjoner av 7 brukere er ikke vist)
Linje 1: Linje 1:
{{Kildeløs|Helt uten kilder.|dato=10. okt. 2015}}
'''Huffman-koding''' er en måte å komprimere digital informasjon som ikke medfører tap av informasjon, gjerne brukt i komprimerte bildefiler.
'''Huffman-koding''' er en måte å komprimere digital informasjon som ikke medfører tap av informasjon, gjerne brukt i komprimerte bildefiler.


==Historie==
==Historie==
I 1951 ble [[David A. Huffman]] og hans klassekamerater i et kurs om [[informasjonsteori]] gitt valget mellom å skrive en semesteroppgave eller å ta avgangseksamen. Oppgaven de kunne velge gikk ut på å finne den mest effektive metoden for å representere tall, bokstaver eller andre symboler ved bruk av binærkode. David Huffman jobbet med oppgaven i flere måneder, og utviklet mange fremgangsmåter, men ingen som han klarte å bevise var den mest effektive. Det endte med at han ga opp å gjøre oppgaven, og og han bestemte seg for heller å begynne å studere til avgangseksamen. Men idet han skulle kaste notatene sine i søpla, kom løsningen til han. “It was the most singular moment of my life,” forteller han. “There was the absolute lightning of sudden realization.” Resultatet var Huffman-kodingen.
I 1951 ble [[David A. Huffman]] og hans klassekamerater i et kurs om [[informasjonsteori]] gitt valget mellom å skrive en semesteroppgave eller å ta avgangseksamen. Oppgaven de kunne velge gikk ut på å finne den mest effektive metoden for å representere tall, bokstaver eller andre symboler ved bruk av binærkode. David Huffman jobbet med oppgaven i flere måneder, og utviklet mange fremgangsmåter, men ingen som han klarte å bevise var den mest effektive.


Det endte med at han ga opp å gjøre oppgaven, og han bestemte seg for heller å begynne å studere til avgangseksamen. Men idet han skulle kaste notatene sine i søpla, kom løsningen til ham. «It was the most singular moment of my life», forteller han. «There was the absolute lightning of sudden realization.» Resultatet var Huffman-kodingen.
Da Huffman gjorde dette, seiret studenten over professoren som hadde jobbet lenge for å finne en lignende kode. Han forteller også at han sannsynligvis aldri ville lagt hans hender på problemet hvis han hadde visst at [[Robert M. Fano]], hans professor, og [[Claude E. Shannon]], skaperen av informasjonsteori, hadde strevd med det i lengre tid.

Da Huffman gjorde dette, seiret studenten over professoren som hadde jobbet lenge for å finne en lignende kode. Han forteller også at han sannsynligvis aldri ville lagt hans hender på problemet hvis han hadde visst at [[Robert M. Fano]], hans professor, og [[Claude E. Shannon]], skaperen av informasjonsteori, hadde strevd med det i lengre tid.


==Hovedteknikk==
==Hovedteknikk==
Linje 118: Linje 121:


-->
-->
{{Autoritetsdata}}


[[Kategori:Algoritmer]]
[[Kategori:Datakompresjonsalgoritmer]]

[[ar:ترميز هوفمان]]
[[az:هافمن سیخیشدیرماق بویوروقو]]
[[ca:Codificació de Huffman]]
[[cs:Huffmanovo kódování]]
[[da:Huffman-kodning]]
[[de:Shannon-Fano-Kodierung#Huffman-Code]]
[[et:Huffmani kodeerimine]]
[[el:Κωδικοποίηση Huffman]]
[[en:Huffman coding]]
[[es:Codificación Huffman]]
[[fa:کد‌گذاری هافمن]]
[[fr:Codage de Huffman]]
[[ko:허프만 부호화]]
[[it:Codifica di Huffman]]
[[he:קוד הופמן]]
[[nl:Huffmancodering]]
[[ja:ハフマン符号]]
[[pl:Kodowanie Huffmana]]
[[pt:Codificação de Huffman]]
[[ru:Код Хаффмана]]
[[sr:Хафманови кодови]]
[[fi:Huffmanin koodaus]]
[[sv:Huffmankodning]]
[[th:รหัสฮัฟแมน และ รหัสแชนนอน-ฟาโน]]
[[tr:Huffman kodu]]
[[vi:Mã hóa Huffman]]
[[zh:霍夫曼编码]]

Siste sideversjon per 16. okt. 2017 kl. 06:42

Huffman-koding er en måte å komprimere digital informasjon som ikke medfører tap av informasjon, gjerne brukt i komprimerte bildefiler.

I 1951 ble David A. Huffman og hans klassekamerater i et kurs om informasjonsteori gitt valget mellom å skrive en semesteroppgave eller å ta avgangseksamen. Oppgaven de kunne velge gikk ut på å finne den mest effektive metoden for å representere tall, bokstaver eller andre symboler ved bruk av binærkode. David Huffman jobbet med oppgaven i flere måneder, og utviklet mange fremgangsmåter, men ingen som han klarte å bevise var den mest effektive.

Det endte med at han ga opp å gjøre oppgaven, og han bestemte seg for heller å begynne å studere til avgangseksamen. Men idet han skulle kaste notatene sine i søpla, kom løsningen til ham. «It was the most singular moment of my life», forteller han. «There was the absolute lightning of sudden realization.» Resultatet var Huffman-kodingen.

Da Huffman gjorde dette, seiret studenten over professoren som hadde jobbet lenge for å finne en lignende kode. Han forteller også at han sannsynligvis aldri ville lagt hans hender på problemet hvis han hadde visst at Robert M. Fano, hans professor, og Claude E. Shannon, skaperen av informasjonsteori, hadde strevd med det i lengre tid.

Hovedteknikk

[rediger | rediger kilde]

Hvert symbol, eller piksel i bilde, blir representert med kodeord av ulik lengde, på den måten at de symboler som oppstår oftest har kortest kodeord. Metoden ble utviklet av David A. Huffman, og er basert på Shannon-Fano-algoritmen.

Huffman-algoritmen kan blant annet beskrives slik:

  1. Tell opp antall forekomster av hvert symbol
  2. Sorter symbolene etter antall forekomster
  3. Slå sammen de to symbolene med minst forekomster i en gruppe, og sorter igjen
  4. Gjenta punkt 3 til det bare er to grupper igjen
  5. Representer denne grupperingen ved hjelp av et binært tre. Hver gren/forgrening blir tildelt 0-bit eller 1-bit
  6. Sekvensen av biter fra roten til hver løvnode i treet, gir Huffman-koden.


Regner du informasjonmengde (ved bruk av -ln x/ln2) til alfabetet og runder av til nærmeste bit får du: A=1bit, B=2bit, C=3bit osv

Hvis vi da viser et tenkt eksempel på antall bokstaver som skal sendes:

Antall tegn = A=50 B=23 C=12 D=5 E=5

(1bit x 50) + (2bits x 23) + (3bits x 12) + (4bits x 5) + (5bits x 5) = 162 bits

NB: Man kan ikke bruke informasjonsmengden direkte ettersom man ikke kan sende 3.06 bit i en melding.