Summary by TwinMind · 6m 30s
Summary by TwinMind · 6m 30s

How Computers Compress Text: Huffman Coding and Huffman Trees

How Computers Compress Text: Huffman Coding and Huffman Trees

Tom Scott

Tom Scott

Text Storage Basics

  • English text stored as 8 bits (1 byte) per character
  • 256 possible combinations of ones/zeros
  • Covers English alphabet, numbers, punctuation
  • 8 bits chosen: big enough for American computers, power of 2 for programming efficiency
  • Fixed bits per character enables fast searching, easy length calculation
  • Computers see continuous stream of ones/zeros without spaces

Compression Challenge

  • Goal: fit maximum text into minimum bits
  • Initial approach: assign most common characters to smaller bit arrangements
    • Space bar = 0
    • Lowercase 'e' = 1
    • Lowercase 't' = 00
  • Problem: ambiguity in decoding (00 could be 't' or two spaces)
  • No way to distinguish without separators

Huffman Coding Solution (1952)

  • Invented by mathematician David Huffman
  • Foundation of modern text compression
  • Creates unambiguous variable-length codes

Huffman Algorithm Process

  • Count character frequency in text
  • Create ordered list by usage
  • Build Huffman tree:
    • Take two least-used characters as bottom branches
    • Connect with sum of frequencies
    • Add sum back to list in proper position
    • Repeat until single item remains at top
  • Assign codes: left path = 0, right path = 1
  • Common characters get shorter codes, rare characters get longer codes

Practical Example: "Wild Wild West" Lyrics

  • Original: 3,684 characters, nearly 30,000 bits
  • Compressed to just over 20,000 bits
  • 30% size reduction achieved
  • Uppercase 'W': 5 bits instead of 8 (141 occurrences)
  • Lowercase 'i': 4 bits (more common)
  • 'K': 7 bits (less common)
  • Some letters exceed 8 bits but rarely used

Decompression Process

  • Read bit stream left to right
  • Follow tree: 0 = left fork, 1 = right fork
  • When reaching letter, output and restart from top
  • Unambiguous path guarantees correct decoding

Efficiency and Limitations

  • Huffman coding mathematically optimal for single characters
  • Must store translation tree with compressed data
  • Inefficient for short texts due to tree overhead
  • Modern improvements work on character blocks larger than one
  • Basis for ZIP file compression algorithms