Sub-Literal Huffman Coding for Faster DEFLATE Compression

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 power and latency, especially when constructing Huffman code trees for literals, which limits data compression efficiency and speed.

Innovation Solution

The proposed solution involves dividing literal elements into sub-literals and encoding them using separate Huffman code trees, reducing the complexity and latency of the encoding and decoding processes by using smaller Huffman code trees for sub-literals, thereby improving processing speed and efficiency.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Loss of substance

If traditional Huffman coding is used for data compression, then compression ratio is improved, but processing time and complexity increase

Engineering Contradiction:
Improvedata sizeVSAvoidprocessing time
Core Design Contradiction:
Loss of substanceVSLoss of time

Solution Approach 1:

The patent divides the literal encoding space into multiple sub-literal Huffman code trees (e.g., 0-127, 128-255) instead of using a single large code tree. This segmentation reduces the depth and complexity of each individual code tree, enabling faster encoding and decoding operations while maintaining acceptable compression ratios through selective use of sub-literal trees based on frequency analysis

Inventive Principle:
Principle #1Segmentation

2Loss of substance

If traditional Huffman coding is used for data compression, then compression ratio is improved, but device complexity increases

Engineering Contradiction:
Improvedata sizeVSAvoidhardware complexity
Core Design Contradiction:
Loss of substanceVSDevice complexity

Solution Approach 1:

By segmenting the literal Huffman code into multiple smaller sub-literal code trees, the patent reduces the memory requirements and logical complexity of the decoding hardware. Each sub-literal code tree can be implemented with fewer nodes and less memory, making the overall system more suitable for resource-constrained devices while achieving comparable compression through intelligent selection of appropriate sub-trees

Inventive Principle:
Principle #1Segmentation

3Productivity

If smaller Huffman code trees are used for sub-literals, then processing speed is improved, but compression ratio deteriorates

Engineering Contradiction:
Improveprocessing speedVSAvoidcompression ratio
Core Design Contradiction:
ProductivityVSLoss of substance

Solution Approach 1:

The patent implements a dynamic selection mechanism that chooses between different sub-literal Huffman code trees based on the actual frequency distribution of literals in the input data. This dynamic adaptation allows the system to optimize for either speed (by selecting shallower trees when appropriate) or compression ratio (by selecting more optimized trees when data patterns warrant it), thereby resolving the trade-off between processing speed and compression efficiency

Inventive Principle:
Principle #15Dynamics

Data Source

PatentUS11722149B2Deflate compression using sub-literals for reduced complexity Huffman coding
Publication Date: 2023.08.08 NANJING TENAFE ELECTRONIC TECHNOLOGY CO LTD
  • US11722149B2 patent drawing
  • US11722149B2 patent drawing
  • US11722149B2 patent drawing

AI summary

An input sequence that has a plurality of bits is received where the input sequence is associated with a first section of data within a compressed block. The plurality of bits in the input sequence are divided into a first sub-sequence comprising a first set of bits and a second sub-sequence comprising a second set of bits. The first sub-sequence is encoded using a first Huffman code tree to obtain a first codeword and the second sub-sequence is encoded using a second Huffman code tree to obtain a second codeword. Encoded data that includes information associated with the first Huffman code tree, information associated with the second Huffman code tree, the first codeword, and the second codeword is output.