IP Library Granted Patent US 9,298,722
Granted Patent B2
US 9,298,722 · App. 12/568,190 · Granted Mar 29, 2016

Optimal sequential (de)compression of digital data

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,298,722
App. No.
12/568,190
Granted
Mar 29, 2016
Kind
B2
Abstract

Methods and apparatus involve an original data stream arranged as a plurality of symbols. Of those symbols, all possible tuples are identified and the highest or most frequently occurring tuple is determined. A new symbol is created and substituted for each instance of the highest occurring tuple, which results in a new data stream. The new data stream is encoded and its size determined. Also, a size of a dictionary carrying all the original and new symbols is determined. The encoding size, the size of the dictionary and sizes of any other attendant overhead is compared to a size of the original data to see if compression has occurred, and by how much. Upon reaching pre-defined objectives, compression ceases. Decompression occurs oppositely. Other features include resolving ties between equally occurring tuples, path weighted Huffman coding, storing files, decoding structures, and computing arrangements and program products, to name a few.

Claims (33)

1. In a computing system environment, a method of utilizing a computing device for compressing original data arranged as a plurality of symbols, comprising:

recursively and sequentially advancing through the plurality of symbols to determine a most frequently occurring tuple of the plurality of symbols, wherein a tuple comprises at least two symbols;

recursively replacing, in the original data, the determined most frequently occurring tuple by a new symbol to generate a new compressed data stream;

recursively comparing a size of a most recent new compressed data stream and attendant overhead to a size of an immediately preceding new compressed data stream and attendant overhead to determine if a compression goal for the original data has been achieved, wherein the attendant overhead indicates an amount of computing resources required to operate a corresponding compressing operation; and

terminating the recursively determining, replacing, and comparing on determining that the compression goal has been achieved.

2. The method of claim 1 , further including creating a dictionary for every symbol in the plurality of symbols.

3. The method of claim 2 , further including encoding all of the plurality of symbols.

4. The method of claim 3 , further including calculating a size for each of the encoded plurality of symbol.

5. The method of claim 2 , further including calculating a size for the dictionary.

6. The method of claim 1 , further including determining whether a compression goal has been achieved relative to a size of the original data.

7. The method of claim 1 , wherein the determining the most frequently occurring tuple of the plurality of symbols further includes resolving ties between two or more tuples occurring a same number of times.

8. The method of claim 7 , further including using the Pythagorean Theorem when resolving ties.

9. A method utilizing a computing device for compressing original data arranged as a plurality of symbols, comprising:

recursively and sequentially advancing through the original data to determine all possible two-adjoining symbols of the plurality of symbols;

recursively replacing in the original data a new symbol for a determined pair of most frequently occurring two-adjoining symbols of the plurality of symbols to generate a new compressed data stream;

recursively comparing a size of a most recent new compressed data stream and attendant overhead to a size of an immediately preceding new compressed data stream and attendant overhead to determine if a compression goal for the original data has been achieved, wherein the attendant overhead indicates an amount of computing resources required to operate a corresponding compressing operation; and

terminating the recursively determining, replacing, and comparing on determining that the compression goal has been achieved.

10. The method of claim 9 , further including adding an entry for the new symbol to a dictionary already representing the plurality of symbols.

11. The method of claim 9 , further including encoding the new compressed data stream and calculating a size of the new compressed data stream.

12. The method of claim 11 , determining whether the size of the encoded new compressed data stream and associated attendant overhead is smaller or greater than a size of the original data.

13. The method of claim 12 , if the size of the encoded new compressed data stream and the associated attendant overhead is not smaller than the size of the original data, repeating the replacing and the encoding until such time as the size of the new compressed data stream becomes smaller than the size of the original data.

14. In a computing system environment, a method utilizing a computing device for compressing original data arranged as a plurality of symbols, comprising:

recursively advancing through the plurality of symbols sequentially to determine all possible tuples of the plurality of symbols, wherein a tuple comprises two or more symbols;

recursively determining most frequently occurring tuple of the identified all possible tuples;

recursively replacing in the original data a new symbol for the determined most frequently occurring tuple to generate a new compressed data stream;

recursively encoding the new compressed data stream;

recursively comparing a size of a most recent encoded new compressed data stream and attendant overhead to a size of an immediately preceding encoded new compressed data stream and attendant overhead to determine if a compression goal for the original data has been achieved; and

