Algoritmo de Huffman

El algoritmo de Huffman es un algoritmo para la construcción de códigos de Huffman, desarrollado por David A. Huffman en 1952 y descrito en A Method for the Construction of Minimum-Redundancy Codes.[1]

Este algoritmo toma un alfabeto de n símbolos, junto con sus frecuencias de aparición asociadas, y produce un código de Huffman para ese alfabeto y esas frecuencias.

Descripción

El algoritmo consiste en la creación de un árbol binario que tiene cada uno de los símbolos por hoja, y construido de tal forma que siguiéndolo desde la raíz a cada una de sus hojas se obtiene el código Huffman asociado a él.

  1. Se crean varios árboles, uno por cada uno de los símbolos del alfabeto, consistiendo cada uno de los árboles en un nodo sin hijos, y etiquetado cada uno con su símbolo asociado y su frecuencia de aparición.
  2. Se toman los dos árboles de menor frecuencia, y se unen creando un nuevo árbol. La etiqueta de la raíz será la suma de las frecuencias de las raíces de los dos árboles que se unen, y cada uno de estos árboles será un hijo del nuevo árbol. También se etiquetan las dos ramas del nuevo árbol: con un 0 la de la izquierda, y con un 1 la de la derecha.
  3. Se repite el paso 2 hasta que solo quede un árbol.

Con este árbol se puede conocer el código asociado a un símbolo, así como obtener el símbolo asociado a un determinado código.

Para obtener el código asociado a un símbolo se debe proceder del siguiente modo:

  1. Comenzar con un código vacío
  2. Iniciar el recorrido del árbol en la hoja asociada al símbolo
  3. Comenzar un recorrido del árbol hacia arriba
  4. Cada vez que se suba un nivel, añadir al código la etiqueta de la rama que se ha recorrido
  5. Tras llegar a la raíz, invertir el código
  6. El resultado es el código Huffman deseado

Para obtener un símbolo a partir de un código se debe hacer así:

  1. Comenzar el recorrido del árbol en la raíz de éste
  2. Extraer el primer símbolo del código a descodificar
  3. Descender por la rama etiquetada con ese símbolo
  4. Volver al paso 2 hasta que se llegue a una hoja, que será el símbolo asociado al código

En la práctica, casi siempre se utiliza el árbol para obtener todos los códigos de una sola vez; luego se guardan en tablas y se descarta el árbol.

Ejemplo de uso

La tabla describe el alfabeto a codificar, junto con las frecuencias de sus símbolos. En el gráfico se muestra el árbol construido a partir de este alfabeto siguiendo el algoritmo descrito.

Árbol para construir el código Huffman del ejemplo.
Símbolo Frecuencia
A 0,15
B 0,30
C 0,20
D 0,05
E 0,15
F 0,05
G 0,10

Se puede ver con facilidad cuál es el código del símbolo E: subiendo por el árbol se recorren ramas etiquetadas con 1, 1 y 0; por lo tanto, el código es 011. Para obtener el código de D se recorren las ramas 0, 1, 1 y 1, por lo que el código es 1110.

La operación inversa también es fácil de realizar: dado el código 10 se recorren desde la raíz las ramas 1 y 0, obteniéndose el símbolo C. Para descodificar 010 se recorren las ramas 0, 1 y 0, obteniéndose el símbolo A.

Limitaciones

Para poder utilizar el algoritmo de Huffman es necesario conocer de antemano las frecuencias de aparición de cada símbolo, y su eficiencia depende de lo próximas a las frecuencias reales que sean las estimadas. Algunas implementaciones del algoritmo de Huffman son adaptativas, actualizando las frecuencias de cada símbolo conforme recorre el texto.

La eficiencia de la codificación de Huffman también depende del balance que exista entre los hijos de cada nodo del árbol, siendo más eficiente conforme menor sea la diferencia de frecuencias entre los dos hijos de cada nodo.

