LZSS Multi-Dictionary Compression for Variable Window Selection
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
Existing data compression algorithms, such as the deflate algorithm, face inefficiencies due to static window and dictionary sizes that do not optimize compression ratios, leading to suboptimal compression ratios and increased space requirements for transmitting tree definitions.
Innovation Solution
A method that generates multiple 'virtual' dictionary and window sizes to determine the optimal combination for maximum compression, allowing for dynamic adjustment of dictionary and window sizes during the compression process, and optionally performs a post-processing pass to further optimize the output.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Productivity
If a fixed Huffman coding tree is used, then the encoding process is simpler and faster, but the compression ratio is lower because the tree may not accurately represent the actual probabilities
Solution Approach 1:
The patent implements dynamic dictionary and window sizes that can be adjusted during compression based on the actual data characteristics. Instead of using static sizes, the system dynamically selects from multiple predefined sizes (e.g., 1K, 2K, 4K, 8K, 16K, 32K, 64K, 128K) to optimize compression ratios for different data patterns while maintaining manageable encoding complexity.
Solution Approach 2:
The system changes the parameters of dictionary and window sizes during the compression process. By examining data characteristics and selecting from multiple predefined size combinations, the patent adjusts these parameters to achieve better compression ratios without requiring the transmission of full tree definitions, thus balancing compression efficiency with encoding simplicity.
2Productivity
If an optimal Huffman coding tree is generated and transmitted, then the compression ratio improves, but the space required to send the tree definition reduces the compression ratio
Solution Approach 1:
The patent extracts and transmits only the essential elements needed for decompression - specifically the selected dictionary and window size parameters - rather than transmitting the complete Huffman tree definition. This selective transmission approach maintains improved compression ratios while significantly reducing the overhead space required for tree definition transmission.
Solution Approach 2:
Instead of transmitting the full optimal Huffman tree, the system transmits a partial representation (the size parameters) that is sufficient for the decompressor to reconstruct the necessary information. This partial transmission approach achieves the desired compression improvement without the excessive space cost of full tree definition transmission.
3Productivity
If static window and dictionary sizes are used, then the algorithm is simpler to implement, but the compression ratio is suboptimal because the sizes may not be optimal for every data stream
Solution Approach 1:
The patent implements dynamic selection of dictionary and window sizes from multiple predefined options based on the characteristics of the input data stream. The system examines the data and selects the most appropriate size combination (e.g., 1K-1K, 2K-2K, 4K-4K, etc.) to optimize compression ratios for different data patterns, moving beyond static single-size implementations.
Solution Approach 2:
The patent segments the compression process into multiple passes or evaluations, examining different dictionary and window size combinations to determine which provides the best compression for the specific data stream. This segmentation approach allows the system to find optimal parameters without requiring a single complex adaptive algorithm, balancing simplicity with performance.
Data Source
AI summary
A method and apparatus for compressing data is described. An input string to be compressed is received. The input string is encoded with compressor using a compression algorithm using several sizes of dictionaries and windows. The compressor processes the input string with a selected size of the dictionary and window yielding the most compression of the input string among the different sizes of dictionaries and windows.


