Calculadora longitudes Huffman
Escriba las frecuencias 5, 9, 12, 13, 16 y 45 y obtenga las longitudes óptimas de Huffman 4, 4, 3, 3, 3 y 1: 224 bits en total y 2,24 bits por símbolo de media, junto a la entropía para comparar. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Frecuencias
- 5, 9, 12, 13, 16, 45
- Cantidad de símbolos
- 6
- Longitudes
- 4, 4, 3, 3, 3, 1
- Frecuencia total
- 100
- Bits totales
- 224
La codificación Huffman es el código prefijo binario de mínima redundancia clásico, usado en ZIP, PNG, DEFLATE, JPEG y en innumerables laboratorios docentes. Según la frecuencia de cada símbolo, el algoritmo asigna cadenas de bits más cortas a los símbolos frecuentes y más largas a los raros, de modo que ningún código sea prefijo de otro. Esta calculadora de longitudes de código Huffman acepta una lista de frecuencias estrictamente positivas, construye el árbol de Huffman óptimo con desempate determinista y devuelve la longitud de código de cada símbolo, el número total de bits codificados del multiconjunto, la longitud media, la entropía de Shannon en bits para comparar, la redundancia y la suma de Kraft. Un alfabeto de un solo símbolo recibe longitud cero, el código vacío que sigue cumpliendo la propiedad de prefijo.
Qué significan las longitudes Huffman óptimas y cómo se construye el árbol
Un código prefijo binario asigna a cada símbolo del alfabeto una cadena de bits tal que ningún código sea prefijo propio de otro; esa propiedad permite al decodificador leer un flujo concatenado sin separadores. La construcción es simple y exacta: se coloca cada símbolo en una cola de prioridad por frecuencia; se extraen de forma repetida los dos nodos más ligeros, se crea un padre cuyo peso es su suma y se reinserta el padre hasta que quede una sola raíz.
La longitud de código de una hoja es su profundidad en ese árbol. Cuando dos nodos comparten el mismo peso, esta implementación desempata con un identificador de inserción estable, de modo que entradas idénticas producen siempre los mismos vectores de longitudes entre runtimes. Para un solo símbolo la longitud óptima es cero: el código vacío no usa bits y sigue siendo un código prefijo válido para un alfabeto singleton.
Con dos o más símbolos toda longitud es al menos uno. La suma de Kraft de dos elevado a menos cada longitud es como máximo uno en cualquier código prefijo completo y se informa para que usted pueda comprobar la desigualdad de Kraft sin reconstruir el árbol.
Dónde ayudan las longitudes de Huffman y sus límites
Los cursos de teoría de la información y las entrevistas de programación usan una calculadora de longitudes de código Huffman para que el alumnado compruebe profundidades óptimas y bits totales sin dibujar a mano el árbol de cada tabla de frecuencias. Los ingenieros de compresión comparan la longitud media de Huffman con la entropía de Shannon al dimensionar cabeceras, elegir tablas estáticas o dinámicas, o enseñar por qué los códigos al estilo DEFLATE se acercan a la cota de entropía. La validación fallida no consume saldo.
Mantenga alfabetos dentro del máximo publicado, envíe solo cuentas estrictamente positivas en lugar de mezclar ceros que exigirían casos especiales, y fije en pruebas el array lengths devuelto.
Qué puede hacer con ella
Práctica de aula y entrevistas
El alumnado pega frecuencias de símbolos positivas y verifica longitudes Huffman óptimas, bits totales y longitud media frente a árboles dibujados a mano.
Comprobaciones de diseño de compresión
Los ingenieros comparan la longitud media de Huffman con la entropía de Shannon en histogramas empíricos antes de elegir tablas estáticas o códigos fijos.
Preguntas frecuentes
¿Cómo calculo longitudes de código Huffman a partir de frecuencias?
Envíe un array no vacío de frecuencias estrictamente positivas.
¿Qué longitud recibe un único símbolo?
Longitud cero. Un alfabeto de un símbolo no necesita bits bajo un código prefijo de mínima redundancia; el código vacío es válido y óptimo.
¿Se permiten frecuencias cero?
Omita símbolos no usados o envíe solo cuentas estrictamente positivas.
¿La herramienta devuelve las cadenas de bits 0/1 reales?
No. Devuelve longitudes óptimas y agregados (bits totales, longitud media, entropía, suma de Kraft). Usted puede asignar cualquier etiquetado izquierda/derecha que respete esas profundidades.
¿Por qué la longitud media queda por encima de la entropía?
La entropía de Shannon es un límite inferior para la longitud media de cualquier código que se pueda decodificar sin ambigüedad. La redundancia es la longitud media menos la entropía, así que nunca es negativa; un valor pequeño indica que el código está cerca del óptimo.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/dev/huffman-code-length \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"frequencies":[5,9,12,13,16,45]}'const res = await fetch("https://api.kit.forhosting.com/dev/huffman-code-length", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"frequencies": [
5,
9,
12,
13,
16,
45
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/huffman-code-length",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"frequencies": [
5,
9,
12,
13,
16,
45
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/huffman-code-length", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"frequencies":[5,9,12,13,16,45]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"frequencies":[5,9,12,13,16,45]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/huffman-code-length", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"frequencies": [
5,
9,
12,
13,
16,
45
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.huffman_code_length",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
La ruta gratuita del navegador y la API de prepago comparten un mismo módulo analítico puro, de modo que oráculos de deberes y tuberías de producción nunca discrepan en las longitudes. La validación fallida lanza invalid_input y no se factura.
Qué significan las longitudes Huffman óptimas y cómo se construye el árbol
Entre todos los códigos prefijo binarios, un código de Huffman minimiza la longitud de camino ponderada Σ frequency_i por length_i para un vector de frecuencias positivas dado. El total_bits devuelto es la suma de frecuencia por longitud y es el coste exacto en bits de codificar un multiconjunto cuyas cuentas coinciden con las frecuencias. La longitud media es total_bits dividido por la frecuencia total; la entropía de Shannon en bits es una cota inferior de la longitud media para cualquier código unívocamente decodificable, de modo que redundancy_bits es la longitud media menos la entropía y es siempre no negativa dentro de la precisión flotante.
Contrato de entrada, campos de respuesta, alias y comportamiento de error
Envíe un cuerpo JSON con frequencies como un array no vacío de números finitos estrictamente positivos; se aceptan los alias freqs, weights, counts y freq, y una cadena separada por comas o espacios sirve en formularios de texto simples. Las labels opcionales (alias symbols, names, alphabet) pueden aportar un array paralelo de cadenas no vacías de la misma longitud para filas legibles. Frecuencias cero, negativas, ausentes, vacías o no finitas fallan con invalid_input indicando el índice erróneo. Más de cuatro mil noventa y seis símbolos se rechazan para mantener rápidos los caminos de Worker y del navegador. En caso de éxito el cuerpo incluye symbol_count; el array frequencies limpio; lengths en el mismo orden; total_frequency; total_bits; average_length; min_length y max_length; shannon_entropy_bits; redundancy_bits; kraft_sum; method igual a huffman_optimal_lengths; formula que resume la regla de profundidad; labels opcionales si se aportan; y symbol_rows con index, frequency, length, bits y label opcional por símbolo. Las frecuencias clásicas de libro cinco, nueve, doce, trece, dieciséis y cuarenta y cinco dan total_bits doscientos veinticuatro y longitud media 2.24 bits por símbolo bajo este orden de combinación determinista. Combine las longitudes con su propia asignación de cadenas de bits si necesita códigos 0/1 explícitos; este endpoint solo devuelve longitudes y agregados, no un etiquetado concreto izquierda-cero frente a derecha-cero de las ramas.
Dónde aporta valor una API de longitudes Huffman, precios y límites
Como la implementación es parse de nivel A puro, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red saliente.
Casos de integración
Oráculos de CI para pruebas de códecs
Las tuberías fijan arrays deterministas de total_bits y lengths para que cambios de histograma o alfabeto fallen las pruebas de inmediato.
Preguntas técnicas
¿Cuánto cuesta la calculadora de longitudes de código Huffman?
La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada exitosa; la entrada inválida no se factura.