terminating the recursively advancing, determining, replacing, encoding, and comparing on determining that the compression goal has been achieved.

15. The method of claim 14 , further including creating a dictionary for every symbol in the new compressed data stream.

16. The method of claim 15 , further including calculating a size for the encoded new compressed data stream and the dictionary.

17. The method of claim 16 , further including comparing the calculated size of the new compressed data stream to a size of the original data to determine whether a pre-defined compression goal has been achieved.

18. The method of claim 14 , wherein the determining the most frequently occurring tuple further includes resolving ties between two or more tuples occurring a same number of times.

19. The method of claim 15 , further including decompressing the encoded new compressed data stream using the dictionary having every symbol in the new compressed data stream.

Assignments (15)
RELEASE OF SECURITY INTEREST REEL/FRAME 044183/0718 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: MICRO FOCUS LLC (F/K/A ENTIT SOFTWARE LLC); BORLAND SOFTWARE CORPORATION; MICRO FOCUS (US), INC.; SERENA SOFTWARE, INC; ATTACHMATE CORPORATION; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.); NETIQ CORPORATION
Reel/Frame 062746/0399 →
RELEASE OF SECURITY INTEREST REEL/FRAME 035656/0251 Recorded Feb 2, 2023
From: JPMORGAN CHASE BANK, N.A.
To: BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE INC. (F/K/A NOVELL, INC.)
Reel/Frame 062623/0009 →
CORRECTIVE ASSIGNMENT TO CORRECT THE TO CORRECT TYPO IN APPLICATION NUMBER 10708121 WHICH SHOULD BE 10708021 PREVIOUSLY RECORDED ON REEL 042388 FRAME 0386. ASSIGNOR(S) HEREBY CONFIRMS THE NOTICE OF SUCCESSION OF AGENCY. Recorded Jul 26, 2018
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 048793/0832 →
SECURITY INTEREST Recorded Oct 11, 2017
From: ATTACHMATE CORPORATION; BORLAND SOFTWARE CORPORATION; NETIQ CORPORATION; MICRO FOCUS (US), INC.; MICRO FOCUS SOFTWARE, INC.; ENTIT SOFTWARE LLC; ARCSIGHT, LLC; SERENA SOFTWARE, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 044183/0718 →
NOTICE OF SUCCESSION OF AGENCY Recorded May 2, 2017
From: BANK OF AMERICA, N.A., AS PRIOR AGENT
To: JPMORGAN CHASE BANK, N.A., AS SUCCESSOR AGENT
Reel/Frame 042388/0386 →
SECURITY INTEREST Recorded May 13, 2015
From: MICRO FOCUS (US), INC.; BORLAND SOFTWARE CORPORATION; ATTACHMATE CORPORATION; NETIQ CORPORATION; NOVELL, INC.
To: BANK OF AMERICA, N.A.
Reel/Frame 035656/0251 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0216 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034470/0680 →
RELEASE OF SECURITY INTEREST RECORDED AT REEL/FRAME 028252/0316 Recorded Nov 24, 2014
From: CREDIT SUISSE AG
To: NOVELL, INC.
Reel/Frame 034469/0057 →
GRANT OF PATENT SECURITY INTEREST SECOND LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0316 →
GRANT OF PATENT SECURITY INTEREST FIRST LIEN Recorded May 23, 2012
From: NOVELL, INC.
To: CREDIT SUISSE AG, AS COLLATERAL AGENT
Reel/Frame 028252/0216 →
RELEASE OF SECURITY INTEREST IN PATENTS FIRST LIEN (RELEASES RF 026270/0001 AND 027289/0727) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0077 →
RELEASE OF SECURITY IN PATENTS SECOND LIEN (RELEASES RF 026275/0018 AND 027290/0983) Recorded May 22, 2012
From: CREDIT SUISSE AG, AS COLLATERAL AGENT
To: NOVELL, INC.
Reel/Frame 028252/0154 →
GRANT OF PATENT SECURITY INTEREST (SECOND LIEN) Recorded May 13, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026275/0018 →
GRANT OF PATENT SECURITY INTEREST Recorded May 12, 2011
From: NOVELL, INC.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 026270/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2009
From: TEERLINK, CRAIG N.
To: NOVELL, INC.
Reel/Frame 023291/0245 →