Calculateur longueurs Huffman
Saisissez les fréquences 5, 9, 12, 13, 16 et 45 et obtenez les longueurs optimales de Huffman 4, 4, 3, 3, 3 et 1 : 224 bits au total et 2,24 bits par symbole en moyenne, à côté de l'entropie pour comparer. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Fréquences
- 5, 9, 12, 13, 16, 45
- Nombre de symboles
- 6
- Longueurs
- 4, 4, 3, 3, 3, 1
- Fréquence totale
- 100
- Nombre total de bits
- 224
Le codage de Huffman est le code préfixe binaire classique à redondance minimale, utilisé dans ZIP, PNG, DEFLATE, JPEG et d'innombrables travaux pratiques. Selon la fréquence de chaque symbole, l'algorithme attribue des chaînes de bits plus courtes aux symboles fréquents et plus longues aux rares, de sorte qu'aucun code ne soit préfixe d'un autre. Ce calculateur de longueurs de code Huffman accepte une liste de fréquences strictement positives, construit l'arbre de Huffman optimal avec départage déterministe et renvoie la longueur de code de chaque symbole, le nombre total de bits codés pour le multiensemble, la longueur moyenne, l'entropie de Shannon en bits pour comparaison, la redondance et la somme de Kraft. Un alphabet à un seul symbole reçoit la longueur zéro, le code vide qui satisfait encore la propriété de préfixe.
Ce que signifient les longueurs Huffman optimales et comment l'arbre est construit
Un code préfixe binaire associe à chaque symbole de l'alphabet une chaîne de bits telle qu'aucun code n'est un préfixe propre d'un autre ; cette propriété permet au décodeur d'analyser un flux concaténé sans séparateurs. La construction est simple et exacte : placez chaque symbole dans une file de priorité indexée par fréquence ; extrayez de façon répétée les deux nœuds les plus légers, créez un parent dont le poids est leur somme, et réinsérez le parent jusqu'à ce qu'il ne reste qu'une racine.
La longueur de code d'une feuille est sa profondeur dans cet arbre. Lorsque deux nœuds partagent le même poids, cette implémentation départage par un identifiant d'insertion stable, de sorte que des entrées identiques produisent toujours les mêmes vecteurs de longueurs entre runtimes. Pour un symbole, la longueur optimale est zéro : le code vide n'utilise aucun bit et forme encore un code préfixe valide pour un alphabet singleton.
Pour deux symboles ou plus, toute longueur vaut au moins un. La somme de Kraft de deux à la puissance moins chaque longueur vaut au plus un pour tout code préfixe complet et est indiquée pour que vous puissiez vérifier l'inégalité de Kraft sans reconstruire l'arbre vous-même.
Où les longueurs de Huffman servent, et leurs limites
Les cours de théorie de l'information et les entretiens de codage utilisent un calculateur de longueurs de code Huffman pour que les étudiants vérifient profondeurs optimales et bits totaux sans dessiner à la main l'arbre de chaque table de fréquences. Les ingénieurs en compression comparent la longueur moyenne de Huffman à l'entropie de Shannon pour dimensionner les en-têtes, choisir des tables statiques ou dynamiques, ou enseigner pourquoi les codes de style DEFLATE restent proches de la borne d'entropie. Une validation échouée ne consomme pas de solde.
Gardez les alphabets dans le maximum publié, envoyez uniquement des comptes strictement positifs plutôt que de mélanger des zéros qui exigeraient des cas particuliers, et figez le tableau lengths renvoyé dans les tests.
Cas d’usage
Pratique en classe et entretiens
Les étudiants collent des fréquences de symboles positives et vérifient longueurs Huffman optimales, bits totaux et longueur moyenne face aux arbres dessinés à la main.
Contrôles de conception de compression
Les ingénieurs comparent la longueur moyenne de Huffman à l'entropie de Shannon sur des histogrammes empiriques avant de choisir des tables statiques ou des codes fixes.
Questions fréquentes
Comment calculer les longueurs de code Huffman à partir des fréquences ?
Envoyez un tableau non vide de fréquences strictement positives.
Quelle longueur reçoit un symbole unique ?
Longueur zéro. Un alphabet à un symbole n'a besoin d'aucun bit sous un code préfixe à redondance minimale ; le code vide est valide et optimal.
Les fréquences nulles sont-elles autorisées ?
Omettez les symboles inutilisés ou n'envoyez que des comptes strictement positifs.
L'outil renvoie-t-il les chaînes de bits 0/1 réelles ?
Non. Il renvoie les longueurs optimales et des agrégats (bits totaux, longueur moyenne, entropie, somme de Kraft). Vous pouvez attribuer tout étiquetage gauche/droite respectant ces profondeurs.
Pourquoi la longueur moyenne dépasse-t-elle l'entropie ?
L'entropie de Shannon est une borne inférieure de la longueur moyenne de tout code décodable sans ambiguïté. La redondance vaut la longueur moyenne moins l'entropie : elle n'est donc jamais négative, et une petite valeur indique un code proche de l'optimum.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre 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)Exemple de requête
{
"frequencies": [
5,
9,
12,
13,
16,
45
]
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.huffman_code_length",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Le chemin gratuit du navigateur et l'API prépayée partagent un même module analytique pur, afin que les oracles de devoirs et les pipelines de production ne divergent jamais sur les longueurs. Une validation échouée lève invalid_input et n'est pas facturée.
Ce que signifient les longueurs Huffman optimales et comment l'arbre est construit
Parmi tous les codes préfixes binaires, un code de Huffman minimise la longueur de chemin pondérée Σ frequency_i fois length_i pour un vecteur de fréquences positives donné. Le total_bits renvoyé égale la somme de fréquence fois longueur et est le coût exact en bits d'encoder un multiensemble dont les comptes correspondent aux fréquences. La longueur moyenne est total_bits divisé par la fréquence totale ; l'entropie de Shannon en bits est une borne inférieure de la longueur moyenne pour tout code uniquement décodable, donc redundancy_bits égale la longueur moyenne moins l'entropie et reste toujours non négatif dans la précision flottante.
Contrat d'entrée, champs de réponse, alias et comportement d'erreur
Associez les longueurs à votre propre affectation de chaînes de bits si vous avez besoin de codes 0/1 explicites ; ce point de terminaison ne renvoie que les longueurs et les agrégats, pas un étiquetage particulier gauche-zéro versus droite-zéro des branches. Envoyez un corps JSON avec frequencies comme un tableau non vide de nombres finis strictement positifs ; les alias freqs, weights, counts et freq sont acceptés, et une chaîne séparée par des virgules ou des espaces convient aux formulaires texte simples. Des labels optionnels (alias symbols, names, alphabet) peuvent fournir un tableau parallèle de chaînes non vides de même longueur pour des lignes lisibles. Les fréquences nulles, négatives, manquantes, vides ou non finies échouent avec invalid_input en nommant l'index fautif. Plus de quatre mille quatre-vingt-seize symboles sont rejetés pour garder rapides les chemins Worker et navigateur. En succès le corps inclut symbol_count ; le tableau frequencies nettoyé ; lengths dans le même ordre ; total_frequency ; total_bits ; average_length ; min_length et max_length ; shannon_entropy_bits ; redundancy_bits ; kraft_sum ; method égal à huffman_optimal_lengths ; formula résumant la règle de profondeur ; labels optionnels s'ils sont fournis ; et symbol_rows avec index, frequency, length, bits et label optionnel par symbole. Les fréquences classiques de manuel cinq, neuf, douze, treize, seize et quarante-cinq donnent total_bits deux cent vingt-quatre et une longueur moyenne de 2.24 bits par symbole sous cet ordre de combinaison déterministe.
Où une API de longueurs Huffman est utile, tarification et limites
Comme l'implémentation est pure parse de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant.
Cas d'intégration
Oracles CI pour tests de codecs
Les pipelines figent des tableaux déterministes de total_bits et lengths pour qu'un changement d'histogramme ou d'alphabet fasse échouer les tests immédiatement.
Questions techniques
Combien coûte le calculateur de longueurs de code Huffman ?
L'outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.