Huffman-Codelängen-Rechner
Geben Sie die Häufigkeiten 5, 9, 12, 13, 16 und 45 ein und erhalten Sie die optimalen Huffman-Längen 4, 4, 3, 3, 3 und 1: insgesamt 224 Bit und im Mittel 2,24 Bit pro Symbol, neben der Entropie zum Vergleich. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Häufigkeiten
- 5, 9, 12, 13, 16, 45
- Anzahl der Symbole
- 6
- Längen
- 4, 4, 3, 3, 3, 1
- Gesamthäufigkeit
- 100
- Gesamtbits
- 224
Die Huffman-Codierung ist der klassische binäre Präfixcode mit minimaler Redundanz, der in ZIP, PNG, DEFLATE, JPEG und unzähligen Lehrlaboren vorkommt. Je nachdem, wie oft jedes Symbol erscheint, ordnet der Algorithmus häufigen Symbolen kürzere Bitfolgen und seltenen längere zu, sodass kein Code Präfix eines anderen ist. Dieser Huffman-Codelängen-Rechner nimmt eine Liste streng positiver Häufigkeiten entgegen, baut den optimalen Huffman-Baum mit deterministischer Gleichstandsregel und liefert die Codelänge jedes Symbols, die Gesamtzahl codierter Bits für die Multimenge, die mittlere Länge, die Shannon-Entropie in Bits zum Vergleich, die Redundanz und die Kraft-Summe. Ein Ein-Symbol-Alphabet erhält Länge null, den leeren Code, der die Präfixeigenschaft weiterhin erfüllt.
Was optimale Huffman-Längen bedeuten und wie der Baum aufgebaut wird
Ein binärer Präfixcode bildet jedes Alphabetzeichen auf eine Bitfolge ab, sodass kein Code echter Präfix eines anderen ist; diese Eigenschaft erlaubt dem Decoder, einen verketteten Bitstrom ohne Trennzeichen zu parsen. Der Aufbau ist einfach und exakt: Legen Sie jedes Symbol in eine nach Häufigkeit indizierte Prioritätswarteschlange; entnehmen Sie wiederholt die zwei leichtesten Knoten, erzeugen Sie einen Elternknoten mit Gewicht gleich ihrer Summe und legen Sie den Elternknoten wieder ein, bis eine Wurzel übrig bleibt. Die Codelänge eines Blattes ist seine Tiefe in diesem Baum.
Teilen sich zwei Knoten dasselbe Gewicht, löst diese Implementierung den Gleichstand über eine stabile Einfügekennung, sodass identische Eingaben über Laufzeiten hinweg stets dieselben Längenvektoren erzeugen. Für ein Symbol ist die optimale Länge null: der leere Code verbraucht keine Bits und bildet dennoch einen gültigen Präfixcode für ein Singleton-Alphabet. Bei zwei oder mehr Symbolen ist jede Länge mindestens eins.
Die Kraft-Summe von zwei hoch minus jeder Länge ist höchstens eins für jeden vollständigen Präfixcode und wird gemeldet, damit Sie die Kraft-Ungleichung ohne eigenen Baumnachbau prüfen können.
Wo Huffman-Längen helfen, und ihre Grenzen
Kurse zur Informationstheorie und Coding-Interviews nutzen einen Huffman-Codelängen-Rechner, damit Lernende optimale Tiefen und Gesamtbits prüfen können, ohne für jede Häufigkeitstabelle Bäume von Hand zu zeichnen. Kompressionsingenieure vergleichen die mittlere Huffman-Länge mit der Shannon-Entropie beim Dimensionieren von Headern, bei der Wahl statischer oder dynamischer Tabellen oder beim Erklären, warum Codes im DEFLATE-Stil nahe an der Entropieschranke liegen. Fehlgeschlagene Validierung verbraucht kein vorausbezahltes Guthaben.
Halten Sie Alphabete innerhalb des veröffentlichten Maximums, senden Sie nur streng positive Zählungen statt Nullen zu mischen, die Sonderfälle bräuchten, und pinnen Sie das zurückgegebene lengths-Array in Tests.
Anwendungsfälle
Unterricht und Interview-Übungen
Lernende fügen positive Symbolhäufigkeiten ein und prüfen optimale Huffman-Längen, Gesamtbits und mittlere Länge gegen handgezeichnete Bäume.
Prüfungen des Kompressionsentwurfs
Ingenieure vergleichen die mittlere Huffman-Länge mit der Shannon-Entropie auf empirischen Histogrammen, bevor sie statische Tabellen oder feste Codes wählen.
Häufige Fragen
Wie berechne ich Huffman-Codelängen aus Häufigkeiten?
Senden Sie ein nichtleeres Array streng positiver Häufigkeiten.
Welche Länge erhält ein einzelnes Symbol?
Länge null. Ein Ein-Symbol-Alphabet braucht unter einem Präfixcode mit minimaler Redundanz keine Bits; der leere Code ist gültig und optimal.
Sind Nullhäufigkeiten erlaubt?
Lassen Sie ungenutzte Symbole weg oder senden Sie nur streng positive Zählungen.
Liefert das Werkzeug die tatsächlichen 0/1-Bitfolgen?
Nein. Es liefert optimale Längen und Aggregate (Gesamtbits, mittlere Länge, Entropie, Kraft-Summe). Sie können jede Links-/Rechts-Beschriftung zuweisen, die diese Tiefen einhält.
Warum liegt die mittlere Länge über der Entropie?
Die Shannon-Entropie ist eine untere Schranke für die mittlere Länge jedes eindeutig decodierbaren Codes. Die Redundanz ist die mittlere Länge minus die Entropie und daher nie negativ; ein kleiner Wert zeigt, dass der Code nah am Optimum liegt.
Was sagt die Kraft-Summe aus?
Sie addiert zwei hoch minus jede Codelänge. Für jeden vollständigen Präfixcode ist sie höchstens eins, im Beispiel genau 1, so prüfen Sie die Kraft-Ungleichung, ohne den Baum neu aufzubauen.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem 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)Beispiel-Anfrage
{
"frequencies": [
5,
9,
12,
13,
16,
45
]
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.huffman_code_length",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Der kostenlose Browserpfad und die vorausbezahlte API teilen ein reines analytisches Modul, sodass Hausaufgabenorakel und Produktionspipelines bei den Längen nie abweichen. Fehlgeschlagene Validierung wirft invalid_input und wird nicht berechnet.
Was optimale Huffman-Längen bedeuten und wie der Baum aufgebaut wird
Unter allen binären Präfixcodes minimiert ein Huffman-Code die gewichtete Pfadlänge Σ frequency_i mal length_i für einen gegebenen positiven Häufigkeitsvektor. Das zurückgegebene total_bits ist die Summe aus Häufigkeit mal Länge und der exakte Bitaufwand, eine Multimenge mit diesen Zählungen zu codieren. Die mittlere Länge ist total_bits geteilt durch die Gesamthäufigkeit; die Shannon-Entropie in Bits ist eine untere Schranke der mittleren Länge für jeden eindeutig dekodierbaren Code, daher ist redundancy_bits mittlere Länge minus Entropie und innerhalb der Gleitkommapräzision stets nichtnegativ.
Eingabevertrag, Antwortfelder, Aliase und Fehlerverhalten
Kombinieren Sie die Längen mit Ihrer eigenen Bitfolgenzuweisung, wenn Sie explizite 0/1-Codes brauchen; dieser Endpunkt liefert nur Längen und Aggregate, keine besondere Links-null- versus Rechts-null-Beschriftung der Zweige. Senden Sie einen JSON-Körper mit frequencies als nichtleeres Array streng positiver endlicher Zahlen; die Aliase freqs, weights, counts und freq werden akzeptiert, und eine durch Komma oder Leerzeichen getrennte Zeichenkette eignet sich für einfache Textformulare. Optionale labels (Aliase symbols, names, alphabet) können ein paralleles Array nichtleerer Zeichenketten derselben Länge für lesbare Zeilen liefern. Null-, negative, fehlende, leere und nichtendliche Häufigkeiten scheitern mit invalid_input unter Nennung des fehlerhaften Index. Mehr als viertausendsechsundneunzig Symbole werden abgelehnt, damit Worker- und Browserpfade schnell bleiben. Bei Erfolg enthält der Körper symbol_count; das bereinigte frequencies-Array; lengths in derselben Reihenfolge; total_frequency; total_bits; average_length; min_length und max_length; shannon_entropy_bits; redundancy_bits; kraft_sum; method auf huffman_optimal_lengths; formula mit der Tiefenregel; optionale labels, falls geliefert; und symbol_rows mit index, frequency, length, bits und optionalem label pro Symbol. Die klassischen Lehrbuchhäufigkeiten fünf, neun, zwölf, dreizehn, sechzehn und fünfundvierzig ergeben total_bits zweihundertvierundzwanzig und mittlere Länge 2.24 Bits pro Symbol unter dieser deterministischen Kombinationsordnung.
Wo eine Huffman-Längen-API Nutzen stiftet, Preise und Grenzen
Weil die Implementierung reines Parse-Tier-A ist, kostet jeder erfolgreiche Aufruf den veröffentlichten Basispreis $0.002 ohne Modell-Tokens und ohne ausgehendes Netz.
Integrationsbeispiele
CI-Orakel für Codec-Tests
Pipelines pinnen deterministische total_bits- und lengths-Arrays, damit Histogram- oder Alphabetänderungen Tests sofort fehlschlagen lassen.
Technische Fragen
Was kostet der Huffman-Codelängen-Rechner?
Das Browser-Werkzeug ist kostenlos. API-Anfragen nutzen vorausbezahltes KIT-Guthaben zu $0.002 pro erfolgreichem Aufruf; ungültige Eingabe wird nicht berechnet.