← Back to Patent Explorer
US5525982A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and means for character string pattern matching for compression and the like using minimal cycles per character

Assignee: International Business Machines Corp
•
Filing: 1994-04-15
•
Granted: 1996-06-11
•
Expires: 2014-04-15
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and means for ascertaining maximal length pattern matches of K characters per cycle between character strings in a reduced amount of time using a pipeline like concurrent dataflow model in which a recursive exhaustive greedy comparison matching between the strings in consistent direction yields a parsing of the longest matches, the recursion being constrained by relations among K, the match length L, and a tracking variable J, said constraints governing further recursions ascertaining prefix extensions from one string to another and any intra-string pattern matches. Embodiments processing K equal to one, two, or three characters at a time are disclosed.

Inventors

  • 👤 Joe-Ming Cheng
  • 👤 Yancy Cheng

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-04 21:42
CPC Classifications
H; H03; H03M; H03M7/00; H03M7/30; H03M7/3084; H03M7/3086; G; G06; G06T; G06T9/00; G06T9/005

Claims Analysis

Total Claims: 24
Claim 1
Independent Claim 146 words
A cyclic computer implemented method for providing pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, comprising the steps of: (a) during each cycle, simultaneously parsing two or more maximal length substrings including any substring prefix extending from the first to the second character string by executing an exhaustive comparison match over and between the first and second strings in the buffers consistently in a selected one of either a forward or backward direction across an ordered set of nested intervals; (b) continuing or terminating a previous string prefix parsed during step (a) according as to whether the characters continue to match over a recursion interval in the set next in order; and (c) determining a new prefix for the next cycle from the parsed substrings.
Claim 2
Dependent Claim 146 words
A cyclic computer implemented method for providing pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, comprising the steps of: (a) during each cycle, simultaneously parsing two or more maximal length substrings including any substring prefix extending from the first to the second character string by executing an exhaustive comparison match over and between the first and second strings in the buffers consistently in a selected one of either a forward or backward direction across an ordered set of nested intervals; (b) continuing or terminating a previous string prefix parsed during step (a) according as to whether the characters continue to match over a recursion interval in the set next in order; and (c) determining a new prefix for the next cycle from the parsed substrings.
Claim 3
Dependent Claim 30 words
The method according to claim 1, wherein in step (a) the recursive greedy comparison match is in the backward direction and further includes parsing any substrings in the lookahead buffer.
Claim 4
Dependent Claim 147 words
A cyclic computer implemented method for providing pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, comprising the steps of: (a) during each cycle, simultaneously ascertaining two or more maximal substring pattern matches between characters of the second string and characters of the first string including any prefix extensions from the first to the second strings by executing an exhaustive comparison match in the same direction consistent1y on substrings of characters over and between said second and first strings; (b) denoting the locations of any ascertained maximal substring pattern matches in the look-ahead and history buffers, and transferring the characters terminating a prefix extension during the cycle from the lookahead buffer to the history buffer; and (c) repeating step (b) until the second character string becomes exhausted.
Claim 5
Dependent Claim 147 words
A cyclic computer implemented method for providing pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, comprising the steps of: (a) during each cycle, simultaneously ascertaining two or more maximal substring pattern matches between characters of the second string and characters of the first string including any prefix extensions from the first to the second strings by executing an exhaustive comparison match in the same direction consistent1y on substrings of characters over and between said second and first strings; (b) denoting the locations of any ascertained maximal substring pattern matches in the look-ahead and history buffers, and transferring the characters terminating a prefix extension during the cycle from the lookahead buffer to the history buffer; and (c) repeating step (b) until the second character string becomes exhausted.
Claim 6
Dependent Claim 49 words
The method according to claim 3, wherein in step (a) the recursion direction is backward and emanating over characters of the second string in the lookahead buffer in a nested order of increasing numbers of characters extending through and including characters of the first string in the history buffer.
Claim 7
Dependent Claim 49 words
The method according to claim 3, wherein in step (a) the recursion direction is forward and emanating over characters of the first string in the history buffer in a nested order of increasing numbers of characters extending through and including characters of the second string in the lookahead buffer.
Claim 8
Dependent Claim 131 words
A computer implemented method for providing pattern match indication between a first character string stored in a sliding window history buffer and a second string of characters stored in a lookahead buffer, comprising the steps of: (a)(1) during each cycle, simultaneously ascertaining two or more maximal substring pattern matches between and among characters of the second string and characters of the first string including any prefix extensions from the first to the second strings by executing a backward exhaustive comparison match on substrings of characters over and between said second and first strings located in the buffers; and (2) denoting the locations of any ascertained maximal substring pattern matches in the look-ahead and history buffers, and, transferring the characters processed during the cycle from the look-ahead buffer to the history buffer.
Claim 9
Dependent Claim 131 words
A computer implemented method for providing pattern match indication between a first character string stored in a sliding window history buffer and a second string of characters stored in a lookahead buffer, comprising the steps of: (a)(1) during each cycle, simultaneously ascertaining two or more maximal substring pattern matches between and among characters of the second string and characters of the first string including any prefix extensions from the first to the second strings by executing a backward exhaustive comparison match on substrings of characters over and between said second and first strings located in the buffers; and (2) denoting the locations of any ascertained maximal substring pattern matches in the look-ahead and history buffers, and, transferring the characters processed during the cycle from the look-ahead buffer to the history buffer.
Claim 10
Dependent Claim 81 words
The method according to either claim 3 or claim 6, further comprising the steps of: after the step of denoting and before the step of repeating, appending a pointer to an output string responsive to a signal indicative of the location of maximal pattern match termination, said pointer indicating the prior occurrence of the matched pattern in the sliding window history buffer, a pattern string match of null length being appended to the output string as a token and raw character.
Claim 11
Dependent Claim 39 words
The method according to claim 6, wherein step (a1) further includes the step of ascertaining any maximal substring pattern matches among characters of the second string in the lookahead buffer by recursively executing a backward exhaustive greedy search therefor.
Claim 12
Dependent Claim 248 words
A computer implemented method for providing pattern match indication between a first character string b=b 1 ,b 2 , . . . ,b k stored in a sliding window history buffer and an input string a=a 1 ,a 2 , . . . ,a i ,a i+1 , . . . , said method being operable at the rate of one character per recursion, comprising the steps of: (a) during an i-th recursion, comparison matching a i from the input string in parallel with the contents b of the history buffer, writing a Boolean value m i connoting a character match or mismatch into each counterpart stage of a first shift register, and writing a i into said history buffer; (b) during an (i+1)st recursion, repeating step (a), a i+1 being the next input string character, concurrently writing the Boolean value m i from each stage of the first shift register into a counterpart stage of a second shift register offset by a predetermined number of stages, writing the Boolean value m i+1 into the first shift register, and forming a Boolean signal as a disjunction of (m i AND m i+1 ) summed over each pair of stages of the first and second shift registers such that a Boolean value of a first kind is indicative of pattern match continuation and a Boolean value of a second kind is indicative of pattern match termination; and (c) repeating steps (a) and (b) until the input character string terminates.
Claim 13
Dependent Claim 248 words
A computer implemented method for providing pattern match indication between a first character string b=b 1 ,b 2 , . . . ,b k stored in a sliding window history buffer and an input string a=a 1 ,a 2 , . . . ,a i ,a i+1 , . . . , said method being operable at the rate of one character per recursion, comprising the steps of: (a) during an i-th recursion, comparison matching a i from the input string in parallel with the contents b of the history buffer, writing a Boolean value m i connoting a character match or mismatch into each counterpart stage of a first shift register, and writing a i into said history buffer; (b) during an (i+1)st recursion, repeating step (a), a i+1 being the next input string character, concurrently writing the Boolean value m i from each stage of the first shift register into a counterpart stage of a second shift register offset by a predetermined number of stages, writing the Boolean value m i+1 into the first shift register, and forming a Boolean signal as a disjunction of (m i AND m i+1 ) summed over each pair of stages of the first and second shift registers such that a Boolean value of a first kind is indicative of pattern match continuation and a Boolean value of a second kind is indicative of pattern match termination; and (c) repeating steps (a) and (b) until the input character string terminates.
Claim 14
Dependent Claim 281 words
A computer implemented method for compressing an input string a=a 1 ,a 2 , . . . ,a i ,a i+1 , . . . , into a partially ordered output string at the rate of one character per encoding cycle, comprising the steps of: (a) during an i-th recursion, comparison matching a i from the input string in parallel with the contents b=b i ,b 2 , . . . ,b k of a sliding window history buffer, writing a Boolean value m i connoting a match or mismatch into each counterpart stage of a first shift register, and shifting a i into the history buffer; (b) during an (i+1)st recursion, repeating step (a) with respect to the next input character a i+1 , concurrently writing the contents m i from the first shift register into counterpart stages of a second shift register offset by a predetermined number of stages, writing the Boolean value m i+1 into the first register, and forming a Boolean signal as a disjunction of (m i AND m i+1 ) summed over each stage of the first and second registers such that a Boolean value of a first kind is indicative of pattern match continuation and a Boolean value of a second kind is indicative of pattern match termination; (c) appending a pointer to the output string responsive to the signal indicative of pattern match termination, said pointer indicating the prior occurrence of the matched pattern in the sliding window history buffer, a pattern string match of null length being appended to the output string as a token and raw character; and (d) repeating steps (a) through (c) until the input character string becomes exhausted.
Claim 15
Dependent Claim 281 words
A computer implemented method for compressing an input string a=a 1 ,a 2 , . . . ,a i ,a i+1 , . . . , into a partially ordered output string at the rate of one character per encoding cycle, comprising the steps of: (a) during an i-th recursion, comparison matching a i from the input string in parallel with the contents b=b i ,b 2 , . . . ,b k of a sliding window history buffer, writing a Boolean value m i connoting a match or mismatch into each counterpart stage of a first shift register, and shifting a i into the history buffer; (b) during an (i+1)st recursion, repeating step (a) with respect to the next input character a i+1 , concurrently writing the contents m i from the first shift register into counterpart stages of a second shift register offset by a predetermined number of stages, writing the Boolean value m i+1 into the first register, and forming a Boolean signal as a disjunction of (m i AND m i+1 ) summed over each stage of the first and second registers such that a Boolean value of a first kind is indicative of pattern match continuation and a Boolean value of a second kind is indicative of pattern match termination; (c) appending a pointer to the output string responsive to the signal indicative of pattern match termination, said pointer indicating the prior occurrence of the matched pattern in the sliding window history buffer, a pattern string match of null length being appended to the output string as a token and raw character; and (d) repeating steps (a) through (c) until the input character string becomes exhausted.
Claim 16
Dependent Claim 75 words
The method according to claim 10, wherein a current portion of the input string of characters is located in a lookahead buffer, and further wherein steps (a) and (b) include the substeps of executing the respective recursions in a backward direction and emanating over characters of the input string in the lookahead buffer in a nested order of increasing numbers of characters extending through and including characters of the string located in the history buffer.
Claim 17
Dependent Claim 296 words
A cyclic computer implemented method for providing K character pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, comprising during each cycle the steps of: (a) parsing one or more maximal length substrings including any substring prefix extending from the first to the second character string by executing a recursive exhaustive greedy comparison match over and between the first and second strings in the buffers consistently in a selected one of either a forward or backward direction across an ordered set of nested recursion intervals, step (a) further including the substeps of: (1) updating a prefix register with a K+1 character prefix extension if a backward or forward greedy comparison match results in a match length L=K+1, (2) updating the prefix register with the longest match found, assigning a tracking variable J=(K-L) if the match length L<K+1 and if the longest match L=1, (3) if J>0 for a backward recursive comparison match or if J<K for a forward comparison match, identifying the longest pattern matching length L' between the first and second strings by re-executing a recursive exhaustive greedy comparison match over and between the first and second strings in the buffers in the same direction as originally executed until either L'=J+1, terminating the pattern matching, or, recurring the pattern match on this substep; (b) denoting the locations of any ascertained maximal substring pattern matches in the look-ahead and history buffers, transferring the characters terminating a prefix extension during the cycle from the lookahead buffer to the history buffer, and rendering the prefix register contents available for processing external to the method; and (c) repeating steps (a) and (b) until the second character string becomes exhausted.
Claim 18
Dependent Claim 296 words
A cyclic computer implemented method for providing K character pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, comprising during each cycle the steps of: (a) parsing one or more maximal length substrings including any substring prefix extending from the first to the second character string by executing a recursive exhaustive greedy comparison match over and between the first and second strings in the buffers consistently in a selected one of either a forward or backward direction across an ordered set of nested recursion intervals, step (a) further including the substeps of: (1) updating a prefix register with a K+1 character prefix extension if a backward or forward greedy comparison match results in a match length L=K+1, (2) updating the prefix register with the longest match found, assigning a tracking variable J=(K-L) if the match length L<K+1 and if the longest match L=1, (3) if J>0 for a backward recursive comparison match or if J<K for a forward comparison match, identifying the longest pattern matching length L' between the first and second strings by re-executing a recursive exhaustive greedy comparison match over and between the first and second strings in the buffers in the same direction as originally executed until either L'=J+1, terminating the pattern matching, or, recurring the pattern match on this substep; (b) denoting the locations of any ascertained maximal substring pattern matches in the look-ahead and history buffers, transferring the characters terminating a prefix extension during the cycle from the lookahead buffer to the history buffer, and rendering the prefix register contents available for processing external to the method; and (c) repeating steps (a) and (b) until the second character string becomes exhausted.
Claim 19
Dependent Claim 23 words
The method according to claim 12, wherein the K constitutes any positive integer number of characters less than the second character string length.
Claim 20
Dependent Claim 76 words
The method according to claim 12, wherein said method further comprises the steps of: (d) appending a pointer to an output string responsive to a signal indicative of the location of maximal pattern match termination as resident in the prefix register, said pointer indicating the prior occurrence of the matched pattern in the sliding window history buffer, a pattern string match of null length being appended to the output string as a token and raw character.
Claim 21
Dependent Claim 196 words
A cyclic apparatus for providing pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, said apparatus comprising means for transferring a predetermined number of characters from the lookahead buffer and displacing a like number the oldest characters in the history buffer, said apparatus further comprising means for simultaneously parsing two or more maximal length substrings including any substring prefix extending from the first to the second character string by executing an exhaustive comparison match over and between the first and second strings in the buffers consistent1y in a selected one of either a forward or backward direction in a single cycle; means for continuing or terminating a previous string prefix parsed by the means for parsing according as to whether the characters continue to match over the recursion interval in the set next in order, said means including means for transferring the number of characters terminating a prefix extension in the second string in the lookahead buffer to the history buffer; and means for determining a new prefix for the next cycle from the parsed substrings.
Claim 22
Dependent Claim 196 words
A cyclic apparatus for providing pattern match indication between substrings of a first character string stored in a sliding window history buffer and substrings of a second character string stored in a lookahead buffer, said apparatus comprising means for transferring a predetermined number of characters from the lookahead buffer and displacing a like number the oldest characters in the history buffer, said apparatus further comprising means for simultaneously parsing two or more maximal length substrings including any substring prefix extending from the first to the second character string by executing an exhaustive comparison match over and between the first and second strings in the buffers consistent1y in a selected one of either a forward or backward direction in a single cycle; means for continuing or terminating a previous string prefix parsed by the means for parsing according as to whether the characters continue to match over the recursion interval in the set next in order, said means including means for transferring the number of characters terminating a prefix extension in the second string in the lookahead buffer to the history buffer; and means for determining a new prefix for the next cycle from the parsed substrings.
Claim 23
Dependent Claim 196 words
In a system having a content addressable memory (CAM) for storing recent past characters in a string and a look ahead buffer for storing characters currently being processed and pattern matching means for ascertaining the locations in the CAM having a pattern of recent past characters matching a pattern of characters in the look ahead buffer, wherein the improvement comprises: (a) means including the pattern matching means for simultaneously parsing two or more maximal length substrings including any substrings within the lookahead buffer and any substring prefix of characters extending from the lookahead buffer to the CAM by executing a backward exhaustive comparison match over and between the character string located in the lookahead buffer and the character string located in the CAM in a single cycle; (b) means for denoting the locations of any ascertained maximal substring pattern matches in the look-ahead buffer and the CAM, tranferring the characters terminating a prefix extension during the cycle from the lookahead buffer to CAM, and rendering the prefix register contents available for processing external to the system; and (c) means for invoking the parsing means and the location denoting means until the second character string becomes exhausted.
Claim 24
Dependent Claim 196 words
In a system having a content addressable memory (CAM) for storing recent past characters in a string and a look ahead buffer for storing characters currently being processed and pattern matching means for ascertaining the locations in the CAM having a pattern of recent past characters matching a pattern of characters in the look ahead buffer, wherein the improvement comprises: (a) means including the pattern matching means for simultaneously parsing two or more maximal length substrings including any substrings within the lookahead buffer and any substring prefix of characters extending from the lookahead buffer to the CAM by executing a backward exhaustive comparison match over and between the character string located in the lookahead buffer and the character string located in the CAM in a single cycle; (b) means for denoting the locations of any ascertained maximal substring pattern matches in the look-ahead buffer and the CAM, tranferring the characters terminating a prefix extension during the cycle from the lookahead buffer to CAM, and rendering the prefix register contents available for processing external to the system; and (c) means for invoking the parsing means and the location denoting means until the second character string becomes exhausted.

References Cited (Backward Citations)

US4054951A Cited
US5003307A Cited
US5329405A Cited
US5179378A Cited
US5373290A Cited
US5339076A Cited
US5369605A Cited
US5384568A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 1999-06-11 1999-12-11 2000-06-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2003-06-11 2003-12-11 2004-06-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2007-06-11 2007-12-11 2008-06-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag