Sub-Literal Huffman Trees for Lower-Complexity DEFLATE Coding

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Existing Huffman coding techniques used in DEFLATE file formats are complex and time-consuming, requiring significant processing time and resources, especially when constructing Huffman code trees for literals, which limits their efficiency in data compression and decompression.

Innovation Solution

The proposed solution involves dividing literal elements into sub-literals and encoding each sub-literal using separate Huffman code trees, reducing the complexity and latency of the encoding and decoding processes by using smaller, more efficient Huffman code trees for sub-literals.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of time

If traditional Huffman coding is used for DEFLATE compression, then compression capability is maintained, but processing time and computational complexity increase

Engineering Contradiction:
Improveprocessing timeVSAvoidHuffman code tree construction complexity
Core Design Contradiction:
Loss of timeVSDevice complexity

Solution Approach 1:

The patent divides the traditional single Huffman code tree into multiple separate Huffman code trees, each handling a specific subset of literal values (e.g., one tree for 0-255, another for 256-511). This segmentation reduces the complexity of each individual tree construction and lookup operations, directly addressing the contradiction by lowering computational burden while preserving compression functionality through the combined use of multiple specialized trees.

Inventive Principle:
Principle #1Segmentation

2Productivity

If traditional Huffman coding with large code trees is used, then compression ratio is optimized, but hardware resources and latency increase

Engineering Contradiction:
Improvecompression speedVSAvoidhardware resources
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

By segmenting the large Huffman code tree into multiple smaller trees, the patent reduces the hardware resources required for each tree construction and storage. Each smaller tree requires less memory and processing power, enabling faster lookup operations and reduced latency, thus improving compression speed while decreasing hardware resource requirements.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent applies partial action by using multiple specialized Huffman trees only for specific ranges of literal values rather than constructing a single comprehensive tree for all possible values. This partial approach to Huffman coding achieves sufficient compression for common literal ranges while avoiding the excessive hardware resources and latency that would result from a complete universal tree.

Inventive Principle:
Principle #16Partial or excessive action

3Device complexity

If separate Huffman code trees are used for sub-literals, then encoding complexity is reduced, but compression ratio may be slightly degraded

Engineering Contradiction:
Improveencoding complexityVSAvoidcompression ratio
Core Design Contradiction:
Device complexityVSLoss of information

Solution Approach 1:

The patent applies local quality by creating specialized Huffman code trees optimized for specific local ranges of literal values (e.g., one tree optimized for common ASCII characters 0-255, another for extended characters 256-511). Each local tree is constructed with optimal code assignments for its specific range, reducing encoding complexity within that range while maintaining good compression ratios for the local data distribution.

Inventive Principle:
Principle #3Local quality

Data Source

PatentUS11469773B1Deflate compression using sub-literals for reduced complexity Huffman coding
Publication Date: 2022.10.11 NANJING TENAFE ELECTRONIC TECHNOLOGY CO LTD
  • US11469773B1 patent drawing
  • US11469773B1 patent drawing
  • US11469773B1 patent drawing

AI summary

A literal element that has a plurality of bits is received. The plurality of bits in the literal element is divided into a first sub-literal comprising a first set of bits and a second sub-literal comprising a second set of bits. The first sub-literal is encoded using a first Huffman code tree to obtain a first sub-literal codeword; the second sub-literal is encoded using a second Huffman code tree to obtain a second sub-literal codeword. Encoded data that includes information associated with the first Huffman code tree, information associated with the second Huffman code tree, the first sub-literal codeword, and the second sub-literal codeword is output.