Ejemplos:

  • La codificación binaria es un caso particular de la codificación de Huffman que ocurre cuando todos los símbolos del alfabeto tienen la misma frecuencia. Se tiene pues que la codificación binaria es la más eficiente para cualquier número de símbolos equiprobables.
  • El algoritmo de Huffman aplicado sobre un alfabeto de dos símbolos asignará siempre un 1 al primero y un 0 al segundo, independientemente de la frecuencia de aparición de dichos símbolos. En este caso nunca se realiza compresión de los datos, mientras que otros algoritmos sí podrían conseguirlo.

Una manera de resolver este problema consiste en agrupar los símbolos en palabras antes de ejecutar el algoritmo. Por ejemplo, si se tiene la cadena de longitud 64

 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB

El algoritmo de Huffman aplicado únicamente a los símbolos devuelve el código:

 1111111111111111111111111111111111111111111111111111111111111110

También de longitud 64. Sin embargo, si antes de utilizar el algoritmo, se agrupan los símbolos en las palabras "AA", "AB" y "B" (que se codifican como 1, 01 y 00), el algoritmo devuelve la siguiente cadena:

 111111111111111111111111111111101

que tiene longitud 33, la mitad que si no se hubiera agrupado. Si observa el árbol de Huffman, se puede comprobar que la diferencia de frecuencias entre las ramas del árbol es menor que en el caso anterior.

Variaciones del algoritmo

Códigos Huffman n-arios

Es posible crear códigos de Huffman ternarios, cuaternarios, y, en general, n-arios. Para ello solo es necesario realizar dos modificaciones al algoritmo:

  1. Los árboles a crear tendrán tantos hijos como símbolos posibles puedan aparecer en los códigos Huffman. Por ejemplo, si es ternario se crearán árboles con tres hijos; si es cuaternario, con cuatro.
  2. Si se expresa como s el número de símbolos en el alfabeto a codificar, y n el número de símbolos que aparecen en el código Huffman, entonces s-1 debe ser múltiplo de n-1. Es decir, para un código ternario, s debe valer 3, 5, 7, etc. Si esta condición no se cumple, entonces se deben añadir símbolos "nulos" con frecuencia 0, que servirán solo como relleno a la hora de construir el árbol.

Véase también

Referencias

Enlaces externos

Read other articles:

Artikel ini perlu diwikifikasi agar memenuhi standar kualitas Wikipedia. Anda dapat memberikan bantuan berupa penambahan pranala dalam, atau dengan merapikan tata letak dari artikel ini. Untuk keterangan lebih lanjut, klik [tampil] di bagian kanan. Mengganti markah HTML dengan markah wiki bila dimungkinkan. Tambahkan pranala wiki. Bila dirasa perlu, buatlah pautan ke artikel wiki lainnya dengan cara menambahkan [[ dan ]] pada kata yang bersangkutan (lihat WP:LINK untuk keterangan lebih lanjut...

 

Dalam artikel ini, nama keluarganya adalah Ng. Ng Tze YongNg pada tahun 2022Informasi pribadiKebangsaanMalaysiaLahir16 Mei 2000 (umur 23)Johor Bahru, Johor, Malaysia[1]Tinggi1,80 mTahun aktif2019–sekarangPeganganKananPelatihTey Seu BockHendrawanTunggal putraRekor136 menang, 62 kalahPeringkat tertinggi14 (21 November 2023)Peringkat saat ini15 (28 November 2023) Rekam medali Bulu tangkis putra Mewakili  Malaysia Piala Sudirman 2021 Vantaa Beregu campuran 2023 Suzho...

 

Near-Earth asteroid 2021 SGOrbit of 2021 SGDiscovery [1][2]Discovered byZwicky Transient FacilityDiscovery sitePalomar Obs.Discovery date17 September 2020DesignationsMPC designation2021 SGAlternative designationsZTF0MtF [3]Minor planet categoryNEO · Apollo [4]Orbital characteristics [4]Epoch 21 January 2022 (JD 2459600.5)Uncertainty parameter 7Observation arc7 daysAphelion2.953 AUPerihelion0...

Television channel Stingray BravaStingray Brava LogoCountryNetherlandsBroadcast areaEurope WorldwideHeadquartersAlmere, NetherlandsProgrammingPicture format1080i HDTV(downscaled to 16:9 576i for the SDTV feed)OwnershipOwnerStingray Group (since 2015)Sister channelsStingray DjazzStingray iConcertsStingray Lite TVHistoryLaunched2006; 18 years ago (2006) (Pan-European feed)1 July 2010; 13 years ago (2010-07-01) (Dutch feed)ReplacedCultuur 7 (Flanders)Closed1&#...

 

Voce principale: Palermo Football Club. SSC PalermoStagione 1986-1987Sport calcio Squadra Palermo Allenatore Fernando Veneranda Presidente Salvatore Matta CampionatoNon disputato Coppa ItaliaPrimo turno 1985-1986 1987-1988 Si invita a seguire il modello di voce Questa voce raccoglie le informazioni riguardanti la Società Sportiva Calcio Palermo nelle competizioni ufficiali della stagione 1986-1987. La società prese parte soltanto alla Coppa Italia, poiché fu radiata il giorno dopo la...

 

Primera División 2020-2021Liga Santander 2020-2021 Competizione Primera División Sport Calcio Edizione 90ª Organizzatore Liga de Fútbol Profesional Date dal 12 settembre 2020al 23 maggio 2021 Luogo  Spagna Partecipanti 20 Formula Girone all'italiana A/R Risultati Vincitore Atlético Madrid(11º titolo) Retrocessioni HuescaReal ValladolidEibar Statistiche Miglior giocatore Jan Oblak[1] Miglior marcatore Lionel Messi (30) Incontri disputati 380 Gol segna...

French painter and sculptor Antoine BourdelleBornAntoine Bourdelle(1861-10-30)30 October 1861Montauban, Tarn-et-Garonne, FranceDied1 October 1929(1929-10-01) (aged 67)Le Vésinet, FranceKnown forSculpture Antoine Bourdelle (30 October 1861 – 1 October 1929), born Émile Antoine Bordelles,[1] was an influential and prolific French sculptor and teacher. He was a student of Auguste Rodin, a teacher of Giacometti and Henri Matisse, and an important figure in the Art Deco movem...

 

ХристианствоБиблия Ветхий Завет Новый Завет Евангелие Десять заповедей Нагорная проповедь Апокрифы Бог, Троица Бог Отец Иисус Христос Святой Дух История христианства Апостолы Хронология христианства Раннее христианство Гностическое христианство Вселенские соборы Н...

 

Canadian animator and film director Jimmy HaywardHayward in 2009Born (1970-09-17) September 17, 1970 (age 53)Kingston, Ontario, CanadaOccupation(s)Director, screenwriter, animatorYears active1994–2016Notable workHorton Hears a WhoJonah Hex James Hayward (born September 17, 1970) is a retired Canadian film director, screenwriter and animator. Biography At a young age, Hayward began his career at Mainframe Entertainment animating and directing commercials. He was one of the original...

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (نوفمبر 2022) قائمة فوربس لأغنى 50 شخصًا في أستراليا هي المسح السنوي لأغنى خمسين شخصًا يقيمون في أستراليا، ونشرته فوربس آسيا في 15 يناير 2019.[1] قدرت الثروة الصافية لأغنى...

 

For related races, see 1964 United States gubernatorial elections. 1964 Washington gubernatorial election ← 1960 November 3, 1964 1968 →   Nominee Daniel J. Evans Albert Rosellini Party Republican Democratic Popular vote 697,256 548,692 Percentage 55.8% 43.9% County resultsEvans:      50–60%      60–70%      70–80%Rosellini:      50–60% Governor before e...

 

U.S. state This article is about the U.S. state. For other uses, see Indiana (disambiguation). Hoosier State redirects here. For the passenger train, see Hoosier State (train). State in the United StatesIndianaStateState of Indiana FlagSealNickname: The Hoosier StateMotto: Crossroads of AmericaAnthem: On the Banks of the Wabash, Far Away[1]Map of the United States with Indiana highlightedCountryUnited StatesBefore statehoodIndiana TerritoryAdmitted to the UnionDecember 11, 1...

إدوين هابل (بالإنجليزية: Edwin Powell Hubble)‏    معلومات شخصية الميلاد 20 نوفمبر 1889 [1][2][3][4][5][6][7]  مارشفيلد  الوفاة 28 سبتمبر 1953 (63 سنة) [8][2][4][5][6][7]  سان مارينو[8]  سبب الوفاة سكتة دماغية صامتة،  وسكتة دماغية ...

 

Museo del Hermitage Эрмитаж (Ermitazh) Patrimonio cultural federal de Rusia UbicaciónPaís Rusia RusiaLocalidad San PetersburgoDirección Muelle del Palacio (38)Coordenadas 59°56′26″N 30°18′49″E / 59.940555555556, 30.313611111111Tipo y coleccionesTipo MuseoHistoria y gestiónCreación 1764Inauguración 1764Director Mijaíl PiotrovskiArquitecto Francesco Bartolomeo RastrelliInformación para visitantesVisitantes 2 898 562 (2013)[1]​Mapa de...

 

Sangju 상주시KotaTranskripsi Korean • Hangul상주시 • Hanja尙州市 • Revised RomanizationSangju-si • McCune-ReischauerSangju-si Bendera SangjuBenderaLokasi di Korea SelatanNegara Korea SelatanRegionYeongnamPembagian administratif1 eup, 17 myeon, 6 dongLuas • Total1.254,82 km2 (48,449 sq mi)Populasi (1 April 2012) • Total101.267 • Kepadatan0,81/km2 (2,1/sq mi) •&...

Questa voce sull'argomento centri abitati del Paraná è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Nova Esperançacomune LocalizzazioneStato Brasile Stato federato Paraná MesoregioneNorte Central Paranaense MicroregioneAstorga AmministrazioneSindacoGerson Zanusso (PSD) dal 2013 TerritorioCoordinate23°10′57″S 52°12′18″W23°10′57″S, 52°12′18″W (Nova Esperança) Altitudine550 m s.l.m. Superficie401...

 

Bob Marley: One LovePoster rilis teatrikalSutradaraReinaldo Marcus GreenProduser Robert Teitel Dede Gardner Jeremy Kleiner Ziggy Marley Rita Marley Cedella Marley Skenario Terence Winter Frank E. Flowers Zach Baylin Reinaldo Marcus Green Cerita Terence Winter Frank E. Flowers Pemeran Kingsley Ben-Adir Lashana Lynch James Norton Penata musikKris BowersSinematograferRobert ElswitPenyuntingPamela MartinPerusahaanproduksi Plan B Entertainment State Street Pictures Tuff Gong Pictures Distrib...

 

Scutosaurus Periode Lopingian~259.1–251.9 jtyl PreЄ Є O S D C P T J K Pg N Kerangka di American Museum of Natural HistoryTaksonomiKerajaanAnimaliaFilumChordataKelasReptiliaOrdoProcolophonomorphaFamiliPareiasauridaeGenusScutosaurus Hartmann-Weinberg, 1930 Tata namaSinonim takson Daftar Pariasaurus karpinskyi (Watson, 1917) Pareiosaurus karpinskii (Amalitskii, 1922) Pareiosaurus elegans (Amalitskii, 1922) Pareiosaurus tuberculatus (Amalitskii, 1922) Pareiosaurus horridus (Amalitskii, 1...

Questa voce sull'argomento pallanuotisti russi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Elena SmurovaNazionalità Russia Altezza166 cm Peso60 kg Pallanuoto Palmarès  Olimpiadi BronzoSydney 2000Pallanuoto  Campionato mondiale BronzoMelbourne 2007Pallanuoto  Coppa del Mondo BronzoTianjing 2006Pallanuoto  Campionato europeo OroBelgrado 2006Pallanuoto OroMalaga 2008Pallanuoto 1 I due numeri indicano le presenze e le reti s...

 

افتتاحية سوناتا للبيانو تصنيف كوشيل رقم 545 لموتسارت المصاحبة أو المُسايرة[1] (بالإنجليزية: Accompaniment)‏ في الموسيقى هي الجزء أو الأجزاء المساعدة في عمل موسيقي. اللفظ يستخدم بشكل معتاد ليشير إلى مراجع الرسيتال الغنائي حيث يقدم آلة مفاتيح اللحن المصاحب، للسوناتات لآلة صولو ...