WO2009147794A1 - 有限オートマトン生成システム - Google Patents
有限オートマトン生成システム Download PDFInfo
- Publication number
- WO2009147794A1 WO2009147794A1 PCT/JP2009/002241 JP2009002241W WO2009147794A1 WO 2009147794 A1 WO2009147794 A1 WO 2009147794A1 JP 2009002241 W JP2009002241 W JP 2009002241W WO 2009147794 A1 WO2009147794 A1 WO 2009147794A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- matrix
- nfa
- regular expression
- finite automaton
- char
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
Definitions
- the present invention relates to a technology for generating a finite automaton circuit for character string matching, and in particular, a finite automaton generating system for character string matching for simultaneously processing a plurality of characters, a finite automaton generating method, a recording medium for storing a finite automaton generating program,
- the present invention relates to the used pattern matching apparatus.
- a nondeterministic finite automaton is a finite automaton in which a plurality of state transition destinations exist for an input character in a certain state.
- a deterministic finite automaton is a finite automaton that has only one state transition destination.
- NFA can be generated based on a syntax tree constructed from search target conditions such as a given regular expression.
- DFA can be generated from the NFA generated by the above procedure.
- the number of states of DFA increases to about 2 n at the maximum with respect to the number of states n of NFA.
- state transition information is stored in a memory as a state transition table, and pattern matching is performed while transitioning states one by one with reference to the table.
- a state transition table There is a known technique for performing the above.
- the technique in which the NFA state transition table is stored in the memory only one transition destination can be selected from a plurality of state transition destinations for processing. For this reason, if matching fails at the selected state transition destination, a process called “backtrack” is required to go back to the point of branching and test another candidate, and this backtrack itself is also accelerated.
- DFA also requires a large amount of memory because the number of states can increase explosively.
- the increase in the number of states in DFA becomes a bottleneck in speeding up and configuration in particular.
- Non-Patent Document 2 a method of performing high-speed pattern matching by directly forming an NFA into a circuit and incorporating it on a reconfigurable device such as an FPGA (Field Programmable Gate Gate Array) has been proposed.
- a method to directly circuitize NFA a method of directly generating an NFA circuit incorporating NFA from a regular expression via a syntax tree (Syntax Tree), or a regular expression is converted to NFA and then an NFA circuit is configured.
- Various methods have been proposed, such as a method to do this.
- the NFA circuit can be configured as the circuit shown in FIG.
- '*' included in the regular expression is a metacharacter representing zero or more matches
- ' is a metacharacter representing OR.
- a state indicated by using a white arrow indicates an initial state
- a state indicated by a double circle indicates an end state.
- states 0 to 4 of the original NFA are realized using registers 200 to 204 in the NFA circuit, respectively. When the value of each register is “1”, each register determines that the state is active.
- Comparators 300 to 304 compare one character (1 byte) input as data with each transition condition character (the character described in the comparator in the figure). Output '1'. Therefore, in a state where each register is determined to be active, if the character input in each comparator matches the transition condition, the AND gates 400 to 403 also output “1”. As a result, the NFA circuit executes a state transition when the register of the next state becomes active. The NFA circuit finally determines that the input character string matches the pattern of the regular expression “a (bc) * (d
- the NFA circuit has a configuration in which a register that represents each state and a comparator that determines that a transition condition has been input are connected according to the state transition of the NFA. Further, since the NFA circuit processes one character (1 byte) per clock cycle, it has a search throughput performance proportional to the operating frequency.
- Non-Patent Document 3 and Japanese Patent Application No. 2006-355533 by the present applicant an NFA of 1 character (1 byte) processing for a regular expression pattern of “a (bc) * (d
- an NFA that processes one character (1 (byte) per clock cycle is referred to as “1-char NFA”.
- An NFA that processes a plurality of characters (multiple bytes) per clock cycle is referred to as “multi-char NFA”
- an NFA that has k characters is referred to as “k-char NFA”.
- an NFA in units of one character is converted into a matrix called an NFA description matrix, and k-char NFA is obtained by multiplying the NFA description matrix by k times.
- Each element s ij of the NFA description matrix S represents a character or a set of character strings that is a transition condition from the state associated with row i to the state associated with column j.
- the NFA shown in FIG. 26 is constructed as the NFA of the regular expression “a (bc) * (d
- the description matrix S is a 5 ⁇ 5 matrix shown in FIG.
- the technique disclosed in Non-Patent Document 3 uses a description matrix S shown in FIG. 28 according to a predefined calculation rule. Multiply 4 times.
- Non-Patent Document 3 a matrix M 4 obtained by multiplying the description matrix S shown in FIG. 28 is calculated (matrix M 4 is shown in FIG. 29), and 4-char NFA is obtained from the obtained M 4 . Ask for. As a result, the method disclosed in Non-Patent Document 3 can obtain 4-char NFA as shown in FIG.
- Regular expressions are not limited to the basic elements described above, and it is possible to use expressions that specify the number of repetitions of a specified character (hereinafter, “regular expressions that specify the number of repetitions of a specified character” Called “regular expression”).
- the regular expression “c ⁇ n ⁇ ” represents the repetition of the character c n times.
- expressions such as “c ⁇ n, m ⁇ ”, “c ⁇ n, ⁇ ”, and “c ⁇ , n ⁇ ” are possible.
- “c ⁇ n, m ⁇ ” represents a repetition of the character c from n to m times.
- “c ⁇ n, ⁇ ” represents the repetition of the character c n times or more.
- “c ⁇ , n ⁇ ” represents 0 to n repetitions of the character c.
- the first problem is that the size of the NFA description matrix S described in Non-Patent Document 3 increases as the number of character repetitions increases. For this reason, there is a problem that the amount of calculation required for the operation of multiplying the NFA description matrix S k times to obtain k-byte NFA increases.
- a network intrusion detection system which is one application example of a pattern matching circuit, is assumed in the method of directly embedding NFA in hardware.
- the pattern matching rule in the network intrusion detection system there are examples in which the number of repetitions is very large, such as an example in which the number of repetitions of the designated character is 1000 or more.
- the regular expression " ⁇ sCREATE ⁇ s [ ⁇ ⁇ n] ⁇ 1024 ⁇ " is known as an example of a regular expression with a very large number of repetitions.
- Non-Patent Document 3 for example, a regular expression “BCDA ⁇ 93 ⁇ STU” including a repeated regular expression (“BCD” is followed by 93 repetitions of the letter “A”, followed by “STU”.
- 1-char NFA is the NFA shown in FIG. 31
- the NFA conversion matrix is the NFA matrix shown in FIG.
- the value of an element that does not describe the value of the element is 0.
- the numbers in circles indicate NFA state numbers.
- the numbers on the left side and the numbers on the upper side of the NFA conversion matrix S shown in FIG. 32 indicate state numbers in 1-char NFA.
- the element in the i-th row and j-th column of the NFA transformation matrix S represents a character set as a transition condition from the state i to the state j in 1-char NFA.
- the transition based on the character “A” is repeated 93 times from the state 3 to the state 96.
- the NFA transformation matrix S is 100 rows and 100 columns as a whole.
- the size of the NFA conversion matrix greatly depends on the number of repetitions of the designated character of the repeated regular expression. If the number of repetitions of a regular expression is N, and the number of repetitions of the regular expression is larger than the number of states of regular expressions other than the regular expression, the size of the NFA description matrix is O (N ). In general, the amount of calculation for multiplying square matrices of size D ⁇ D is O (D 3 ), so the calculation required for calculating the NFA transformation matrix according to the increase in the number of repetitions of the specified character in the repeated regular expression The amount increases rapidly.
- the second problem is that the size of the NFA description matrix S described in Non-Patent Document 3 increases as the number of character repetitions increases. For this reason, in the calculation for obtaining the NFA description matrix S and the matrix calculation for multiplying the NFA description matrix S for obtaining the multi-char NFA M times, the memory capacity required to hold the calculation result increases. There is a problem.
- An object of the present invention is to calculate the amount of NFA description matrix for generating an NFA in which NFA transition conditions are expanded to a plurality of character units even when the number of repetitions of the repeated regular expression is increased in a regular expression including a repeated regular expression.
- Finite automaton generation system for character string matching for simultaneous processing of multiple characters a finite automaton generation method, a recording medium storing a finite automaton generation program, and a pattern matching device using a finite automaton .
- Another object of the present invention is to provide an NFA description for generating an NFA in which NFA transition conditions are extended to a plurality of character units even when the number of repetitions of the repeated regular expression is increased in a regular expression including a repeated regular expression.
- One aspect of the finite automaton generation system is a finite automaton generation system that generates a finite automaton composed of a transition condition of an arbitrary number of characters to be specified from a regular expression that is input using a matrix operation.
- a fixed character number unit finite automaton generating means for generating a fixed character number unit finite automaton consisting of a transition condition of a fixed character number, and a correspondence relationship between the state of the fixed character number unit finite automaton and the transition condition from the fixed character number unit finite automaton
- Matrix operation means for performing and matrix expansion means for creating a matrix form expression that expands the matrix form expression as a result of the matrix operation to a matrix form expression having the same matrix size as the matrix size of the
- One aspect of a finite automaton generation method is a finite automaton generation method for generating a finite automaton composed of transition conditions of an arbitrary number of characters to be specified from a regular expression to be input using a matrix operation. Generates a fixed character unit finite automaton consisting of a fixed character number transition condition, and generates a matrix form expression describing the correspondence between the state of the fixed character unit finite automaton and the transition condition from the fixed character unit finite automaton.
- the resulting matrix form representation is the same matrix size as the fixed character unit matrix form representation To become a matrix format expressed as is to create an enlarged matrix form representation.
- One aspect of a recording medium for storing a finite automaton generation program stores a finite automaton generation program that uses a matrix operation to generate a finite automaton consisting of a transition condition of an arbitrary number of characters to be specified from an input regular expression
- a fixed character number unit finite automaton generating step for generating a fixed character number unit finite automaton comprising a transition condition of a fixed character number from the regular expression, and a fixed character number unit finite automaton from the fixed character number unit finite automaton.
- a fixed character unit matrix form expression generation step for generating a matrix form expression describing a correspondence relationship between a state and the transition condition, and a region corresponding to a repeated regular expression is reduced in the fixed character unit matrix form expression region
- a matrix reduction step that creates a reduced matrix form representation.
- a matrix operation step for performing the matrix operation using the reduced matrix form expression, and a matrix form expression resulting from the matrix operation has the same matrix size as the matrix size of the fixed character unit matrix form expression.
- One aspect of the pattern matching apparatus generates a finite automaton composed of a transition condition of an arbitrary number of characters to be specified from a regular expression to be input using a matrix operation, and performs pattern matching using the generated finite automaton.
- a pattern matching device for performing a fixed character unit finite automaton generating unit for generating a fixed character unit finite automaton including a transition condition of a fixed number of characters from the regular expression, a repeated regular expression included in the regular expression, and the repeated normal
- a repeated list creating means for creating a repeated regular expression list that retains a correspondence with a state number of a fixed character unit finite automaton corresponding to an expression; a state of the fixed character unit finite automaton from the fixed character unit finite automaton and the transition Describes correspondence with conditions
- a finite automaton including a transition condition of an arbitrary number of characters to be specified is generated from an input regular expression using a matrix operation, and the generated finite automaton is used.
- a pattern matching device for performing pattern matching wherein a fixed character unit finite automaton generating means for generating a fixed character unit finite automaton composed of a transition condition of a fixed number of characters from the regular expression, and a repeated regular expression included in the regular expression And a repetition list creation means for creating a repetition regular expression list that retains the correspondence between the state number of the fixed character unit finite automaton corresponding to the repetition regular expression, and the fixed character unit finite automaton from the fixed character unit finite automaton Correspondence between states and transition conditions
- the amount of computation of the NFA description matrix for generating an NFA in which the NFA transition condition is extended to a plurality of character units Finite automaton generation system for character string matching for simultaneous processing of multiple characters, a finite automaton generation method, a recording medium storing a finite automaton generation program, and a pattern matching device using a finite automaton can be provided. .
- FIG. 1 is a block diagram showing a configuration of a first embodiment. It is a figure which shows NFA of 1 character unit without an epsilon transition with respect to an example of a regular expression. It is a figure which shows the repetition regular expression list with respect to NFA shown in FIG. It is a flowchart explaining the operation of the 1-char NFA generation means. It is a figure which shows NFA of 1 character unit containing (epsilon) transition with respect to an example of a regular expression.
- FIG. 6 is a diagram showing a repeated regular expression list for the NFA shown in FIG. 5.
- FIG. 3 is a diagram showing an original version 1-char NFA description matrix corresponding to the NFA shown in FIG. 2 generated by a 1-char 1NFA description matrix generating means.
- FIG. 7 is a diagram showing a matrix conversion information list generated from the repeated regular expression list shown in FIG. 6. It is a flowchart which shows the production
- FIG. 9 is a flowchart showing generation processing of a reduced version 1-char NFA description matrix shown in FIG. 8.
- FIG. 9 is a flowchart showing an original version multi-char NFA description matrix generation process shown in FIG. 8. It is a figure which shows the original version multi-char NFA description matrix in the middle of generation. It is a figure which shows the original version multi-char NFA description matrix in the middle of generation. It is a figure which shows the original version multi-char NFA description matrix in the middle of generation. It is a figure which shows the original version multi-char NFA description matrix in the middle of generation. It is a figure which shows the original version multi-char NFA description matrix in the middle of generation.
- NFA which performs the transition of a 4 character unit corresponding to an example of a regular expression which a multi-char
- FIG. It is a block diagram which shows the structure of this Embodiment 2.
- FIG. It is a block diagram which shows the structure of this Embodiment 3.
- FIG. It is a figure which shows NFA which performs the transition of one character unit with respect to an example of a regular expression.
- NFA circuit which performs the transition of one character unit with respect to an example of a regular expression.
- FIG. 10 is a diagram illustrating a 1-char NFA description matrix representing an NFA in units of one character corresponding to an example of a regular expression including a repeated regular expression.
- FIG. 1 is a block diagram showing the configuration of the first embodiment of the present invention.
- the first embodiment includes an input device 11 such as a keyboard, a data processing device 12 that operates based on program control, a storage device 140 that stores information, a display device, a printing device, and the like.
- Output device 13 is a block diagram showing the configuration of the first embodiment of the present invention.
- the first embodiment includes an input device 11 such as a keyboard, a data processing device 12 that operates based on program control, a storage device 140 that stores information, a display device, a printing device, and the like.
- Output device 13 is a block diagram showing the configuration of the first embodiment of the present invention.
- the first embodiment includes an input device 11 such as a keyboard, a data processing device 12 that operates based on program control, a storage device 140 that stores information, a display device, a printing device, and the like.
- Output device 13 is a block diagram showing the configuration of the first embodiment of the present invention.
- the first embodiment includes
- the storage device 140 includes a repeated regular expression list storage unit 141, a 1-char NFA storage unit 142, a 1-char NFA description matrix storage unit 143, an NFA description matrix calculation information storage unit 144, and a multi-char NFA description matrix.
- a storage unit 145 and a multi-char NFA storage unit 146 are included.
- the data processing device 12 includes a 1-char NFA description matrix generation unit 122, a 1-char NFA description matrix generation unit 122, a multi-char NFA description matrix generation unit 123, a multi-char NFA generation unit 124, and an HDL conversion unit 125. And including.
- the finite automaton with a fixed number of characters consisting of the transition condition of the fixed number of characters is a finite automaton (1-char NFA) with one character will be described as an example.
- the fixed character unit finite automaton generating means corresponds to the 1-charANFA generating means 121.
- the fixed character unit matrix format representation generating means corresponds to the 1-char NFA description matrix generating means 122.
- the 1-char NFA generation unit 121 reads one or more regular expressions from the input device 11.
- the 1-char NFA generating unit 121 converts the read regular expression into 1-char NFA having no ⁇ transition.
- the 1-char NFA generation unit 121 stores the converted 1-char NFA in the 1-char NFA storage unit 142. After storage in the 1-char NFA storage unit 142, the 1-char NFA generation unit 121 starts processing to convert the next regular expression to NFA.
- the 1-char NFA generating means 121 when converting a regular expression to 1-char NFA, repeatedly creates a regular expression list.
- the repeated regular expression list is a list that holds a correspondence relationship between a repeated regular expression included in the regular expression and a 1-char1-NFA state number corresponding to the repeated regular expression.
- the 1-char NFA generation unit 121 stores the created repeated regular expression list in the repeated regular expression list storage unit 141.
- the 1-char NFA generation means 121 outputs a signal indicating that all regular expressions have been converted.
- 1-char NFA description matrix generation means 122 is notified.
- the 1-char NFA description matrix generating unit 122 generates a 1-char NFA description matrix from the 1-char NFA stored in the 1-char NFA storage unit 142 based on the method disclosed in Non-Patent Document 3.
- the 1-char NFA description matrix generation unit 122 stores the generated 1-char NFA description matrix in the 1-char NFA description matrix storage unit 143.
- the 1-char1-NFA description matrix stored in the 1-char NFA description matrix storage unit 143 is referred to as an original version 1-char NFA description matrix.
- the 1-char NFA description matrix generation unit 122 When the generated 1-char1-NFA description matrix is stored in the 1-char NFA description matrix storage unit 143, a signal indicating that all regular expressions have been converted is received from the 1-char NFA generation means 121. In this case, the 1-char NFA description matrix generation unit 122 notifies the multi-char NFA description matrix generation unit 123 of a signal indicating that generation processing of all 1-char NFA description matrices has been completed.
- the multi-char NFA description matrix generation unit 123 reads the number of operation characters from the input device 11.
- the number of action characters is the length of a character (string) that is a transition condition of the generated multi-char NFA, and in the following description, the number of action characters is represented using M.
- the multi-char NFA description matrix generating unit 123 creates a matrix conversion information list from the repeated regular expression list stored in the repeated regular expression list storage unit 141.
- the multi-char NFA description matrix generation unit 123 stores the created matrix conversion information list in the NFA description matrix calculation information storage unit 144.
- the multi-char NFA description matrix generation means 123 generates the created matrix conversion information list and a reduced NFA description matrix (reduced version 1-char NFA description matrix and reduced multi-char NFA description matrix) described later. Store in the NFA description matrix calculation information storage unit 144.
- the multi-char NFA description matrix generation means 123 refers to the matrix conversion information list stored in the NFA description matrix calculation information storage unit 144 from the 1-char NFA description matrix storage unit 143 stored in the 1-char NFA description matrix storage unit 143. , Reduce the matrix size of 1-char NFA description matrix.
- the multi-char NFA description matrix generating means 123 stores the 1-char NFA description matrix with the matrix size reduced in the NFA description matrix calculation information storage unit 144.
- an NFA description matrix with a reduced matrix size is referred to as a “reduced NFA description matrix”.
- An NFA description matrix having a size before the matrix size is reduced is referred to as an “original version NFA description matrix”.
- the multi-char NFA description matrix generating means 123 uses the reduced version 1-char NFA description matrix stored in the NFA description matrix calculation information storage unit 144 to generate a reduced multi-char NFA description matrix having M operation characters. .
- the multi-char NFA description matrix generating unit 123 stores the generated reduced multi-char NFA description matrix in the NFA description matrix calculation information storage unit 144.
- the multi-charANFA description matrix generating unit 123 refers to the matrix conversion information list stored in the NFA description matrix calculation information storage unit 144, and reduces the reduced multi-char NFA stored in the NFA description matrix calculation information storage unit 144.
- the multi-char NFA description matrix generation unit 123 stores the generated original multi-char NFA description matrix in the multi-char NFA description matrix storage unit 145.
- the 1-char NFA description matrix generation unit 122 when the generated original multi-char NFA description matrix is stored in the multi-char NFA description matrix storage unit 145, the 1-char NFA description matrix generation unit 122 generates all 1-char NFA description matrices. If a signal indicating completion is received, the multi-char NFA description matrix generating means 123 outputs a signal indicating that all multi-char NFA description matrix generation processing has been completed to the multi-char NFA description matrix. The generation unit 124 is notified.
- the multi-char NFA generation unit 124 generates a multi-char NFA from the original multi-char NFA description matrix stored in the multi-char NFA description matrix storage unit 145 based on the method disclosed in Non-Patent Document 3. To do.
- the multi-char NFA generation unit 124 stores the generated multi-char NFA in the multi-char NFA storage unit 146.
- the multi-char NFA generation unit 124 notifies the HDL conversion unit 125 of a signal indicating that all the multi-char NFA generation processes have been completed.
- the HDL conversion means 125 analyzes information such as the state of the NFA, transitions between the states, and transition conditions of the multi-char NFA stored in the multi-char NFA storage unit 146.
- the HDL conversion unit 125 converts each state into a register and a transition condition into a character (column) comparator based on the analysis result, and connects the registers according to the transition between the states. It is converted to HDL (Hardware Description Language) description such as Verilog HDL describing the NFA circuit.
- HDL Hardware Description Language
- the HDL conversion unit 125 receives a signal indicating that all the multi-charmultiNFA generation processing has been completed from the multi-char NFA generation unit 124, all the HDL descriptions converted from the multi-char NFA And a signal indicating that the conversion process from the regular expression to the HDL is completed is output to the output device 13.
- the input device 11 includes one or more regular expressions.
- the 1-char NFA generation unit 121 reads a regular expression from the input device 11.
- the 1-char NFA generation means 121 converts the read regular expression into 1-char NFA without ⁇ transition.
- the 1-char NFA generation unit 121 stores the converted 1-char NFA in the 1-char NFA storage unit 142. After storing in the 1-char NFA storage unit 142, the 1-char NFA generation unit 121 starts processing to convert the next regular expression to NFA.
- the 1-char NFA generating means 121 when converting a regular expression to 1-char NFA, the 1-char NFA generating means 121 repeatedly creates a regular expression list.
- FIG. 3 is a diagram showing the structure of the repeated regular expression list.
- each element of the repeated regular expression list is composed of repeated characters of the repeated regular expression, the number of repeated repeated regular expressions, and the starting state number of the repeated regular expression in 1-char NFA.
- the 1-char NFA generation unit 121 creates these elements for each repeated regular expression and stores them in the repeated regular expression list. That is, the 1-char NFA generation unit 121 stores these elements in the repeated regular expression list for the number of repeated regular expressions.
- the 1-char NFA generation unit 121 stores the created repeated regular expression list in the repeated regular expression list storage unit 141.
- the 1-char 1NFA generation unit 121 converts, for example, the regular expression “BCD ((A ⁇ 100 ⁇
- E) S) * TTB ⁇ 50 ⁇ U” includes two repeated regular expressions “A ⁇ 100 ⁇ ” and “B ⁇ 50 ⁇ ”.
- the repeated regular expression “A ⁇ 100 ⁇ ” corresponds to the state transition of state 3 ⁇ state 4 ⁇ .
- the repeated regular expression “B ⁇ 50 ⁇ ” corresponds to the state transition of the state 105 ⁇ the state 106 ⁇ .
- the regular expression list includes two elements as shown in FIG. That is, the regular expression list shown in FIG. 3 includes, as the first element, an element corresponding to the repeated regular expression “A ⁇ 100 ⁇ ”, the content of which is the repeated character 'A', the number of repetitions 100, Consists of starting state number 3 and Further, the regular expression list shown in FIG. 3 includes an element corresponding to the repeated regular expression “B ⁇ 50 ⁇ ” as another element, the contents of which include the repeated character 'B', the number of repetitions 50, It consists of a start state number 105.
- a single character such as “A” or “B” is exemplified as a repeated character, but the present invention is not limited to this. That is, if the length of the matching character is a regular expression of one character, an arbitrary regular expression may be designated as the repeated character.
- an arbitrary regular expression may be designated as the repeated character.
- the repeated character of the repeated regular expression for example, a regular expression representing any one of a plurality of characters such as “(A
- FIG. 4 is a flowchart showing a process in which the 1-char A NFA generating unit 121 generates 1-char NFA having no ⁇ transition from the regular expression.
- a technique disclosed in Non-Patent Document 1 is well known. In the method disclosed in Non-Patent Document 1, 1-char NFA including an ⁇ transition is generated from a regular expression, and ⁇ -closure ( ⁇ -closure) is performed to remove the ⁇ transition.
- Non-Patent Document 1 generates 1-char1-NFA without ⁇ transition from 1-char NFA including the generated ⁇ transition.
- E) S) * TTB ⁇ 50 ⁇ U” using this technique will be described.
- the 1-char NFA generation means 121 includes the regular expression “BCD ((A ⁇ 100 ⁇
- FIG. 5 shows 1-char NFA including ⁇ transition after conversion.
- the 1-char1-NFA generation unit 121 expands the repeated regular expression “A ⁇ 100 ⁇ ” into 100 state transitions based on the character “A” (in FIG.
- the equal range after expansion is represented by a dotted line). Shown in frame.) Further, the 1-charANFA generation unit 121 expands the repeated regular expression “B ⁇ 50 ⁇ ” into 50 state transitions based on the character “B” (in FIG. 5, the equal range after expansion is represented by a dotted line frame). (Shown in).
- the 1-char NFA generation unit 121 creates a repeated regular expression list by expanding each repeated regular expression into repeated characters, by holding the starting state number of the repeated regular expression at the time of the expansion. That is, when the 1-char NFA generation means 121 expands the repeated regular expression “A ⁇ 100 ⁇ ” into 100 state transitions based on the character “A” shown in FIG. Hold. Also, the 1-char NFA generation means 121 expands the repeated regular expression “B ⁇ 50 ⁇ ” into 50 state transitions based on the character “B” shown in FIG. Hold.
- FIG. 6 shows a repeated regular expression list created by the 1-char1-NFA generation unit 121 in this way.
- the 1-char NFA generation means 121 performs the ⁇ -closure on the 1-char NFA including the ⁇ transition shown in FIG. 1-char NFA without ⁇ transition is generated (step A2). Specifically, in the ⁇ -closure, the 1-char NFA generation unit 121 performs a process of integrating a plurality of states that can transition according to the ⁇ transition into one state.
- the 1-char NFA generation unit 121 sets the start state number in the repeated regular expression list to the state before ⁇ -closure. Change from the number to the state number after integration in ⁇ -closure. Thereby, even in 1-char1-NFA having no ⁇ transition, the correspondence between the repeated regular expression and its start state number can be managed using the repeated regular expression list.
- the 1-char NFA generation means 121 integrates the states 3, 4, 7, and 13 shown in FIG. 5 into one by performing ⁇ -closure, and newly shows in FIG. State 3 is assumed.
- the 1-charANFA generation means 121 in the repeated regular expression list shown in FIG. 6, corresponds to the repeated regular expression “A ⁇ 100 ⁇ ” (repeated character 'A', repeated number 100, start Rewrite the start state number of the element with state number 13) to start state number 3 after ⁇ -closure.
- the 1-char NFA generating unit 121 integrates the state 114 and the state 10 illustrated in FIG. 5 into a state 105 illustrated in FIG. 2.
- the 1-char NFA generation unit 121 corresponds to the element corresponding to the repeated regular expression “B ⁇ 50 ⁇ ” (the lowermost element shown in FIG. 6) in the repeated regular expression list shown in FIG. 6.
- the start state number is rewritten to the start state number 105 after ⁇ -closure.
- the 1-char NFA generation unit 121 creates the repeated regular expression list corresponding to 1-char NFA having no ⁇ transition shown in FIG. 2 by repeating the above processing.
- FIG. 3 shows the created repeated regular expression list.
- the 1-char NFA generation unit 121 sets the state numbers so that the state numbers are serial numbers in ascending order with respect to the state transition of the portion corresponding to each repeated regular expression in the 1-char NFA without ⁇ transition shown in FIG. Reassign (Step A3). Specifically, the 1-char NFA generation unit 121 starts from the start state number of each element of the repeated regular expression list shown in FIG. 3 and follows the state transition based on the repeated character as many times as the number of repetitions. Check if it is a serial number. If the state numbers are not in ascending order, the 1-char NFA generation unit 121 reassigns the state numbers.
- the state transition corresponding to the repeated regular expression “A ⁇ 100 ⁇ ” is already in the state 3 ⁇ 4 ⁇ 5 ⁇ ... ⁇ 102 ⁇ 103. . That is, for the state transition corresponding to the repeated regular expression “A ⁇ 100 ⁇ ”, since the state numbers that are serial numbers in ascending order have already been assigned, the 1-char NFA generation unit 121 reassigns the state numbers. There is no need to do it.
- the state transition corresponding to the repeated regular expression “B ⁇ 50 ⁇ ” is the state 105 ⁇ 106 ⁇ .
- the 1-char NFA generation unit 121 reassigns the state numbers. There is no need to do it.
- the 1-char NFA generation unit 121 corresponds to the repeated regular expression list.
- the start state number of the repeated regular expression is updated as the state number after the reassignment.
- the 1-char NFA generating unit 121 repeats the above-described processing for each element of the repeated regular expression list shown in FIG. 3, that is, for all repeated regular expressions.
- the state number should just be an ascending sequential number within the range of the state transition corresponding to one repetition regular expression. Therefore, there are no restrictions on the state number for different repeated regular expressions. For example, the start state number of the state transition corresponding to the repeated regular expression “A ⁇ 100 ⁇ ” may be larger than the start state number of the state transition corresponding to the repeated regular expression “B ⁇ 50 ⁇ ”. .
- the 1-char NFA generation unit 121 outputs the generated 1-char NFA without ⁇ transition and the created repeated regular expression list (step A4). That is, the 1-char NFA generating unit 121 stores 1-char NFA in the 1-char NFA storage unit 142. Further, the 1-char NFA generation unit 121 stores the repeated regular expression list in the repeated regular expression list storage unit 141.
- the 1-char NFA generating unit 121 ends a series of processes for generating 1-char NFA from one regular expression.
- the 1-char NFA generation unit 121 repeatedly executes the above-described processing for all received regular expressions.
- the 1-char NFA generation means 121 when completing the conversion processing of all regular expressions read from the input device 11, outputs a signal indicating that all regular expressions have been converted to a 1-char NFA description matrix.
- the generation unit 122 is notified.
- the 1-char NFA description matrix generating unit 122 generates a 1-char NFA description matrix from the 1-char NFA stored in the 1-char NFA storage unit 142 based on the technique disclosed in Non-Patent Document 3.
- the 1-char NFA description matrix generation unit 122 stores the generated 1-char NFA description matrix in the 1-char NFA description matrix storage unit 143.
- FIG. 7 is a diagram showing an example of a 1-char NFA description matrix.
- the 1-char NFA description matrix generating means 122 generates a 1-char NFA (1-char NFA shown in FIG. 2) generated from the regular expression “BCD ((A ⁇ 100 ⁇
- the 1-char NFA description matrix shown in FIG. 7 is a 157 ⁇ 157 square matrix.
- the value of an element that does not describe a value that is a transition condition is 0, which indicates that there is no state transition.
- Each element s ij of the NFA description matrix S represents a character or a set of character strings that is a transition condition from the state associated with row i to the state associated with column j.
- the element in the third row and the 103rd column is “E”, which means that the transition from the state 3 to the state 103 is performed according to the transition condition “E”.
- Represents. “I” in the 0th row and the 0th column indicates a special transition condition defined in Non-Patent Document 3, and indicates a state transition from the initial state to the initial state.
- 'F' in the 156th row and the 156th column indicates a special transition condition defined in Non-Patent Document 3, and indicates a state transition from the end state to the end state.
- the values of the elements in the area indicated by shading are set to 0 except for the elements that do not describe the values. If the specified regular expression is different, the element in the area indicated by shading in the 1-char NFA description matrix corresponding to the regular expression may have a value other than 0. is there.
- the values of the elements in the area that are not indicated by shading are always 0 except for the elements whose values are not 0. That is, in the 1-char NFA description matrix shown in FIG. 7, there is no corresponding state transition in the element in the area not shown using the shaded area.
- each element in the 4th to 102nd rows represents a transition condition for transitioning from the state 4 to 102 to another state.
- These states 4 to 102 are states constituting the repeated regular expression “A ⁇ 100 ⁇ ” as shown in FIG.
- the 1-charANFA generation unit 121 assigns the state numbers so that the state numbers are serial numbers in ascending order for the state transitions of the portions corresponding to the repeated regular expressions.
- the transition destination of state X (4 ⁇ X ⁇ 102) is only state X + 1. Therefore, in the 1-char NFA description matrix shown in FIG. 7, the values of elements other than the element in which the repeated character 'A' is set among the elements in the fourth to 102th lines are always 0. .
- each element in the fourth column to the 102nd column in the 1-char NFA description matrix shown in FIG. 7 represents a transition condition for transitioning to states 4 to 102.
- These states 4 to 102 are states constituting the repeated regular expression “A ⁇ 100 ⁇ ” as shown in FIG.
- the 1-charANFA generation unit 121 assigns the state numbers so that the state numbers are serial numbers in ascending order for the state transitions of the portions corresponding to the repeated regular expressions.
- the transition source to the state X (4 ⁇ X ⁇ 102) is only the state X-1. Therefore, in the 1-char NFA description matrix shown in FIG. 7, among the elements in the fourth column to the 102nd column, elements other than the element for which the repeated character “A” is set always have a value of 0. .
- elements corresponding to the repeated regular expression "B ⁇ 50 ⁇ " are similarly set with respect to the 106th to 154th rows and the 106th to 154th columns, and the repeated character 'B' is set. All other elements always have a value of 0.
- the 1-charANFA generation unit 121 assigns the state numbers so that the state numbers are serial numbers in ascending order in the state transition of the part corresponding to the repeated regular expression, thereby obtaining the 1-char NFA description.
- the matrix generation means 122 generates the repeated characters of the repeated regular expression in the X-th row, the first row in the region of the 1-char ⁇ NFA description matrix corresponding to the repeated regular expression (the region not shown by shading in FIG. 7). A value indicating a transition condition can be set in the (X + 1) column.
- the 1-char ⁇ NFA description matrix generation unit 122 can generate a 1-char NFA description matrix whose value is 0 for all other elements.
- the 1-char NFA description matrix generation means 122 stores the generated 1-char NFA description matrix in the 1-char NFA description matrix storage unit 143. As described above, the 1-char NFA description matrix generation unit 122 ends the process of generating the 1-char NFA description matrix.
- the 1-char NFA description matrix generation unit 122 When the generated 1-char1-NFA description matrix is stored in the 1-char NFA description matrix storage unit 143, a signal indicating that all regular expressions have been converted is received from the 1-char NFA generation means 121. In this case, the 1-char NFA description matrix generation unit 122 notifies the multi-char NFA description matrix generation unit 123 of a signal indicating that generation processing of all 1-char NFA description matrices has been completed.
- the multi-char NFA description matrix generation means 123 reads the number of operation characters from the input device 11 in advance before starting the multi-char NFA description matrix generation process.
- the number of action characters is the length of a character (string) that is a transition condition of the generated multi-char NFA, and is an arbitrary two or more value to be specified.
- the number of operating characters is expressed using M.
- the number M of operating characters is assumed to be 4.
- FIG. 8 is a flowchart showing processing performed by the multi-char NFA description matrix generation means 123. First, an overview of processing using the multi-char NFA description matrix generation unit 123 will be described with reference to FIG.
- the multi-char NFA description matrix generating means 123 creates a matrix conversion information list from the repeated regular expression list stored in the repeated regular expression list storage unit 141 (step B1).
- the repeated regular expression list is a list that holds a correspondence relationship between a repeated regular expression included in the regular expression and a 1-char1-NFA state number corresponding to the repeated regular expression.
- the multi-char NFA description matrix generation unit 123 stores the created matrix conversion information list in the NFA description matrix calculation information storage unit 144.
- the multi-char NFA description matrix generation unit 123 refers to the matrix conversion information list stored in the NFA description matrix calculation information storage unit 144 and stores the original version 1-char stored in the 1-char NFA description matrix storage unit 143.
- the NFA description matrix D (1-char NFA description matrix shown in FIG. 7) is converted into a reduced 1-char NFA description matrix D ′ (1-char NFA description matrix shown in FIG. 12).
- the multi-charANFA description matrix generating means 123 generates a reduced 1-char NFA description matrix D ′ (step B2).
- the multi-char NFA description matrix generating unit 123 stores the generated reduced 1-char NFA description matrix D ′ in the NFA description matrix calculation information storage unit 144.
- the multi-char NFA description matrix generator 123 converts the original version 1-char NFA description matrix D into the original version 1-char NFA description matrix D to the reduced version 1-char NFA description matrix D ′.
- the element related to the state transition corresponding to the repeated regular expression is replaced with a row or column corresponding to the number M of operation characters.
- the multi-char NFA description matrix generating means 123 uses the reduced version 1-char NFA description matrix D ′ stored in the NFA description matrix calculation information storage unit 144 to reduce the multi-char NFA description with M operating characters.
- a matrix D ′ 4 (multi-char NFA description matrix shown in FIG. 13) is generated (step B3).
- the multi-char NFA description matrix generation means 123 stores the generated reduced multi-char NFA description matrix D ′ 4 in the NFA description matrix calculation information storage unit 144.
- the multi-char NFA description matrix generating unit 123 refers to the matrix conversion information list stored in the NFA description matrix calculation information storage unit 144 and refers to the reduced version multi-char NFA stored in the NFA description matrix calculation information storage unit 144.
- An original version multi-char NFA description matrix D 4 (original version multi-char NFA description matrix shown in FIG. 14) is generated from the description matrix D ′ 4 (step B4).
- the multi-char NFA description matrix generation unit 123 corresponds to the repeated regular expression in the conversion from the reduced version multi-char NFA description matrix D ′ 4 to the original version multi-char NFA description matrix D 4 .
- An operation for returning the number of rows or columns corresponding to the number of operation characters M related to transition to the original size is performed.
- multi-char NFA description matrix generation unit 123 outputs the original version multi-char NFA description matrix D 4 which generated (step B5). That is, the multi-char NFA description matrix generation unit 123 stores the generated original multi-char NFA description matrix D 4 in the multi-char NFA description matrix storage unit 145.
- the original version 1-char NFA description matrix D shown in FIG. 7 is multiplied by the number of operation characters M times to obtain the original version multi-char NFA description matrix D 4 shown in FIG. It is configured.
- this method requires 157 ⁇ 157 square matrix operations.
- the multi-char NFA description matrix generation unit 123 first performs a 157 ⁇ 157 square matrix in step B2 described above.
- the original 1-char NFA description matrix D is converted to a reduced 1-char NFA description matrix D ′, which is a 16 ⁇ 16 square matrix.
- step B3 the multi-char NFA description matrix generating means 123 multiplies the reduced version 1-char NFA description matrix D ′, which is a 16 ⁇ 16 square matrix, by the number of operation characters M times to obtain a 16 ⁇ 16 square matrix. Generate a reduced multi-char NFA description matrix D' 4 .
- step B4 the multi-char NFA description matrix generating unit 123 converts the reduced multi-char NFA description matrix D ′ 4 that is a 16 ⁇ 16 square matrix from the original multi-char NFA that is a 157 ⁇ 157 square matrix. generating a description matrix D 4. That is, the multi-char NFA description matrix generating means 123 generates an NFA description matrix having a small matrix size in step B2, and performs an operation using this.
- the computation amount of the N ⁇ N square matrix is O (N 3 )
- the matrix conversion information list generated in step B1 described above holds information necessary for performing mutual conversion between the reduced NFA description matrix and the original NFA description matrix in step B2 and step B4. is there. For this reason, the multi-charANFA description matrix generation means 123 generates a matrix conversion information list in advance in step B1 before performing the mutual conversion process between the reduced NFA description matrix and the original NFA description matrix.
- step B1 will be described with reference to FIGS.
- step B1 the multi-char NFA description matrix generating means 123 creates a matrix conversion information list from the repeated regular expression list stored in the repeated regular expression list storage unit 141 (step B1).
- the repeated regular expression list is a list that holds a correspondence relationship between a repeated regular expression included in the regular expression and a 1-char1-NFA state number corresponding to the repeated regular expression.
- FIG. 9 is a diagram showing the configuration of the matrix conversion information list.
- each element of the matrix conversion information list includes the index number i of the element, the repeated character T i of the repeated regular expression, the repeated number C i of the repeated regular expression, and the original version of the NFA description matrix.
- Start state number S i of repeated regular expression end state number E i of repeated regular expression in original NFA description matrix
- start state number S ′ i of repeated regular expression in reduced NFA description matrix reduced version
- the index number i is a field prepared for facilitating the explanation of the operation performed by the multi-char NFA description matrix generation means 123, and is not an essential field for carrying out the present invention.
- FIG. 10 is a flowchart showing the process in which the multi-char NFA description matrix generation means 123 generates a matrix conversion information list in step B1.
- steps C1 to C4 shown as loop 1 in the figure
- the multi-char NFA description matrix generation means 123 copies each entry of the repeated regular expression list to the matrix conversion information list.
- the multi-char NFA description matrix generation means 123 starts the processing of loop 1 in step C1. For each entry in the repeated regular expression list, the multi-char NFA description matrix generating unit 123 checks whether or not the number of repeated regular expressions in the entry is greater than M + 1 (step C2). If the number of repetitions of the repeated regular expression of the entry is larger than M + 1, the multi-char NFA description matrix generation means 123 copies the entry to the matrix conversion information list (step C3). When the multi-char NFA description matrix generation means 123 copies the repeated regular expression list entries to the matrix transformation information list, the multi-char NFA description matrix generation means 123 repeats the repeated characters of the repeated regular expression list and the number of repetitions. And the start state number are copied to the repeated character of the matrix conversion information list, the number of repetitions, and the start state number of the original version description matrix.
- the multi-char NFA description matrix generation means 123 does not copy the entry from the regular expression list to the matrix conversion information list. This is because when the number of repetitions is M + 1 or less, the multi-char NFA description matrix generation means 123 creates a reduced NFA description matrix in step B2 and compares it with the original NFA description matrix. This is because it does not lead to reduction of the matrix size. Therefore, in Steps C1 to C4, which is the stage where the multi-char NFA description matrix generation means 123 creates the matrix conversion information list, the repeated regular expressions whose number of repetitions is M + 1 or less are excluded from the processing target. This ensures that the number of repetitions of each entry included in the matrix conversion information list is greater than M + 1.
- the multi-charANFA description matrix generation means 123 copies all entries of the repeated regular expression shown in FIG. 3 to the matrix conversion information list.
- FIG. 11 is a diagram showing a matrix conversion information list at the time when the processing of the loop 1 is completed.
- the multi-char NFA description matrix generation means 123 rearranges the entries in the matrix conversion information list according to the ascending order of the start state numbers of the original version description matrix (step C5).
- entries in the matrix conversion information list are stored in ascending order of the start state numbers of the original version description matrix. For this reason, even after execution of the rearrangement process in step C5, the order of entries in the matrix conversion information list shown in FIG. 11 does not change and remains as shown in FIG.
- the multi-char NFA description matrix generating means 123 calculates the matrix size N ′ of the reduced 1-char NFA description matrix D ′ (step C6).
- the multi-char NFA description matrix generating means 123 generates the original 1-char NFA description shown in FIG.
- the matrix D the rows and columns related to the state transition corresponding to the repeated regular expression (specifically, the S i +1 th row to the E i ⁇ 1 th row) are reduced to M rows.
- S i indicates the start state number of the original version NFA description matrix of each entry in the matrix conversion information list.
- E i indicates the end state number of the original version NFA description matrix of each entry in the matrix conversion information list.
- M indicates the number of operating characters.
- the multi-char NFA description matrix generating unit 123 reduces the S i + 1th column to the E i ⁇ 1 column to M columns. Therefore, if the matrix size of the original 1-char NFA description matrix D is N, the matrix size N ′ of the reduced 1-char NFA description matrix D ′ can be expressed using the following number (1). K represents the number of repeated regular expressions included in the regular expression.
- the multi-char NFA description matrix generation means 123 calculates the content that is a blank in the entry for each entry in the matrix conversion information list.
- the blank content is a blank portion in FIG.
- the contents of the blank indicate the end state number of the original NFA description matrix, the start state number of the reduced NFA description matrix, and the end state number.
- the multi-char NFA description matrix generation means 123 In the original 1-char NFA description matrix D, the rows and columns related to the state transition corresponding to the repeated regular expression (specifically, the S i +1 row to the E i -1 row are shown). Reduce to M lines.
- S i indicates the start state number of the original version NFA description matrix of each entry in the matrix conversion information list.
- E i indicates the end state number of the original version NFA description matrix of each entry in the matrix conversion information list.
- M indicates the number of operating characters.
- the multi-char NFA description matrix generation means 123 generates the original corresponding to the specified regular expression “BCD ((A ⁇ 100 ⁇
- the 4th to 102nd lines of the version 1-char NFA description matrix D are converted into the 4th to 7th rows of the reduced version 1-char NFA description matrix D ′.
- the multi-char ⁇ NFA description matrix generation unit 123 supports the repeated regular expression “B ⁇ 50 ⁇ ” of the specified regular expression “BCD ((A ⁇ 100 ⁇
- the 106th to 154th rows of the original version 1-char NFA description matrix D are converted to the 11th to 14th rows of the reduced version 1-char NFA description matrix D ′.
- the multi-char ⁇ NFA description matrix generating unit 123 converts the column in the same manner.
- the multi-char NFA description matrix generating means 123 performs the original 1-char NFA description matrix D and the reduced 1-char NFA description matrix D ′ of the part corresponding to the repeated regular expression. And the correspondence relationship is held in the matrix conversion information list.
- the multi-char NFA description matrix generation means 123 performs processing for each entry in the matrix conversion information list in subsequent steps C8 to C12.
- the multi-char NFA description matrix generating means 123 starts processing of loop 2 in step C7 and starts processing of the i-th entry (step C8).
- the multi-char NFA description matrix generating means 123 calculates the end state number E i of the original version NFA description matrix D (step C9).
- the multi-char NFA description matrix generation means 123 calculates the start state number S ′ i of the reduced description matrix D ′ (step C10).
- the multi-char NFA description matrix generating means 123 holds state transitions not related to repeated regular expressions in the conversion from the original version 1-char NFA description matrix D to the reduced version 1-char NFA description matrix D ′.
- the multi-char NFA description matrix generating means 123 converts lines 103 to 105 of the original version 1-char NFA description matrix D shown in FIG. 7 into a reduced version 1-char NFA description matrix D ′ shown in FIG. Copy from line 8 to line 10.
- the multi-char NFA description matrix generation means 123 calculates the end state number E ′ i of the reduced version description matrix D ′ (step C11).
- the multi-char NFA description matrix generating means 123 calculates E ′ i based on this relationship.
- the multi-char NFA description matrix generation means 123 completes the processing of loop 2 in step C13 after completing the processing of the i-th entry in step C12. As described above, the multi-char NFA description matrix generation unit 123 completes the generation process of the matrix conversion information in step B1.
- step B2 will be described with reference to FIGS.
- the symbols used in the description after step B2 are defined as follows (including the symbols defined as described above).
- the value in square brackets is a value indicating a specific example used in the operation description in the first embodiment.
- N indicates the matrix size of the 1-char NFA description matrix.
- N ′ indicates the matrix size of the multi-char NFA description matrix.
- S i , E i , S ′ i , E ′ i , and C i indicate elements of each entry in the matrix transformation information list (1 ⁇ i ⁇ K, where K ⁇ 1). .
- the original NFA description matrix is assumed to be divided into (2K + 1) ⁇ (2K + 1) areas as shown in FIG.
- Region boundaries are determined based on S i and E i (1 ⁇ i ⁇ K). That is, the boundary of the region is determined using the S i th (1 ⁇ i ⁇ K) row and column. Also, the boundary of the region is determined using the E i th (1 ⁇ i ⁇ K) row and column.
- S i and E i themselves are included in the odd-numbered region side. Specifically, S i and E i themselves are shown using the bold lines shown in FIG. In the original version NFA description matrix shown in FIG.
- FIG. 15 shows an example in which the original version 1-char NFA description matrix D shown in FIG. 7 is divided into regions.
- the multi-char NFA description matrix generation means 123 divides the original 1-char NFA description matrix D into 5 ⁇ 5 areas.
- the reduced NFA description matrix is also considered by dividing it into (2K + 1) ⁇ (2K + 1) areas.
- FIG. 16 shows a specific example. In FIG. 16, instead of S i and E i , S ′ i and E ′ i are used to determine the boundary of the region.
- FIG. 17 is a flowchart showing a process in which the multi-char NFA description matrix generating means 123 generates a reduced 1-char NFA description matrix D ′.
- the multi-char NFA description matrix generating means 123 prepares an N ′ ⁇ N ′ matrix for holding the reduced 1-char NFA description matrix D ′ in the NFA description matrix calculation information storage unit 144 (step D1). ).
- the multi-char NFA description matrix generating means 123 initializes all elements of the prepared N ′ ⁇ N ′ matrix as 0. Note that the matrix size N ′ of the reduced version 1-char NFA description matrix D ′ has been calculated in step C6 in step B1 described above.
- the multi-char NFA description matrix generating means 123 is an odd number from the top in the original version 1-char NFA description matrix D, and also from the left.
- An odd-numbered area (2i-1, 2j-1) (i, j are integers satisfying 1 ⁇ i ⁇ K + 1, 1 ⁇ j ⁇ K + 1) is reduced to 1-char NFA Copy to the region (2i-1, 2j-1) at the same position in the description matrix D '. That is, the multi-char NFA description matrix generating unit 123 copies the area indicated by shading in FIG. 15 to the area indicated by shading in FIG. The area indicated by using the shaded area indicates an area that is not related to the regular expression.
- steps D3 to D5 shown in FIG. 17 generally show the above-described processing for each region (2i-1, 2j-1). That is, in steps D3 to D5, the multi-char NFA description matrix generating means 123 performs processing for each region (2i-1, 2j-1).
- the multi-char NFA description matrix generating unit 123 generates the remaining region of the reduced version 1-char NFA description matrix D ′ to be generated (region not shown by using hatching in FIG. 16). , The processing is performed for the region that is even-numbered from the top or even-numbered from the left.
- the area not shown by hatching in FIG. 16 is an area corresponding to the repeated regular expression in the original version 1-char NFA description matrix D shown in FIG. 15. For this reason, as the number of repetitions of the repeated regular expression increases, the number of rows and columns in the region not shown by using the shaded area in FIG. 16 increases in proportion to the number of repetitions.
- the area not shown using this shaded area is an area corresponding to the repeated regular expression, and in step A3 described above, the 1-char NFA generation unit 121 relates to the state transition of the part corresponding to the repeated regular expression.
- the status numbers are assigned so that the numbers are serial numbers in ascending order. For this reason, the only state transition that may exist in a region not shown by using this shading is the state transition from the state X to the state X + 1.
- the multi-char NFA description matrix generating means 123 uses the repeated character A i in the original 1-char NFA description matrix D shown in FIG. Arrangement starts from the lower left position of the area (2i-1, 2i), followed by the area (2i, 2i) that is continuously located so as to cross diagonally downward to the right, and then the area (2i , 2i + 1) is configured to be located toward the lower left. Therefore, the area (2i-1,2i) in the lower left area from the position (2i, 2i + 1) bottom left of, consisting repeated character A i is a C i pieces lined configuration. In an area not shown using shading, the matrix element is only a repeated character, and all elements not corresponding to the repeated regular expression are 0 (see FIG. 7).
- the multi-char NFA description matrix generation means 123 also generates a reduced 1-char NFA description matrix as shown in FIG.
- the arrangement of the repeated characters A i starts from the lower left position of the area (2i-1, 2i), and is continuously positioned so as to cross the area (2i, 2i) diagonally downward to the right. Subsequently, the matrix elements are set so as to be located over the lower left of the region (2i, 2i + 1).
- the even-numbered area from the top or the even-numbered area from the left has a row or column width equal to the number M of operating characters. Are prepared. For this reason, the number of repeated characters A i arranged obliquely is M + 1.
- steps D8 to D12 shown in FIG. 17 generally show processing for setting repeated characters in the area related to the repeated regular expression corresponding to the entry for the i-th entry in the matrix conversion information list. . That is, in steps D8 to D12, the multi-char NFA description matrix generation means 123 performs processing for the range related to the i-th entry.
- the multi-char NFA description matrix generation means 123 ends the generation process of the reduced version 1-char NFA description matrix D ′ in step B2.
- the multi-char NFA description matrix generating means 123 performs the process of step B2 on the original 1-char NFA description matrix shown in FIG.
- FIG. 12 shows a reduced 1-char NFA description matrix generated by the multi-char NFA description matrix generator 123.
- the value of an element that does not describe a matrix element is 0, indicating that there is no corresponding state transition.
- a character (group) described as an element is a transition condition for state transition.
- the element of (3 rows, 8 columns) is 'E', which is a state transition from state 3 to state 8 based on the letter 'E' Indicates that there is.
- step B3 the multi-char NFA description matrix generating means 123 generates a reduced multi-char NFA description matrix D′ 4 .
- the multi-char NFA description matrix generation unit 123 multiplies the reduced version 1-char NFA description matrix D ′ M times based on the method disclosed in Non-Patent Document 3.
- D ′ 4 D ′ ⁇ D ′ ⁇ D ′ ⁇ D ′. Note that the operation definition when multiplying NFA description matrices is described in detail in Non-Patent Document 3, page 68, Chapter 3.3 Conversion Method, and Chapter 3.4 Conversion Examples.
- the multi-char NFA description matrix generating means 123 generates the reduced version multi-char () shown in FIG. 13 from the reduced version 1-char NFA description matrix D ′ shown in FIG. 4-char) Generate NFA description matrix D' 4 .
- the reduced version 4-char NFA description matrix D ′ 4 shown in FIG. 13 is an NFA description matrix that defines NFA transition conditions in units of 4 characters.
- Each element of the reduced version 4-char NFA description matrix D ′ 4 indicating the transition condition is a character string of length 4. In FIG. 13, the value of an element for which no specific element value is described is 0, indicating that no transition condition exists.
- FIG. 18 is a flowchart showing the process in which the multi-char NFA description matrix generating means 123 generates the original multi-char NFA description matrix D 4 in step B4.
- the flowchart shown in FIG. 18 includes the following five processes (1) to (5). (1) Processing for odd-numbered regions from the top and odd-numbered regions from the left (the processing in steps E2 to E4 is shown). (2) Processing for odd-numbered regions from the top and even-numbered regions from the left (the processing in steps E5 to E7 is shown). (3) Processing for even-numbered regions from the top and odd-numbered regions from the left (the processing in steps E8 to E10 is shown).
- the process (1) is an odd-numbered area from the top and an odd-numbered area from the left.
- the odd-numbered area from the top and the odd-numbered area from the left indicate the transition condition regarding the state that is not related to the repeated regular expression in both the transition source state and the transition destination state.
- the element “CDES” in the first row and the third column of the region (1,1) is in the state 1 ⁇ state 2 in the state transition shown in FIG.
- Each element in the area of the reduced version 4-char NFA description matrix and each element in the same position area of the original version 4-char NFA description matrix have a one-to-one correspondence.
- the multi-charANFA description matrix generation unit 123 converts each region of the reduced version 4-char NFA description matrix into the original version 4-char for the odd-numbered region from the top and the odd-numbered region from the left. Copy to the area at the same position in the NFA description matrix (step E3).
- steps E2 to E4 shown in FIG. 18 generally show the above-described processing. That is, in steps E2 to E4, the multi-char NFA description matrix generation means 123 performs processing for each region. In the processing for each region in step E3, the multi-char NFA description matrix generation means 123 can uniquely identify the copy destination coordinates by referring to the matrix conversion information list calculated in step B1.
- FIG. 19 is a diagram showing the original 4-char NFA description matrix at the time when the processing up to step E4 is completed. The portion indicated by shading is an element copied from the reduced 4-char NFA description matrix by the multi-char NFA description matrix generating means 123 in the processing of steps E2 to E4.
- the process (2) is an odd-numbered area from the top and an even-numbered area from the left.
- the odd-numbered area from the top and the even-numbered area from the left indicate the transition conditions related to the state in which the transition source state is not related to the repeated regular expression and the transition destination state is related to the repeated regular expression. ing.
- the element “CDAA” in the first row and the fifth column of the region (1, 2) is state 1 ⁇ state 2 in the state transition shown in FIG.
- Indicates that transition from state 1 to state 5 is made on the basis of the transition condition “CDAA” when the transition of one character unit is performed four times from state 3 to state 4 to state 5.
- when performing a state transition in units of M characters from a state not related to the repeated regular expression to a state related to the repeated regular expression only the Mth state from the beginning of the repeated regular expression can be the transition destination state.
- the multi-charANFA description matrix generating unit 123 generates the original multi-char NFA description of the region that is odd-numbered from the top and even-numbered from the left in the reduced version multi-char NFA description matrix. Copies the area at the same position in the matrix to the area in contact with the left boundary (step E6).
- steps E5 to E7 shown in FIG. 18 generally show the above-described processing. That is, in steps E5 to E7, the multi-char NFA description matrix generation means 123 performs processing for each area. In the processing for each region in step E6, the multi-char NFA description matrix generating means 123 can uniquely identify the copy destination coordinates by referring to the matrix conversion information list calculated in step B1.
- the portion indicated by shading is a reduced version 4-char NFA description matrix generated by the multi-charANFA description matrix generating means 123 in the processing of steps E2 to E4 described above.
- the portion shown using dark shading is processed by the multi-char NFA description matrix generation means 123 from the reduced 4-char NFA description matrix in the processing of steps E5 to E7.
- a portion R1 indicated by using thin shading indicates an element copied by the multi-char-NFA description matrix generation means 123 in the processing up to step E4 described above.
- the process (3) is a process for an even-numbered area from the top and an odd-numbered area from the left.
- the even-numbered area from the top and the odd-numbered area from the left indicate the transition conditions related to the state where the transition source state is related to the repeated regular expression and the transition destination state is not related to the repeated regular expression. ing.
- the element “AAST” in the sixth row and the ninth column of the region (2, 3) is the state 101 ⁇ the state 102 in the state transition shown in FIG.
- only the Mth state from the end of the repeated regular expression can be the transition source state.
- the multi-charANFA description matrix generating unit 123 converts the even-numbered region from the top and the odd-numbered region from the left in the reduced version multi-char NFA description matrix into the original multi-char NFA description. Copies the area at the same position in the matrix to the area in contact with the lower boundary (step E9).
- steps E8 to E10 shown in FIG. 18 generally show the above-described processing. That is, in steps E8 to E10, the multi-char NFA description matrix generation means 123 performs processing for each region. In the processing for each region in step E9, the multi-char NFA description matrix generation means 123 can uniquely identify the copy destination coordinates by referring to the matrix conversion information list calculated in step B1.
- FIG. 21 is a diagram showing an original version 4-char NFA description matrix at the time when the processing up to step E10 is completed.
- the portion indicated by using the dark shading (the portion indicated by using R4 in the drawing) is processed by the multi-char NFA description matrix generating means 123 in the processing of steps E8 to E10. This element is newly copied from the char NFA description matrix.
- a portion indicated by using thin shading indicates an element copied by the multi-char NFA description matrix generating means 123 in the processing up to step E7 described above.
- the process (4) is a process for even-numbered areas from the top and even-numbered areas from the left.
- the even-numbered area from the top and the even-numbered area from the left indicate the transition condition regarding the state related to the repeated regular expression in both the transition source state and the transition destination state.
- the element “AASA” in the sixth row and fourth column of the region (2, 2) is in the state 101 ⁇ state 102 in the state transition shown in FIG.
- State transition starts from state 101 in the repeated regular expression, and once exits the state corresponding to the repeated regular expression and makes the transition from state 103 to state 3, then reaches state 4 corresponding to the repeated regular expression again. ing.
- the transition source state corresponds to the repeated regular expression “B ⁇ 50 ⁇ ”, and the repeated regular expression in the state transition diagram shown in FIG. After performing the state transition for B ⁇ 50 ⁇ ", there is only a transition condition for transition to state 156 with the letter 'U', so there is a state transition corresponding to region (4,2) or (4,4) It is because it does not.
- the region (2,4) represents the state transition from the state related to the repeated regular expression “A ⁇ 100 ⁇ ” to the state related to the repeated regular expression “B ⁇ 50 ⁇ ”.
- state 106 which is the first state related to repeated regular expression "B ⁇ 50 ⁇ ”
- state 102 which is the last state related to "A ⁇ 100 ⁇ ”
- BCD ((A ⁇ 100 ⁇
- elements other than 0 may exist for these regions (2, 4), (4, 2), and (4, 4).
- the transition destination state can only be the Mth state from the beginning of the repeated regular expression, Note that only the Mth state from the end of the repeated regular expression can be a transition source state.
- the multi-charANFA description matrix generating unit 123 converts the even-numbered region from the top and the odd-numbered region from the left in the reduced version multi-char NFA description matrix into the original multi-char NFA description. Copies are made to the range in contact with the left and lower boundaries in the region at the same position in the matrix (step E12).
- steps E11 to E13 shown in FIG. 18 generally indicate the above-described processing. That is, in steps E11 to E13, the multi-char NFA description matrix generation means 123 performs processing for each region. In the processing for each region in step E12, the multi-char NFA description matrix generating means 123 can uniquely identify the copy destination coordinates by referring to the matrix conversion information list calculated in step B1.
- FIG. 22 is a diagram showing an original version 4-char NFA description matrix at the time when the processing up to step E13 is completed.
- the portion indicated by using the dark shading (the portion indicated by using R6 in the figure) is processed by the multi-char NFA description matrix generating means 123 in the processing of steps E1 to E13. This element is newly copied from the char NFA description matrix.
- a portion indicated by using thin shading indicates an element copied by the multi-char NFA description matrix generating means 123 in the processing up to step E10 described above.
- the process (5) is a correction related to repeated regular expressions.
- the repeated regular expression “A ⁇ 100 ⁇ ” is used.
- the state transition from state 4 to 98 and the state transition to state 8 to 102 are not defined.
- the state transition from the state 106 to 150 and the state transition to the state 110 to 154 are not defined.
- states 4 to 98 are states corresponding to the repeated regular expression “A ⁇ 100 ⁇ ”.
- the transition condition is M repeated characters of the repeated regular expression.
- This is the same state transition as the state transition from state 4 to 98. Therefore, the multi-char NFA description matrix generating unit 123 determines the state X (4 ⁇ 4) as the state transition corresponding to the repeated regular expression “A ⁇ 100 ⁇ ” by repeating the transition condition “A” M ( 4) times.
- the state transition from X ⁇ 98 to state X + M is added to the original 4-char4-NFA description matrix.
- the state transition from X (106 ⁇ X ⁇ 150) to state X + M is added to the original version 4-char NFA description matrix.
- Steps E14 to E18 shown in FIG. 18 generally indicate the above-described processing. That is, in steps E14 to E18, the multi-char NFA description matrix generation means 123 corresponds to each repeated regular expression, and the state X (S i ⁇ X) in M repeated repetitions of the repeated character C i as a transition condition. ⁇ E i -M) to state X + M is added to the original 4-char NFA description matrix. Note that i represents an index number assigned to an entry in the matrix conversion information list, and corresponds to each repeated regular expression.
- Figure 14 is a diagram showing after completed the process shown in FIG. 18 (step E1 ⁇ E18), the original version 4-char NFA description matrix D 4 which finished.
- step B5 multi-char NFA description matrix generation unit 123, the original version 4-char NFA description matrix D 4 generated by step B4 described above is stored in the multi-char NFA description matrix storage unit 145.
- the multi-charANFA description matrix generating unit 123 stores all of the generated original version multi-char NFA description matrix in the multi-char NFA description matrix storage unit 145 from the 1-char NFA description matrix generating unit 122. If the signal indicating that the generation processing of the 1-char NFA description matrix is completed is received, the signal indicating that the generation processing of all the multi-char NFA description matrices is completed is displayed as multi-char NFA. The generation unit 124 is notified. As described above, the multi-char NFA description matrix generating means 123 completes the multi-char NFA description matrix generating process.
- the multi-char NFA generating unit 124 generates a state transition (multi-char NFA) in units of M characters based on the definition of the NFA description matrix.
- the multi-char NFA generating unit 124 generates a multi-char NFA from the original multi-char NFA description matrix stored in the multi-char NFA description matrix storage unit 145 based on the method disclosed in Non-Patent Document 3. To do.
- the multi-char NFA generating unit 124 stores the generated multi-char NFA in the multi-char NFA storage unit 146.
- the multi-char NFA generating means 124 among the elements of the original version 4-char NFA description matrix D 4 shown in FIG. 14, I indicating the initial state, F indicating the end state, Is converted to '*' to indicate that it matches any single character.
- the multi-char NFA generating unit 124 generates 4-char NFA (M character unit state transition) from the original 4-char NFA description matrix.
- FIG. 23 is a diagram illustrating the 4-char NFA generated by the multi-char NFA generating unit 124.
- the multi-char NFA generating unit 124 stores the generated multi-char NFA in the multi-char NFA storage unit 146 and ends the processing.
- the multi-char NFA generation unit 124 notifies the HDL conversion unit 125 of a signal indicating that all the multi-char NFA generation processes have been completed.
- the HDL conversion unit 125 analyzes information about the NFA state, transitions between states, transition conditions, and the like of the multi-charANFA stored in the multi-char NFA storage unit 146.
- the HDL conversion unit 125 converts each state into a register and a transition condition into a character (column) comparator based on the analysis result, and connects the registers according to the transition between the states. It is converted to HDL (Hardware Description Language) description such as Verilog HDL describing the NFA circuit.
- HDL Hardware Description Language
- the HDL conversion unit 125 receives a signal indicating that all the multi-charmultiNFA generation processing has been completed from the multi-char NFA generation unit 124, all the HDL descriptions converted from the multi-char NFA And a signal indicating that the conversion process from the regular expression to the HDL is completed is output to the output device 13.
- the method according to the first embodiment is configured so that the number of rows and columns related to the state transition corresponding to the repeated regular expression is changed from the number of repeated characters of the repeated regular expression to the number of operating characters M in the original 1-char NFA description matrix. Reduce. Then, a reduced 1-char NFA description matrix having a small matrix size is created, and then an NFA description matrix is calculated in units of M characters in the reduced version.
- the method according to the first embodiment relates the amount of matrix computation when calculating a multi-char NFA description matrix It can be greatly reduced compared to technology.
- the calculation time required to generate a multi-char NFA description matrix for creating an MFA NFA description matrix can be reduced. it can. As a result, it is possible to reduce the time required to obtain the HDL description of the circuit that searches for the designated regular expression by obtaining the NFA in units of M characters after the regular expression is input.
- an operation for generating a multi-char-NFA description matrix is performed using a reduced 1-char NFA description matrix having a small matrix size.
- the memory capacity for temporarily holding the matrix operation information can be reduced.
- the state number when generating an NFA for one character unit, the state number is assigned to the state corresponding to the repeated regular expression so that the state number is in ascending order.
- adding a state transition corresponding to a repeated regular expression is a simple process of adding a state transition from state X to state X + M. Can be realized. Thereby, it is possible to reduce the amount of information to be held for conversion from the reduced version multi-char NFA description matrix to the original version multi-char NFA description matrix.
- the present invention is not limited to this. That is, by applying the same configuration as in the first embodiment, the 1-char NFA generation unit 121 generates a DFA for each character instead of generating a NFA for each character, and generates a DFA for each character. In such a case, the start state number of the state transition corresponding to the repeated regular expression may be held. As a result, not only for NFA but also for DFA, it is possible to generate a DFA in units of M characters that can simultaneously process a plurality of characters using a reduced description matrix with a small matrix size.
- FIG. 24 is a block diagram showing the configuration of the second embodiment of the present invention.
- the second embodiment is similar to the first embodiment described above in that the input device 11 such as a keyboard, the data processing device 14 that operates according to program control, and the storage device 140 that stores information. And an output device 13 such as a display device or a printing device.
- the processing executed by the means 123, the multi-char NFA generation means 124, and the HDL conversion means 125 is realized based on the regular expression-HDL conversion program 15 executed by the data processing device 14.
- the data processing device 14 reads the regular expression-HDL conversion program 15.
- the regular expression-HDL conversion program 15 controls the operation of the data processing device 14.
- the control of the regular expression-HDL conversion program 15 executes the same processing as the processing executed by the data processing device 12 in the first embodiment described above.
- the same processing can be performed for DFA as well as the NFA as in the first embodiment.
- FIG. 25 is a block diagram showing a configuration of the third embodiment of the present invention.
- the third embodiment is an input device 11 such as a keyboard, a data processing device 16 that operates according to program control, a storage device 140 that stores information, and a reconfigurable hardware such as an FPGA.
- a matching device 17 and a result output device 175 such as a display device or a printing device for displaying the output result of the pattern matching are included.
- the data processing device 16 is obtained by adding configuration data conversion means 161 to the data processing device 12 of the first embodiment described above shown in FIG. Other elements are the same as those in the first embodiment described above, and thus the description thereof is omitted.
- the configuration data conversion unit 161 receives a signal from the HDL conversion unit 125 indicating that the conversion process from the regular expression to the HDL has been completed.
- the configuration data conversion unit 161 based on the HDL description describing the multi-char NFA received from the HDL conversion unit 125,
- the pattern matching device 17 converts the data into configuration data that is configuration information of a reconfigurable hardware device.
- the configuration data conversion unit 161 outputs the configuration data to the configuration device 164.
- a development tool provided by the vendor can be used, and therefore details of the conversion method are omitted.
- the configuration device 164 receives configuration data from the configuration data conversion unit 161.
- the configuration device 164 that has received the configuration data configures and sets a reconfigurable hardware device that implements the pattern matching unit 172 of the pattern matching device 17.
- the configuration device 164 is configured using a control program for configuring the configuration of a reconfigurable hardware device such as an FPGA, a write cable for transferring data to the hardware device, and the like.
- These components constituting the configuration device 164 are included in a development tool provided by a device vendor in the case of an FPGA, for example.
- a development tool provided by a device vendor such as FPGA can be used for a detailed procedure for configuring and setting a hardware device that can be reconfigured by the configuration apparatus 164 using configuration data. Therefore, detailed description thereof is omitted here.
- the pattern matching device 17 includes a data input unit 171, a pattern matching unit 172, and a result output unit 173.
- the data input unit 171, the pattern matching unit 172, and the result output unit 173 are configured on separate reconfigurable hardware devices.
- the data input unit 171 shapes pattern matching target data such as packet data and text data input from the data input device 174 (hereinafter, these data are referred to as data to be searched), and the data processing device 16 performs the processing. Parallelize to the number of simultaneously processed characters equal to the number of generated simultaneous operations.
- the data input unit 171 inputs the search target data to the pattern matching unit 172 in units of the number of simultaneously processed characters.
- the pattern matching unit 172 is a circuit configured using the configuration data generated by the data processing device 16 input via the configuration device 164. That is, the pattern matching unit 172 indicates the multi-char NFA circuit itself generated by the data processing device 16.
- the NFA circuit configured in the pattern matching unit 172 causes a state transition every time data to be searched is input from the data input unit 171. When the input search target data matches the pattern, the NFA circuit indicates that the signal matches the pattern from the register constituting the end state, and the search target data matches the pattern. Information (for example, information indicating the position of the searched data that matches the pattern) is output to the result output unit 173.
- the result output unit 173 receives a signal indicating that the pattern matches the pattern input from the pattern matching unit 172 and information on the searched data that matches the pattern.
- the result output unit 173 processes information such as which pattern the input data to be searched matches according to which input character string, and outputs the processing result to the result output device 175. Note that the notification of which pattern matches can be made using, for example, a predefined pattern number.
- multi-charANFA is converted from 1-char NFA to transition with the specified number of processing characters.
- the technique according to the third embodiment generates an HDL description that describes a multi-char NFA NFA circuit, and the NFA circuit described by using the HDL description is generated on a hardware device in the pattern matching apparatus. Constitute.
- the method according to the third embodiment can realize a pattern matching apparatus using an NFA circuit configured on a hardware device.
- the present invention can reduce the amount of calculation when calculating a multi-char NFA description matrix.
- the present invention can reduce the calculation time required for generating a multi-charANFA description matrix for creating an NFA in M character units.
- the present invention can reduce the time required for obtaining an NFA in units of M characters after a regular expression is input and finally obtaining an HDL description of a circuit that searches for the specified regular expression. it can. Therefore, according to the present invention, when a new regular expression is input from the input device 11, an HDL description describing a multi-char NFA circuit can be obtained in a short time. Thereby, configuration data obtained by converting the HDL description describing the NFA circuit can be obtained in a short time, and after the new regular expression is input from the input device 11, the regular expression becomes the configuration of the pattern matching unit 172. It is possible to shorten the time until reflection.
- the third embodiment is a multi-char NFA generated by the data processing device controlled by the regular expression-HDL conversion program 15 in the second embodiment, and describes the multi-char NFA.
- a description may be input to the configuration data conversion unit 161, and configuration data may be generated from the HDL description.
- the data input unit 171, the pattern matching unit 172, and the result output unit 173 are configured on separate reconfigurable hardware devices.
- the present invention is not limited to this. That is, these three may be configured on the same reconfigurable hardware device.
- the data input unit 171 and the result output unit 173 are configured on the same reconfigurable hardware device, and the pattern matching unit 172 is configured on another reconfigurable hardware device. May be. There are no restrictions on the relationship between the data input unit 171, the pattern matching unit 172, the result output unit 173, and the reconfigurable hardware device in which these are arranged.
- the data input unit 171 and the result output unit 173 can be configured on a hardware device that cannot be reconfigured, such as ASIC (Application Specific Integrated Circuit).
- ASIC Application Specific Integrated Circuit
- the pattern matching unit 172 is configured as a reconfigurable part using a hardware device in which only a part of the hardware device can be reconfigured and the other part cannot be reconfigured, and the data input unit 171 and the result
- the output unit 173 may be configured on a hardware device that cannot be reconfigured.
- configuration data conversion is performed.
- the means 161 may read HDL describing the circuits of the data input unit 171 and the result output unit 173 in addition to the HDL description describing the NFA circuit generated by the HDL conversion unit 125.
- the configuration data conversion unit 161 generates the read configuration data, so that both the data input unit 171 and the result output unit 173, or any one of them, are the same as the pattern matching unit 122. It is also possible to deal with a case where it is configured on a reconfigurable hardware device.
- the configuration device 164 does not store the configuration data, but uses the received configuration data to realize the pattern matching unit 172 of the pattern matching device 17.
- the configuration is such that configurable hardware devices are configured, the present invention is not limited to this. That is, a configuration data storage device for storing configuration data is further provided.
- the configuration device 164 receives the configuration data from the configuration data converter 161
- the configuration data storage device 164 converts the received configuration data into the configuration data.
- the configuration data may be read from the configuration data storage device after being stored in the data storage device.
- the configuration device 164 receives reconfigurable hardware that implements the pattern matching unit 172 when receiving configuration data from the configuration data conversion unit 161.
- the present invention is not limited to this. That is, the configuration device 164 does not need to start the configuration of a reconfigurable hardware device that implements the pattern matching unit 172 when receiving configuration data from the configuration data conversion unit 161.
- the pattern matching device 17 The configuration of a reconfigurable hardware device that implements the pattern matching unit 172 is started at a timing convenient for the operation of the pattern matching unit 172 of the pattern matching device 17 in consideration of the operation status of the pattern matching unit 172 You may do it.
- the same processing can be performed for DFA without being limited to NFA.
- the first effect is that the amount of calculation of the NFA description matrix can be reduced even when the number of repetitions of the repeated regular expression is increased in the regular expression including the repeated regular expression.
- the NFA description matrix is a matrix for generating an NFA in which NFA transition conditions are expanded to a plurality of characters.
- the present invention creates a 1-char NFA description matrix having a small matrix size from the 1-char NFA description matrix. Is used to calculate a multi-char NFA description matrix using the smaller 1-char NFA description matrix, and finally the multi-char NFA of the same size as the 1-char NFA description matrix before the matrix size reduction This is because it is converted to a description matrix.
- the second effect is that, in a regular expression including a repeated regular expression, even when the number of repetitions of the repeated regular expression is increased, the storage area required for the operation of the NFA description matrix can be reduced.
- the present invention provides a state corresponding to a repeated regular expression from a 1-char NFA description matrix when generating a multi-char NFA description matrix from a 1-char NFA description matrix describing an NFA of a transition in character units.
- an operation for obtaining a multi-char NFA description matrix is performed using the created 1-char NFA description matrix having a small matrix size, and finally a multi-char ⁇ NFA description matrix having the same size as the 1-char NFA description matrix before the matrix size reduction is performed.
- -char Convert to NFA description matrix.
- Each row and each column of the NFA description matrix corresponds to a finite automaton state. Decreasing the matrix size means deleting some rows or columns of the matrix. Deleting a part of a matrix row or column is equivalent to deleting a part of a state in a finite automaton before conversion into a description matrix. That is, in the present invention, performing an operation for obtaining a multi-char NFA description matrix using a 1-char NFA description matrix with a reduced matrix size creates a description matrix that reduces the number of states of the finite automaton. This corresponds to performing the calculation. Therefore, in the present invention, the number of states of the finite automaton can be reduced in the calculation for obtaining the multi-char NFA description matrix.
- the present invention can be applied to an HDL generation system in which an NFA circuit for performing pattern matching processing using a regular expression is described, a generation program, or the like.
- an NFA circuit for performing pattern matching processing using a regular expression is described, a generation program, or the like.
- it can be applied to applications such as a pattern matching device for performing high-speed pattern matching processing using regular expressions.
- a packet processing circuit to the pattern matching device, it can be applied to a network intrusion detection system (NIDS) or a network intrusion prevention system (NIPS).
- NIDS network intrusion detection system
- NIPS network intrusion prevention system
- hardware accelerator NFA circuit generation system as an alternative to software-based pattern matching processing installed in personal computers and workstations, recording media for storing generation programs, regular expression search hardware accelerator devices, etc. Can also be applied.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
繰り返し正規表現の繰り返し回数が増加した場合においても、NFA記述行列の演算量の増加を抑制し、また、NFA記述行列の演算に必要な記憶領域の増加を抑制すること。本発明に係る有限オートマトン生成システムは、正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する生成手段と、固定文字数単位有限オートマトンをその固定文字数単位有限オートマトンの状態と遷移条件との対応関係を記述する行列形式表現を生成する生成手段と、固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する縮小手段と、縮小行列形式表現を用いて、行列演算を行う演算手段と、行列演算の結果である行列形式表現を、固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する拡大手段と、を有する。
Description
本発明は、文字列照合用有限オートマトン回路生成技術に関し、特に、複数文字を同時に処理する文字列照合用有限オートマトン生成システム、有限オートマトン生成方法、有限オートマトン生成プログラムを格納する記録媒体、有限オートマトンを用いたパターンマッチング装置に関する。
従来、正規表現を用いた文字列照合(パターンマッチ)が、有限オートマトン(FA:Finite Automaton)と呼ばれる状態遷移マシンを用いて行われている(例えば特許文献1、2等。)。このFAは、非決定性有限オートマトン(NFA:Non-deterministic Finite Automaton)と、決定性有限オートマトン(DFA:Deterministic Finite Automaton)とに大きく分類することができる。非決定性有限オートマトン(NFA)は、ある状態における入力文字に対して状態遷移先が複数存在する有限オートマトンである。決定性有限オートマトン(DFA)は、状態遷移先が1つしか存在しない有限オートマトンである。通常、NFAは、非特許文献1に記載されているように、与えられた正規表現等の検索対象条件から構文木を構築し、これに基づいて生成することができる。DFAは、上記の手順で生成したNFAから生成することができる。しかし、NFAの状態数nに対して、DFAはその状態数が最大で2n個程度にまで増加してしまう恐れがある。
一般的に、FAを用いたパターンマッチをハードウェアを用いて実現する手法として、状態遷移情報を状態遷移テーブルとしてメモリに格納し、当該テーブルを参照して1つずつ状態を遷移させながらパターンマッチングを行う手法が知られている。しかし、この手法では状態遷移が生じる度にメモリにアクセスして遷移情報を取得する必要があるため、このメモリアクセスが高速化のボトルネックとなる。さらに、メモリ上にNFAの状態遷移テーブルを格納した手法では、複数の状態遷移先から1つの遷移先を選択して処理を行うことしかできない。このため、選択した状態遷移先でマッチングに失敗した場合には、分岐した時点にまで戻って別の候補をテストするという"バックトラック"と呼ばれる処理が必要になり、このバックトラック自体も高速化の妨げになる。また、DFAでは、状態数が爆発的に増加する恐れがあるため、大容量のメモリが必要になる。多数の正規表現パターンに対して高速なパターンマッチングを行う場合には、特に、DFAにおける状態数の増加が高速化や構成上のボトルネックとなる。
そこで、近年、例えば非特許文献2に開示されるように、NFAを直接回路化してFPGA(Field Programmable Gate Array)のような再構成可能なデバイス上に組み込むことで、高速なパターンマッチングを行う手法が提案されている。NFAを直接回路化する手法としては、正規表現から構文木(Syntax Tree)を経由してNFAを組み込んだNFA回路を直接生成する手法や、正規表現を一度NFAに変換してからNFA回路を構成する手法等、様々な手法が提案されている。
例えば、図26に示すような正規表現"a(bc)*(d|e)"に対するNFAを考えた場合、NFA回路を、図27に示す回路として構成することができる。ここで、当該正規表現に含まれる'*'は0回以上マッチを表すメタキャラクタであり、'|'はORを表すメタキャラクタである。尚、図26において白色の矢印を使用して示す状態は初期状態を示し、二重丸で示す状態は終了状態を示している。図27に示すように、元のNFA(図26に示す。)の状態0~状態4を、NFA回路におけるレジスタ200~204を用いてそれぞれ実現する。各レジスタの値が'1'である場合に、各レジスタは当該状態がアクティブであるものと判断する。比較器300~304は、データとして入力する1文字(1 byte)と、各遷移条件となっている文字(図中では比較器中に記載した文字。)とを比較し、一致した場合には'1'を出力する。このため、各レジスタがアクティブであると判断された状態において、各比較器において入力された文字が遷移条件と一致した場合には、ANDゲート400~403も'1'を出力する。その結果、次状態のレジスタがアクティブとなることで、NFA回路は状態遷移を実行する。NFA回路は、最終的に、最終状態であるレジスタ204がアクティブになった時点で、入力文字列が正規表現"a(bc)*(d|e)"のパターンに一致したものと判断する。上述したように、NFA回路は、各状態を表すレジスタと、遷移条件の入力があったことを判定する比較器と、をNFAの状態遷移に応じて接続した構成である。また、NFA回路は、1クロックサイクルあたりに1文字(1 byte)を処理するため、動作周波数に比例した検索スループット性能を有する。
上述した手法をさらに拡張して、1クロックサイクルあたりに処理可能な文字数(バイト数)を増加させることで、検索スループットの向上を行う手法が提案されている。非特許文献3と本出願人による特願2006-355533とにおいて、図26に示すような"a(bc)*(d|e)"の正規表現パターンに対する1文字(1 byte)処理のNFAを、状態数を増加することなく、1クロックサイクルあたり複数文字(複数 bytes)の処理を行う場合に拡張する手法が提案されている。以下、1クロックサイクルあたり1文字(1 byte)を処理するNFAを、"1-char NFA"と称する。また、1クロックサイクルあたり複数文字(複数 bytes)を処理するNFAを"multi-char NFA"と称し、処理文字数がk文字のNFAを、"k-char NFA"と称する。
非特許文献3に開示される手法では、1文字単位のNFAをNFA記述行列と呼ばれる行列に変換し、当該NFA記述行列をk回掛け合わせることにより、k-char NFAを求めている。ここで、n個の状態を持つ1文字単位のNFAについて、そのNFAに対応するNFA記述行列をS={sij} (i=0,1,…,N-1, j=0,1,…,N-1)として示す。NFA記述行列Sにおいて、その行i(i=0,1,…,N-1)、又は、列j(j=0,1,…,N-1)は、NFAのn個の状態の1つにそれぞれ対応付けられている。また、NFA記述行列Sの各要素sijは、行iに対応付けられた状態から列jに対応付けられた状態への遷移条件となる文字、又は、文字列の集合を表している。例えば、正規表現"a(bc)*(d|e)"のNFAとして、図26に示すNFAを構築する。構築したNFAの各状態i(i=0,…,4)を、行iと列jとに対応付けた場合に、記述行列Sは、図28に示す5×5行列となる。1サイクルあたり4文字(4バイト)の処理を行う4-char NFAを求める場合には、非特許文献3に開示される手法は、予め定義された演算ルールに従って、図28に示す記述行列Sを4回掛け合わせる。非特許文献3に開示される手法は、図28に示す記述行列Sを掛け合わせた行列M4を計算し(行列M4を図29に示す。)、得られたM4より4-char NFAを求める。その結果、非特許文献3に開示される手法は、図30に示すような4-char NFAを得ることができる。
次に、NFAをハードウェア回路に直接埋め込む方式において、指定文字の繰り返し回数を指定した正規表現を表現する関連技術について説明する。
正規表現においては、上述した基本要素に限られず、指定文字の繰り返し回数を指定した表現を使用することが可能である(以下では、「指定文字の繰り返し回数を指定した正規表現」を、「繰り返し正規表現」と称する)。正規表現"c{n}"は、文字cのn回繰り返しを表す。また、繰り返し回数を指定する正規表現の派生として、"c{n,m}"や、"c{n,}"や、"c{,n}"等の表現も可能である。"c{n,m}"は、文字cのn回以上m回以下の繰り返しを表す。"c{n,}"は、文字cのn回以上の繰り返しを表す。"c{,n}"は、文字cの0回以上n回以下の繰り返しを表す。
このような繰り返し正規表現は、上述した基本要素の組み合わせに基づいて実現することができる。この方式を使用したNFAのハードウェア回路埋め込み方式での実現手法が、非特許文献4の33ページに記載されている。Figure.12では、正規表現".{3,}a"(任意の1文字の3回以上の繰り返しに続いて、文字aが続く正規表現。)を、基本要素の組み合わせ"....*a"に変換することで、NFAのハードウェア埋め込み回路を実現している。また、Figure.13では、正規表現"a.{,2}b"(文字aの後に、任意の1文字の2回以下の繰り返しが存在して、文字bが続く正規表現。)を、基本要素の組み合わせ"a(|.|..|)b"に変換することで、NFAのハードウェア埋め込み回路を実現している。尚、非特許文献3で開示される手法である、NFA記述行列を用いてmulti-char NFAを求める手法においても、1文字単位のNFA記述行列の作成に先立って1文字単位のNFAを作成しておく必要があるため、繰り返し正規表現を上述した正規表現の基本要素に展開する必要がある。
近藤 嘉雪 著、"定本Cプログラマのためのアルゴリズムとデータ構造"、ソフトバンクパブリッシング、1998年、第297-330頁。
R. Sidhu and V. K. Prasanna, "Fast Regular Expression Matching using FPGAs," Proceedings of 9th IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM'01), April 2001., pp.227-238.
山垣則夫、神谷聡史、電子情報通信学会技術研究報告(リコンフィギャラブルシステム)、Vol.107、No.225、2007年、第65-70頁。
Design of Efficient FPGA Circuits for Matching Complex Patterns in Network Intrusion Detection Systems", Christopher R. Clark, MS Thesis, School of Electrical and Computer Engineering, Georgia Institute of Technology, May 2004 (http://users.ece.gatech.edu/~cclark/clark_2004_MS.pdf).
しかしながら、ハードウェアにNFAを直接埋め込み、1クロックサイクルあたりに複数文字に対するパターンマッチングを行う手法において、繰り返し正規表現"c{N}"を実現するためには、以下に説明する問題がある。
まず、第1の問題点は、文字の繰り返し回数の増加に伴って、非特許文献3に記載のNFA記述行列Sのサイズが大きくなる。このため、k-byte NFAを求めるために行う、NFA記述行列Sをk回掛け合わせる演算に要する計算量が増大するという問題がある。
その理由を以下に述べる。NFAをハードウェアに直接埋め込む方式において、パターンマッチング回路の適用例の一つであるネットワーク侵入検知システムについて想定する。そのネットワーク侵入検知システムにおけるパターンマッチングルールには、指定文字の繰り返し回数が1000回以上となる例など、繰り返し回数が非常に多い例が見られる。繰り返し回数が非常に多い正規表現の一例として、繰り返し正規表現"\sCREATE\s[^\n]{1024}"が知られている。繰り返し正規表現"\sCREATE\s[^\n]{1024}"は、空白文字、"CREATE"という文字列、空白文字が続いた後に、改行文字以外の1文字が1024回繰り返すことを示す。
非特許文献3に記載の手法で、例えば、繰り返し正規表現を含む正規表現"BCDA{93}STU"("BCD"の後に、文字'A'の93回繰り返しが続き、さらに"STU"が続く繰り返し正規表現。)を実現する場合には、1-char NFAは、図31に示すNFAとなり、NFA変換行列は、図32に示すNFA行列となる。尚、図32において要素の値を記載していない要素の値は0である。図31に示す1-char NFAにおいて、丸印中の数字はNFAの状態番号を示す。また、図32に示すNFA変換行列Sの左側の数字と上側の数字は、1-char NFAにおける状態番号を示す。ここで、NFA変換行列Sのi行j列目の要素は、1-char NFAにおける状態iから状態jへの遷移条件となる文字集合を表しており、例えば3行4列目の要素'A'は、1-char NFAの状態3から状態4への遷移条件'A'を示す。図31に示す1-char NFAでは状態3~状態96にかけて文字'A'に基づく遷移が93回繰り返されており、これに対応して、図32に示すNFA変換行列Sでは3行4列目~95行96列目にかけて文字'A'が93個斜めに並んでいる。尚、NFA変換行列Sは、全体として、100行100列となる。
このように、NFA変換行列のサイズは、繰り返し正規表現の指定文字の繰り返し回数に大きく依存する。繰り返し正規表現の繰り返し回数をNとした場合に、繰り返し正規表現の繰り返し回数が、繰り返し正規表現以外の正規表現の状態数と比べて大きくなる場合には、そのNFA記述行列のサイズはO(N)となる。一般に、サイズがD×Dである正方行列同士の掛け算の計算量はO(D3)であるため、繰り返し正規表現における指定文字の繰り返し回数の増加に応じて、NFA変換行列の演算に要する計算量は急速に増大する。
また、第2の問題点は、文字の繰り返し回数の増加に伴って、非特許文献3に記載のNFA記述行列Sのサイズが大きくなる。このため、NFA記述行列Sを求めるための演算や、multi-char NFAを求めるためのNFA記述行列SをM回掛け合わせる行列演算において、その演算結果を保持するために必要なメモリ容量が大きくなるという問題がある。
その理由を以下に述べる。繰り返し正規表現"c{N}"における繰り返し回数Nが大きな場合には、NFA記述行列のサイズはO(N)となる。サイズがD×Dである正方行列を保持するために必要なメモリ容量がO(D2)であることを考慮すると、NFA記述行列のサイズの保持に必要なメモリ量はO(N2)となる。このため、繰り返し回数Nの増加に伴って、NFA変換行列の保持に必要なメモリ容量は急速に増大する。
本発明の目的は、繰り返し正規表現を含む正規表現において繰り返し正規表現の繰り返し回数が増加した場合においても、NFAの遷移条件を複数文字単位に拡張したNFAを生成するためのNFA記述行列の演算量の増加を抑制可能な、複数文字同時処理向け文字列照合用有限オートマトン生成システム、有限オートマトン生成方法、有限オートマトン生成プログラムを格納する記録媒体、有限オートマトンを用いたパターンマッチング装置を提供することである。
また、本発明の他の目的は、繰り返し正規表現を含む正規表現において繰り返し正規表現の繰り返し回数が増加した場合においても、NFAの遷移条件を複数文字単位に拡張したNFAを生成するためのNFA記述行列の演算に必要な記憶領域の増加を抑制可能な、複数文字同時処理向け文字列照合用有限オートマトン生成システム、有限オートマトン生成方法、有限オートマトン生成プログラムを格納する記録媒体、有限オートマトンを用いたパターンマッチング装置を提供することである。
本発明に係る有限オートマトン生成システムの一態様は、入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成する有限オートマトン生成システムであって、前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成手段と、前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成手段と、前記固定文字数単位位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小手段と、前記縮小行列形式表現を用いて、前記行列演算を行う行列演算手段と、前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大手段と、を有するものである。
本発明に係る有限オートマトン生成方法の一態様は、入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成する有限オートマトン生成方法であって、前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成し、前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成し、前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成し、前記縮小行列形式表現を用いて、前記行列演算を行い、前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成するものである。
本発明に係る有限オートマトン生成プログラムを格納する記録媒体の一態様は、入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成する有限オートマトン生成プログラムを格納する記録媒体であって、前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成ステップと、前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成ステップと、前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小ステップと、前記縮小行列形式表現を用いて、前記行列演算を行う行列演算ステップと、前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大ステップと、をコンピュータに実行させるものである。
本発明に係るパターンマッチング装置の一態様は、入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成し、前記生成した有限オートマトンを用いてパターンマッチを行うパターンマッチング装置であって、前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成手段と、前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する繰り返しリスト作成手段と、前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成手段と、前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小手段と、前記縮小行列形式表現を用いて、前記行列演算を行う行列演算手段と、前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大手段と、前記行列拡大手段で拡大した行列形式表現を有限オートマトン回路へと変換する回路変換手段と、前記回路変換手段で変換した有限オートマトン回路をハードウェア記述言語を用いて記述する回路記述手段と、を有し、前記回路記述手段で記述した回路記述を用いて、再構成可能ハードウェアデバイス上に前記有限オートマトンを用いたパターンマッチ回路を構成し、当該構成したパターンマッチ回路を用いてパターンマッチを行うものである。
また、本発明に係るパターンマッチング装置の他の一態様は、入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成し、前記生成した有限オートマトンを用いてパターンマッチを行うパターンマッチング装置であって、前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成手段と、前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する繰り返しリスト作成手段と、前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成手段と、前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小手段と、前記縮小行列形式表現を用いて、前記行列演算を行う行列演算手段と、前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大手段と、前記行列拡大手段で拡大した行列形式表現を有限オートマトン回路へと変換する回路変換手段と、前記回路変換手段で変換した有限オートマトン回路をハードウェア記述言語を用いて記述する回路記述手段と、前記回路記述手段で記述した回路記述から、再構成可能ハードウェアデバイスの構成情報を示すコンフィグレーションデータを生成するコンフィグレーション変換手段と、有し、前記コンフィグレーション変換手段で生成したコンフィグレーションデータを用いて、再構成可能ハードウェアデバイス上に前記有限オートマトンを用いたパターンマッチ回路を構成し、当該構成したパターンマッチ回路を用いてパターンマッチを行うものである。
本発明によれば、繰り返し正規表現を含む正規表現において繰り返し正規表現の繰り返し回数が増加した場合においても、NFAの遷移条件を複数文字単位に拡張したNFAを生成するためのNFA記述行列の演算量の増加を抑制可能な、複数文字同時処理向け文字列照合用有限オートマトン生成システム、有限オートマトン生成方法、有限オートマトン生成プログラムを格納する記録媒体、有限オートマトンを用いたパターンマッチング装置を提供することができる。
また、本発明によれば、繰り返し正規表現を含む正規表現において繰り返し正規表現の繰り返し回数が増加した場合においても、NFAの遷移条件を複数文字単位に拡張したNFAを生成するためのNFA記述行列の演算に必要な記憶領域の増加を抑制可能な、複数文字同時処理向け文字列照合用有限オートマトン生成システム、有限オートマトン生成方法、有限オートマトン生成プログラムを格納する記録媒体、有限オートマトンを用いたパターンマッチング装置を提供することができる。
実施の形態1.
図1は本発明の実施の形態1の構成を示すブロック図である。図1を参照すると、本実施の形態1は、キーボード等の入力装置11と、プログラム制御に基づいて動作するデータ処理装置12と、情報を記憶する記憶装置140と、ディスプレイ装置や印刷装置等の出力装置13と、を含む。
図1は本発明の実施の形態1の構成を示すブロック図である。図1を参照すると、本実施の形態1は、キーボード等の入力装置11と、プログラム制御に基づいて動作するデータ処理装置12と、情報を記憶する記憶装置140と、ディスプレイ装置や印刷装置等の出力装置13と、を含む。
記憶装置140は、繰り返し正規表現リスト記憶部141と、1-char NFA記憶部142と、1-char NFA記述行列記憶部143と、NFA記述行列演算情報記憶部144と、multi-char NFA記述行列記憶部145と、multi-char NFA記憶部146と、を含む。
データ処理装置12は、1-char NFA生成手段121と、1-char NFA記述行列生成手段122と、multi-char NFA記述行列生成手段123と、multi-char NFA生成手段124と、HDL変換手段125と、を含む。尚、本実施の形態1では、固定文字数の遷移条件から成る固定文字数単位の有限オートマトンが、1文字単位の有限オートマトン(1-char NFA)である場合を例に説明する。このため、固定文字数単位有限オートマトン生成手段が、1-char NFA生成手段121に対応する。また、固定文字数単位行列形式表現生成手段が、1-char NFA記述行列生成手段122に対応する。
1-char NFA生成手段121は、入力装置11から1つ以上の正規表現を読み込む。1-char NFA生成手段121は、読み込んだ正規表現をε遷移の無い1-char NFAに変換する。1-char NFA生成手段121は、変換した1-char NFAを1-char NFA記憶部142に記憶する。1-char NFA記憶部142への記憶後、1-char NFA生成手段121は、次の正規表現をNFAへ変換する処理を開始する。
また、正規表現を1-char NFAに変換する際に、1-char NFA生成手段121は、繰り返し正規表現リストを作成する。繰り返し正規表現リストは、正規表現に含まれる繰り返し正規表現と、その繰り返し正規表現に対応する1-char NFAの状態番号との対応関係を保持するリストである。1-char NFA生成手段121は、作成した繰り返し正規表現リストを繰り返し正規表現リスト記憶部141に記憶する。
さらに、入力装置11から読み込んだ全ての正規表現を1-char NFAへと変換する処理を完了する際には、1-char NFA生成手段121は、全ての正規表現を変換したことを示す信号を、1-char NFA記述行列生成手段122に通知する。
1-char NFA記述行列生成手段122は、非特許文献3に開示される手法に基づいて、1-char NFA記憶部142に記憶した1-char NFAから1-char NFA記述行列を生成する。1-char NFA記述行列生成手段122は、生成した1-char NFA記述行列を、1-char NFA記述行列記憶部143に記憶する。尚、以下では、1-char NFA記述行列記憶部143に記憶した1-char NFA記述行列を、オリジナル版1-char NFA記述行列と称する。
また、生成した1-char NFA記述行列を1-char NFA記述行列記憶部143に記憶する際に、1-char NFA生成手段121から全ての正規表現を変換したことを示す信号を受信している場合には、1-char NFA記述行列生成手段122は、全ての1-char NFA記述行列の生成処理が完了したことを示す信号を、multi-char NFA記述行列生成手段123に通知する。
multi-char NFA記述行列生成手段123は、入力装置11から動作文字数を読み込む。動作文字数は、生成するmulti-char NFAの遷移条件となる文字(列)の長さであり、以下の説明においては動作文字数をMを使用して表す。
multi-char NFA記述行列生成手段123は、繰り返し正規表現リスト記憶部141に記憶した繰り返し正規表現リストから、行列変換情報リストを作成する。multi-char NFA記述行列生成手段123は、作成した行列変換情報リストをNFA記述行列演算情報記憶部144に記憶する。尚、multi-char NFA記述行列生成手段123は、作成した行列変換情報リストと、後述する縮小版NFA記述行列(縮小版1-char NFA記述行列と、縮小版multi-char NFA記述行列)とをNFA記述行列演算情報記憶部144に記憶する。
multi-char NFA記述行列生成手段123は、1-char NFA記述行列記憶部143に記憶した1-char NFA記述行列から、NFA記述行列演算情報記憶部144に記憶した行列変換情報リストを参照して、1-char NFA記述行列の行列サイズの縮小を行う。multi-char NFA記述行列生成手段123は、行列サイズを縮小した1-char NFA記述行列をNFA記述行列演算情報記憶部144に記憶する。以下では、行列サイズを縮小したNFA記述行列を、「縮小版NFA記述行列」と称する。また、行列サイズを縮小する前のサイズのNFA記述行列を、「オリジナル版NFA記述行列」と称する。
multi-char NFA記述行列生成手段123は、NFA記述行列演算情報記憶部144に記憶した縮小版1-char NFA記述行列を用いて、動作文字数がMの縮小版multi-char NFA記述行列を生成する。multi-char NFA記述行列生成手段123は、生成した縮小版multi-char NFA記述行列をNFA記述行列演算情報記憶部144に記憶する。そして、multi-char NFA記述行列生成手段123は、NFA記述行列演算情報記憶部144に記憶した行列変換情報リストを参照して、NFA記述行列演算情報記憶部144に記憶した縮小版multi-char NFA記述行列からオリジナル版multi-char NFA記述行列を生成する。multi-char NFA記述行列生成手段123は、生成したオリジナル版multi-char NFA記述行列を、multi-char NFA記述行列記憶部145に記憶する。
また、生成したオリジナル版multi-char NFA記述行列をmulti-char NFA記述行列記憶部145に記憶する際に、1-char NFA記述行列生成手段122から全ての1-char NFA記述行列の生成処理が完了したことを示す信号を受信している場合には、multi-char NFA記述行列生成手段123は、全てのmulti-char NFA記述行列の生成処理が完了したことを示す信号を、multi-char NFA生成手段124に通知する。
multi-char NFA生成手段124は、非特許文献3に開示される手法に基づいて、multi-char NFA記述行列記憶部145に記憶したオリジナル版multi-char NFA記述行列から、multi-char NFAを生成する。multi-char NFA生成手段124は、生成したmulti-char NFAをmulti-char NFA記憶部146に記憶する。
また、multi-char NFAをmulti-char NFA記憶部146に記憶する際に、multi-char NFA記述行列生成手段123から全てのmutli-char NFA記述行列の生成処理が完了したことを示す信号を受信している場合には、multi-char NFA生成手段124は、全てのmulti-char NFAの生成処理が完了したことを示す信号を、HDL変換手段125に通知する。
HDL変換手段125は、multi-char NFA記憶部146に記憶したmulti-char NFAについて、そのNFAの状態と、状態間の遷移と、遷移条件等の情報を分析する。HDL変換手段125は、分析結果に基づいて、各状態をレジスタに、遷移条件を文字(列)比較器にそれぞれ変換して、状態間の遷移に応じて各レジスタの間を接続することで、そのNFA回路を記述するVerilog HDL等のHDL(Hardware Description Language)記述に変換する。
また、HDL変換手段125は、multi-char NFA生成手段124から全てのmulti-char NFAの生成処理が完了したことを示す信号を受信した場合には、multi-char NFAから変換した全てのHDL記述と、正規表現からHDLへの変換処理が完了したことを示す信号と、を出力装置13に出力する。
続いて、本実施の形態1の動作について説明する。以下では、具体例として正規表現"BCD((A{100}|E)S)*TTB{50}U"の場合について詳細に説明する。
まず、図2~図6を参照して、1-char NFA生成手段121の動作について説明する。入力装置11は、1つ以上の正規表現を含む。1-char NFA生成手段121は、入力装置11より正規表現を読み込む。1-char NFA生成手段121は、読み込んだ正規表現を、ε遷移の無い1-char NFAに変換する。1-char NFA生成手段121は、変換した1-char NFAを1-char NFA記憶部142に記憶する。1-char NFA記憶部142へと記憶した後、1-char NFA生成手段121は、次の正規表現をNFAへ変換する処理を開始する。
また、正規表現を1-char NFAに変換する際に、1-char NFA生成手段121は、繰り返し正規表現リストを作成する。図3は、繰り返し正規表現リストの構成を示す図である。図に示すように、繰り返し正規表現リストの各要素を、繰り返し正規表現の繰り返し文字と、繰り返し正規表現の繰り返し回数と、1-char NFAにおける繰り返し正規表現の開始状態番号と、から構成する。1-char NFA生成手段121は、各繰り返し正規表現についてこれらの要素を作成し、繰り返し正規表現リストに格納する。即ち、1-char NFA生成手段121は、繰り返し正規表現の個数分、これらの要素を繰り返し正規表現リストに格納する。1-char NFA生成手段121は、作成した繰り返し正規表現リストを繰り返し正規表現リスト記憶部141に記憶する。
1-char NFA生成手段121は、例えば、正規表現"BCD((A{100}|E)S)*TTB{50}U"を、図2に示すε遷移の無い1-char NFAに変換することができる。正規表現"BCD((A{100}|E)S)*TTB{50}U"は、二つの繰り返し正規表現"A{100}"と"B{50}"とを含む。図2に示す1-char NFAにおいて、繰り返し正規表現"A{100}"が、状態3→状態4→・・・・→状態103の状態遷移に対応している。また、繰り返し正規表現"B{50}"が、状態105→状態106→・・・・→状態155の状態遷移に対応している。この場合に、正規表現リストは、図3に示すように2個の要素を含む。即ち、図3に示す正規表現リストは、一つ目の要素として、繰り返し正規表現"A{100}"に対応する要素を含み、その内容は、繰り返し文字'A'と、繰り返し回数100と、開始状態番号3と、から構成する。また、図3に示す正規表現リストは、他の一の要素として、繰り返し正規表現"B{50}"に対応する要素を含み、その内容は、繰り返し文字'B'と、繰り返し回数50と、開始状態番号105と、から構成する。
尚、ここでは、繰り返し文字として'A'や、'B'等の単一文字を例示して説明したが本発明はこれに限定されない。即ち、マッチする文字の長さが1文字の正規表現である場合には、繰り返し文字として任意の正規表現を指定してもよい。繰り返し正規表現の繰り返し文字としては、例えば、"(A|B)"や、"[A-Za-z0-9]"等、複数文字のいずれかを表す正規表現を指定することもできる。
ここで、図4~図6を参照しながら、1-char NFA生成手段121が、正規表現からε遷移の無い1-char NFAを生成する様子を具体的に説明する。図4は、1-char NFA生成手段121が、正規表現からε遷移の無い1-char NFAを生成する処理を示すフローチャートである。正規表現からε遷移の無い1-char NFAを生成する一般的な手法としては、非特許文献1に開示されている手法が良く知られている。非特許文献1に開示される手法では、正規表現からε遷移を含む1-char NFAを生成して、ε遷移を取り除くε-closure(ε-閉包)を行う。これにより、非特許文献1に開示される手法は、生成したε遷移を含む1-char NFAから、ε遷移の無い1-char NFAを生成する。以下、この手法を用いて、正規表現"BCD((A{100}|E)S)*TTB{50}U"から1-char NFAを生成する処理について説明する。
1-char NFA生成手段121は、非特許文献1に開示される手法に基づいて、正規表現"BCD((A{100}|E)S)*TTB{50}U"を、ε遷移を含む1-char NFAに変換する(ステップA1)。図5に、変換後の、ε遷移を含む1-char NFAを示す。ここで、非特許文献3で開示されるNFA記述行列を用いたmulti-char NFA生成手法では、NFA記述行列を生成する前に1-char NFAを予め1文字単位に展開しておく必要がある。このため、1-char NFA生成手段121は、繰り返し正規表現"A{100}"を、文字'A'に基づく100回の状態遷移に展開する(図5において、展開後の該等範囲を点線枠内に示す。)。また、1-char NFA生成手段121は、繰り返し正規表現"B{50}"を、文字'B'に基づく50回の状態遷移に展開する(図5において、展開後の該等範囲を点線枠内に示す。)。
1-char NFA生成手段121は、各繰り返し正規表現を繰り返し文字へと展開する際に、その展開時の繰り返し正規表現の開始状態番号を保持することで、繰り返し正規表現リストを作成する。即ち、1-char NFA生成手段121は、繰り返し正規表現"A{100}"を、図5に示す文字'A'に基づく100回の状態遷移に展開する際に、展開時の開始状態番号13を保持する。また、1-char NFA生成手段121は、繰り返し正規表現"B{50}"を、図5に示す文字'B'に基づく50回の状態遷移に展開する際に、展開時の開始状態番号114を保持する。図6に、このようにして1-char NFA生成手段121が作成した繰り返し正規表現リストを示す。
図4に戻り説明を続ける。1-char NFA生成手段121は、非特許文献1等に開示される手法を用いて、図5に示すε遷移を含む1-char NFAに対してε-closureを行うことで、図2に示すε遷移の無い1-char NFAを生成する(ステップA2)。具体的には、ε-closureにおいて、1-char NFA生成手段121は、ε遷移に従って遷移可能な複数の状態を、一つの状態に統合する処理を行う。ここで、繰り返し正規表現の開始状態がε-closureにおける状態統合の対象となった場合には、1-char NFA生成手段121は、繰り返し正規表現リストにおける開始状態番号を、ε-closure前の状態番号からε-closureにおいて統合された後の状態番号へと変更する。これにより、ε遷移の無い1-char NFAにおいても、繰り返し正規表現とその開始状態番号との対応関係を、繰り返し正規表現リストを用いて管理することができる。
より具体的には、1-char NFA生成手段121は、ε-closureを行うことで、図5に示す状態3、4、7、13を一つに統合して、新たに、図2に示す状態3とする。これに対応して、1-char NFA生成手段121は、図6に示す繰り返し正規表現リストにおいて、繰り返し正規表現"A{100}"に対応する要素(繰り返し文字'A'、繰り返し回数100、開始状態番号13である要素。)の開始状態番号を、ε-closure後の開始状態番号3に書き換える。同様に、1-char NFA生成手段121は、ε-closureを行うことで、図5に示す状態114と状態10とを統合して、新たに図2に示す状態105とする。これに対応して、1-char NFA生成手段121は、図6に示す繰り返し正規表現リストにおいて、繰り返し正規表現"B{50}"に対応する要素(図6に示す最下段の要素。)の開始状態番号を、ε-closure後の開始状態番号105に書き換える。1-char NFA生成手段121は、上述の処理を繰り返すことで、図2に示すε遷移の無い1-char NFAに対応する繰り返し正規表現リストを作成する。図3に、作成した繰り返し正規表現リストを示す。
1-char NFA生成手段121は、図2に示すε遷移の無い1-char NFAにおいて、各繰り返し正規表現に対応する部分の状態遷移に関して、状態番号が昇順の連番となるように状態番号を割り当て直す(ステップA3)。具体的には、1-char NFA生成手段121は、図3に示す繰り返し正規表現リストの各要素の開始状態番号を起点として、繰り返し文字に基づく状態遷移を繰り返し回数分だけ辿り、状態番号が昇順の連番になっているか否かを確認する。状態番号が昇順の連番になっていない場合には、1-char NFA生成手段121は、状態番号の割り当て直しを行う。
図2に示すε遷移の無い1-char NFAでは、既に、繰り返し正規表現"A{100}"に対応する状態遷移は、状態3→4→5→・・・→102→103となっている。即ち、繰り返し正規表現"A{100}"に対応する状態遷移については、既に昇順の連番となる状態番号が割り当てられているため、1-char NFA生成手段121は、状態番号の割り当て直しを行う必要はない。同様に、図2に示すε遷移の無い1-char NFAでは、繰り返し正規表現"B{50}"に対応する状態遷移は、状態105→106→・・・→154→155となっている。即ち、繰り返し正規表現"B{50}"に対応する状態遷移についても、既に昇順の連番となる状態番号が割り当てられているため、1-char NFA生成手段121は、状態番号の割り当て直しを行う必要はない。
一方で、状態番号の割り当て直しが必要になり、繰り返し正規表現に対応する状態遷移の開始状態番号に変化が生じた場合には、1-char NFA生成手段121は、繰り返し正規表現リストの対応する繰り返し正規表現の開始状態番号を、割り当て直し後の状態番号として更新する。
1-char NFA生成手段121は、上述した処理を図3に示す繰り返し正規表現リストの各要素、即ち、全ての繰り返し正規表現に対して繰り返す。
尚、状態番号は、一つの繰り返し正規表現に対応する状態遷移の範囲内において、昇順の連番となっていればよい。従って、異なる繰り返し正規表現に関しては、状態番号に関する制約はない。例えば、繰り返し正規表現"A{100}"に対応する状態遷移の開始状態番号が、繰り返し正規表現"B{50}"に対応する状態遷移の開始状態番号よりも大きなものとなっていてもよい。
1-char NFA生成手段121は、生成したε遷移の無い1-char NFAと、作成した繰り返し正規表現リストと、を出力する(ステップA4)。即ち、1-char NFA生成手段121は、1-char NFAを1-char NFA記憶部142に記憶する。また、1-char NFA生成手段121は、繰り返し正規表現リストを繰り返し正規表現リスト記憶部141に記憶する。
以上説明したようにして、1-char NFA生成手段121は、一つの正規表現から1-char NFAを生成する一連の処理を終了する。入力装置11から複数の正規表現を受信した場合には、1-char NFA生成手段121は、受信した全ての正規表現について上述した処理を繰り返して実行する。
また、1-char NFA生成手段121は、入力装置11から読み込んだ全ての正規表現の変換処理を完了する際には、全ての正規表現を変換したことを示す信号を、1-char NFA記述行列生成手段122に通知する。
次に、図7を参照して、1-char NFA記述行列生成手段122の動作について説明する。1-char NFA記述行列生成手段122は、非特許文献3に開示される手法に基づいて、1-char NFA記憶部142に記憶した1-char NFAから1-char NFA記述行列を生成する。1-char NFA記述行列生成手段122は、生成した1-char NFA記述行列を、1-char NFA記述行列記憶部143に記憶する。
図7は、1-char NFA記述行列の一例を示す図である。1-char NFA記述行列生成手段122は、正規表現"BCD((A{100}|E)S)*TB{50}U"から生成された1-char NFA(図2に示す1-char NFA。)に対して、非特許文献3にて開示される1-char NFA記述行列生成手法を適用することで、1-char NFA記述行列(図7に示す1-char NFA記述行列。)を生成することができる。
図7に示す1-char NFA記述行列は、157×157の正方行列である。図7に示す1-char NFA記述行列において、遷移条件である値を記載していない要素の値は0であり、これは状態遷移が存在しないことを表す。ここで、n個の状態を持つ1-char NFAについて、そのNFAに対応するNFA記述行列をS={sij} (i=0,1,…,N-1, j=0,1,…,N-1)として示す。NFA記述行列Sにおいて、その行i(i=0,1,…,N-1)、又は、列j(j=0,1,…,N-1)は、NFAのn個の状態の1つにそれぞれ対応付けられている。また、NFA記述行列Sの各要素sijは、行iに対応付けられた状態から列jに対応付けられた状態への遷移条件となる文字、又は、文字列の集合を表している。例えば、図7に示す1-char NFA記述行列において、その3行103列目の要素は'E'であり、これは、遷移条件'E'に従って、状態3から状態103へと遷移することを表している。また、0行0列目の'I'は、非特許文献3において規定される特別な遷移条件を示しており、初期状態から初期状態への状態遷移を示すものである。さらに、156行156列目の'F'は、非特許文献3において規定される特別な遷移条件を示しており、終了状態から終了状態への状態遷移を示すものである。
ここで、図7に示す1-char NFA記述行列においては、網掛けを用いて示す領域内の要素は、値を記載していない要素を除いて、その要素の値を0としている。指定された正規表現が異なる場合には、その正規表現に対応する1-char NFA記述行列において網掛けを用いて示す領域内の要素は、その要素の値は0以外の値となる可能性がある。これに対して、図7に1-char NFA記述行列においては、網掛けを用いて示していない領域内の要素は、その要素の値が0でない要素以外は、値が常に0である。即ち、図7に示す1-char NFA記述行列においては、網掛けを用いて示していない領域内の要素は、該当する状態遷移が存在しない。
例えば、図7に示す1-char NFA記述行列において、その第4行~第102行の各要素は、状態4~102から他の状態に遷移する遷移条件を表す。この状態4~102は、図2に示すように、繰り返し正規表現"A{100}"を構成する状態である。また、上述したステップA3において、1-char NFA生成手段121は、繰り返し正規表現に対応する部分の状態遷移については、状態番号が昇順の連番となるように状態番号を割り当てていることから、状態X(4≦X≦102)の遷移先は状態X+1だけである。従って、図7に示す1-char NFA記述行列において、その第4行~第102行の要素のうち、繰り返し文字'A'が設定されている要素以外の要素は、常にその値は0である。
同様に、列について着目すると、図7に示す1-char NFA記述行列において、その第4列~第102列の各要素は、状態4~102へ遷移する遷移条件を表す。この状態4~102は、図2に示すように、繰り返し正規表現"A{100}"を構成する状態である。また、上述したステップA3において、1-char NFA生成手段121は、繰り返し正規表現に対応する部分の状態遷移については、状態番号が昇順の連番となるように状態番号を割り当てていることから、状態X(4≦X≦102)への遷移元は状態X-1だけである。従って、図7に示す1-char NFA記述行列において、その第4列~第102列の要素のうち、繰り返し文字'A'が設定されている要素以外の要素は、常にその値は0である。
さらに、繰り返し正規表現"B{50}"に対応する、第106行~第154行と、第106列~第154列と、に関しても同様にして、繰り返し文字'B'が設定されている要素以外の要素は、常にその値は0である。
このように、1-char NFA生成手段121が、繰り返し正規表現に対応する部分の状態遷移においては状態番号が昇順の連番となるように状態番号を割り当てておくことで、1-char NFA記述行列生成手段122は、繰り返し正規表現に対応する1-char NFA記述行列の領域(図7において網掛けを用いて示していない領域。)において、繰り返し正規表現の繰り返し文字を、第X行、第(X+1)列に、遷移条件を示す値として設定することができる。また、1-char NFA記述行列生成手段122は、それ以外の要素については、全てその値が0である1-char NFA記述行列を生成することができる。
1-char NFA記述行列生成手段122は、生成した1-char NFA記述行列を、1-char NFA記述行列記憶部143に記憶する。以上説明したようにして、1-char NFA記述行列生成手段122は、1-char NFA記述行列を生成する処理を終了する。
また、生成した1-char NFA記述行列を1-char NFA記述行列記憶部143に記憶する際に、1-char NFA生成手段121から全ての正規表現を変換したことを示す信号を受信している場合には、1-char NFA記述行列生成手段122は、全ての1-char NFA記述行列の生成処理が完了したことを示す信号を、multi-char NFA記述行列生成手段123に通知する。
次に、図8~図22を参照して、multi-char NFA記述行列生成手段123の動作について説明する。multi-char NFA記述行列生成手段123は、multi-char NFA記述行列生成処理を開始する前に、予め入力装置11から動作文字数を読み込む。動作文字数は、生成するmulti-char NFAの遷移条件となる文字(列)の長さであり、指定する任意の2以上の値である。以下の説明においては動作文字数をMを使用して表す。以下、具体的な数値を用いて例を説明する場合には、動作文字数Mを4として説明する。
図8は、multi-char NFA記述行列生成手段123が行う処理を示すフローチャートである。まず、図8を参照して、multi-char NFA記述行列生成手段123を用いた処理の概要について説明する。
まず、multi-char NFA記述行列生成手段123は、繰り返し正規表現リスト記憶部141に記憶した繰り返し正規表現リストから、行列変換情報リストを作成する(ステップB1)。繰り返し正規表現リストは、正規表現に含まれる繰り返し正規表現と、その繰り返し正規表現に対応する1-char NFAの状態番号との対応関係を保持するリストである。multi-char NFA記述行列生成手段123は、作成した行列変換情報リストをNFA記述行列演算情報記憶部144に記憶する。
次いで、multi-char NFA記述行列生成手段123は、NFA記述行列演算情報記憶部144に記憶した行列変換情報リストを参照して、1-char NFA記述行列記憶部143に記憶したオリジナル版1-char NFA記述行列D(図7に示す1-char NFA記述行列。)を、縮小版1-char NFA記述行列D'(図12に示す1-char NFA記述行列。)へと変換する。これにより、multi-char NFA記述行列生成手段123は、縮小版1-char NFA記述行列D'を生成する(ステップB2)。multi-char NFA記述行列生成手段123は、生成した縮小版1-char NFA記述行列D'をNFA記述行列演算情報記憶部144に記憶する。具体的には、multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dから縮小版1-char NFA記述行列D'への変換において、オリジナル版1-char NFA記述行列Dのうち繰り返し正規表現に対応する状態遷移に関する要素を、動作文字数M分の行または列に置き換える。より具体的には、multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dの第4行~第102行(100-1=99行分)と第4列~第102列(100-1=99列分)とにかけての要素(即ち、繰り返し正規表現"A{100}"に対応する要素。)を、動作文字数M分の行、又は、列に置き換える。また、multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dの第106行~第154行(50-1=49行分)と第106列~第154列(50-1=49列分)とにかけての要素(即ち、繰り返し正規表現"B{50}"に対応する要素。)を、動作文字数M分の行、又は、列に置き換える。
次いで、multi-char NFA記述行列生成手段123は、NFA記述行列演算情報記憶部144に記憶した縮小版1-char NFA記述行列D'を用いて、動作文字数がMの縮小版multi-char NFA記述行列D'4(図13に示すmulti-char NFA記述行列。)を生成する(ステップB3)。multi-char NFA記述行列生成手段123は、生成した縮小版multi-char NFA記述行列D'4をNFA記述行列演算情報記憶部144に記憶する。
次いで、multi-char NFA記述行列生成手段123は、NFA記述行列演算情報記憶部144に記憶した行列変換情報リストを参照して、NFA記述行列演算情報記憶部144に記憶した縮小版multi-char NFA記述行列D'4から、オリジナル版multi-char NFA記述行列D4(図14に示すオリジナル版multi-char NFA記述行列。)を生成する(ステップB4)。具体的には、multi-char NFA記述行列生成手段123は、縮小版multi-char NFA記述行列D'4からオリジナル版multi-char NFA記述行列D4への変換において、繰り返し正規表現に対応する状態遷移に関する動作文字数M分の行、又は、列を、元のサイズに戻す作業を行う。
次いで、multi-char NFA記述行列生成手段123は、生成したオリジナル版multi-char NFA記述行列D4を出力する(ステップB5)。即ち、multi-char NFA記述行列生成手段123は、生成したオリジナル版multi-char NFA記述行列D4を、multi-char NFA記述行列記憶部145に記憶する。
非特許文献3に開示される手法では、図7に示すオリジナル版1-char NFA記述行列Dを動作文字数M回分掛け合わせることで、図14に示すオリジナル版multi-char NFA記述行列D4を求める構成としている。しかし、この手法では、157×157回の正方行列の演算が必要となる。これに対して、本発明に係るmulti-char NFA記述行列生成手段123を用いた処理フローでは、multi-char NFA記述行列生成手段123は、まず、上述したステップB2において、157×157の正方行列であるオリジナル版1-char NFA記述行列Dを、16×16の正方行列である縮小版1-char NFA記述行列D'に変換する。multi-char NFA記述行列生成手段123は、ステップB3において、16×16の正方行列である縮小版1-char NFA記述行列D'を動作文字数M回分掛け合わせることで、16×16の正方行列である縮小版multi-char NFA記述行列D'4を生成する。multi-char NFA記述行列生成手段123は、ステップB4において、16×16の正方行列である縮小版multi-char NFA記述行列D'4から、157×157の正方行列であるオリジナル版multi-char NFA記述行列D4を生成する。即ち、multi-char NFA記述行列生成手段123は、ステップB2において、行列サイズの小さなNFA記述行列を生成し、これを用いて演算を行うことを特徴とする。ここで、N×Nの正方行列の演算量はO(N3)であるため、非特許文献3に開示される手法を用いた場合の演算量はO(1573)=O(3869893)となる。これに対して、本発明による演算量はO(163)=O(4096)となり、演算量を約1000分の1に削減することができる。
尚、上述したステップB1において生成する行列変換情報リストは、ステップB2とステップB4とにおいて、縮小版NFA記述行列とオリジナル版NFA記述行列との相互変換を行うために必要な情報を保持するものである。このため、multi-char NFA記述行列生成手段123は、縮小版NFA記述行列とオリジナル版NFA記述行列の相互変換処理を行う前に、ステップB1において行列変換情報リストを予め生成する。
以下、図8に示す上述したステップB1~B5について、詳細に説明する。まず、図9~図11を参照して、ステップB1について説明する。
ステップB1において、multi-char NFA記述行列生成手段123は、繰り返し正規表現リスト記憶部141に記憶した繰り返し正規表現リストから、行列変換情報リストを作成する(ステップB1)。繰り返し正規表現リストは、正規表現に含まれる繰り返し正規表現と、その繰り返し正規表現に対応する1-char NFAの状態番号との対応関係を保持するリストである。
図9は、行列変換情報リストの構成を示す図である。図に示すように、行列変換情報リストの各要素は、その要素のインデックス番号iと、繰り返し正規表現の繰り返し文字Tiと、繰り返し正規表現の繰り返し回数Ciと、オリジナル版のNFA記述行列における繰り返し正規表現の開始状態番号Siと、オリジナル版のNFA記述行列における繰り返し正規表現の終了状態番号Eiと、縮小版のNFA記述行列における繰り返し正規表現の開始状態番号S'iと、縮小版のNFA記述行列における繰り返し正規表現の終了状態番号E'iと、の各フィールドを含む。尚、インデックス番号iは、multi-char NFA記述行列生成手段123が行う動作の説明を容易とするために用意したフィールドであり、本発明を実施する上で必須のフィールドではない。
図10は、ステップB1において、multi-char NFA記述行列生成手段123が行列変換情報リストを生成する処理を示すフローチャートである。まず、ステップC1からC4(図において、ループ1として示す。)において、multi-char NFA記述行列生成手段123は、繰り返し正規表現リストの各エントリを行列変換情報リストにコピーする。
具体的には、multi-char NFA記述行列生成手段123は、ステップC1においてループ1の処理を開始する。multi-char NFA記述行列生成手段123は、繰り返し正規表現リストの各エントリについて、そのエントリの繰り返し正規表現の繰り返し回数が、M+1よりも大きいか否かを確認する(ステップC2)。そのエントリの繰り返し正規表現の繰り返し回数がM+1よりも大きい場合には、multi-char NFA記述行列生成手段123は、行列変換情報リストにそのエントリをコピーする(ステップC3)。multi-char NFA記述行列生成手段123が繰り返し正規表現リストのエントリを行列変換情報リストにコピーする際には、multi-char NFA記述行列生成手段123は、繰り返し正規表現リストの繰り返し文字と、繰り返し回数と、開始状態番号と、を、行列変換情報リストの繰り返し文字と、繰り返し回数と、オリジナル版記述行列の開始状態番号とに、それぞれコピーする。
一方、繰り返し回数がM+1以下の場合には、multi-char NFA記述行列生成手段123は、そのエントリを正規表現リストから行列変換情報リストへとコピーしない。これは、繰り返し回数がM+1以下の場合には、ステップB2において、multi-char NFA記述行列生成手段123が縮小版NFA記述行列を作成することにしても、オリジナル版NFA記述行列と比較して行列サイズの削減につながらないためである。従って、multi-char NFA記述行列生成手段123が行列変換情報リストを作成する段階であるステップC1~C4においては、繰り返し回数がM+1以下である繰り返し正規表現についてはその処理対象から除外する。これにより、行列変換情報リストに含まれる各エントリの繰り返し回数は、M+1よりも大きいことが保証される。
例えば、動作文字数MがM=4である場合に、正規表現"BCD((A{100}|E)S)*TTB{50}U"に対応する繰り返し正規表現リスト(繰り返し正規表現リストを図3に示す。)においては、繰り返し回数がM+1(=5)以下の繰り返し正規表現は含まれていない。このため、multi-char NFA記述行列生成手段123は、図3に示す繰り返し正規表現の全エントリを、行列変換情報リストにコピーする。
multi-char NFA記述行列生成手段123は、ステップC4においてループ1の処理を完了する。図11は、ループ1の処理が完了した時点での、行列変換情報リストを示す図である。
次いで、multi-char NFA記述行列生成手段123は、行列変換情報リストのエントリを、オリジナル版記述行列の開始状態番号の昇順に従って並び替える(ステップC5)。尚、図11に示す行列変換情報リストでは、オリジナル版記述行列の開始状態番号の昇順に従って行列変換情報リストのエントリが格納されている。このため、ステップC5における並び替え処理の実行後においても、図11に示す行列変換情報リストのエントリの順序に変化はなく、図11に示すままである。
次いで、multi-char NFA記述行列生成手段123は、縮小版1-char NFA記述行列D'の行列サイズN'を計算する(ステップC6)。ステップB2におけるオリジナル版1-char NFA記述行列Dから縮小版1-char NFA記述行列D'への変換では、multi-char NFA記述行列生成手段123は、図7に示すオリジナル版1-char NFA記述行列Dのうち、その繰り返し正規表現に対応する状態遷移に関する行と列(具体的には、第Si+1行~第Ei-1行を示す。)を、M行分に縮小する。ここで、Siは行列変換情報リストの各エントリのオリジナル版NFA記述行列の開始状態番号を示す。Eiは、行列変換情報リストの各エントリのオリジナル版NFA記述行列の終了状態番号を示す。また、Mは動作文字数を示す。これにより、multi-char NFA記述行列生成手段123は、行列変換情報リストの各エントリについて、オリジナル版1-char NFA記述行列Dの(Ei-1)-(Si+1)-1=Ei-Si-1=Ci-1行分を、縮小版1-char NFA記述行列D'のM行分に変換する。ここで、行列変換情報リストの各エントリの繰り返し回数Ciについて、繰り返し回数Ci=Ei-Siの関係が成立する。また、multi-char NFA記述行列生成手段123は、列についても同様に、第Si+1列~第Ei-1列を、M列分に縮小する。従って、オリジナル版1-char NFA記述行列Dの行列サイズをNとすると、縮小版1-char NFA記述行列D'の行列サイズN'を下記の数(1)を使用して示すことができる。尚、Kは、正規表現に含まれる繰り返し正規表現の個数を示す。
次に、ステップC7からC13(図において、ループ2として示す。)において、multi-char NFA記述行列生成手段123は、行列変換情報リストの各エントリについて、エントリ中の空欄である内容を計算する。ここで、空欄の内容とは、図11においては空白の部分である。具体的には、空欄の内容は、オリジナル版NFA記述行列の終了状態番号と、縮小版NFA記述行列の開始状態番号と、終了状態番号と、を示す。
上述したステップC6の説明において述べたように、ステップB2におけるオリジナル版1-char NFA記述行列Dから縮小版1-char NFA記述行列D'への変換では、multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dのうち、その繰り返し正規表現に対応する状態遷移に関する行と列(具体的には、第Si+1行~第Ei-1行を示す。)を、M行分に縮小する。ここで、Siは行列変換情報リストの各エントリのオリジナル版NFA記述行列の開始状態番号を示す。Eiは、行列変換情報リストの各エントリのオリジナル版NFA記述行列の終了状態番号を示す。また、Mは動作文字数を示す。
以下、図7に示すオリジナル版1-char NFA記述行列Dと、図12に示す縮小版1-char NFA記述行列D'とを用いて具体的に説明する。multi-char NFA記述行列生成手段123は、指定された正規表現"BCD((A{100}|E)S)*TTB{50}U"の繰り返し正規表現"A{100}"に対応するオリジナル版1-char NFA記述行列Dの第4行~第102行を、縮小版1-char NFA記述行列D'の第4行~第7行に変換する。また、multi-char NFA記述行列生成手段123は、指定された正規表現"BCD((A{100}|E)S)*TTB{50}U"の繰り返し正規表現"B{50}"に対応するオリジナル版1-char NFA記述行列Dの第106行~第154行を、縮小版1-char NFA記述行列D'の第11行~第14行に変換する。また、multi-char NFA記述行列生成手段123は、列についても同様に変換する。
ループ2を示すステップC7~C13においては、multi-char NFA記述行列生成手段123は、繰り返し正規表現に対応する部分のオリジナル版1-char NFA記述行列Dと縮小版1-char NFA記述行列D'とにおける対応関係を求め、その対応関係を行列変換情報リストに保持する。multi-char NFA記述行列生成手段123は、続くステップC8~C12において、行列変換情報リストの各エントリについての処理を行う。
具体的には、multi-char NFA記述行列生成手段123は、ステップC7においてループ2の処理を開始して、i番目のエントリの処理を開始する(ステップC8)。multi-char NFA記述行列生成手段123は、オリジナル版NFA記述行列Dの終了状態番号Eiを計算する(ステップC9)。ここで、multi-char NFA記述行列生成手段123は、Ei=Si+Ciの関係が成立することを利用して、この関係に基づいてEiを計算する。
multi-char NFA記述行列生成手段123は、縮小版記述行列D'の開始状態番号S'iを計算する(ステップC10)。multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dから縮小版1-char NFA記述行列D'への変換において、繰り返し正規表現に関連しない状態遷移を保持する。例えば、multi-char NFA記述行列生成手段123は、図7に示すオリジナル版1-char NFA記述行列Dの第103行~第105行を、図12に示す縮小版1-char NFA記述行列D'の第8行~第10行にコピーする。繰り返し正規表現に関連しない部分の行数・列数は、オリジナル版1-char NFA記述行列Dと縮小版1-char NFA記述行列D'とで同じである。このため、S'i=E'i-1+(Si-Ei-1)の関係式が成立する。multi-char NFA記述行列生成手段123は、この関係式に基づいて、S'iを計算する。尚、行列変換情報リストの最初のエントリ(インデックスi=0)の計算を行う際には、multi-char NFA記述行列生成手段123は、E0=0、E'0=0と仮定して計算を行う。
multi-char NFA記述行列生成手段123は、縮小版記述行列D'の終了状態番号E'iを計算する(ステップC11)。縮小版1-char NFA記述行列D'では、繰り返し正規表現に対応する状態遷移の開始状態番号と終了状態番号との間に、動作文字数M個だけの差がある。このため、E'i=S'i+Mの関係が成立する。multi-char NFA記述行列生成手段123は、この関係に基づいてE'iを計算する。
multi-char NFA記述行列生成手段123は、ステップC12においてi番目のエントリの処理を完了した後、ステップC13においてループ2の処理を完了する。以上により、multi-char NFA記述行列生成手段123は、ステップB1における行列変換情報の生成処理を完了する。
次に、図15~図17を参照して、ステップB2について説明する。まず、ステップB2の説明に先立ち、ステップB2以降の説明において用いる符号について以下のように定義する(尚、既に上述したようにして定義した符号も含む)。角括弧内の値は、本実施の形態1における動作説明で使用する具体例を示す値である。
M:動作文字数(M≧2)[M=4]
K:行列変換情報リストのエントリ数(K≧0)[K=2]
N:オリジナル版NFA記述行列の行列サイズ(Nは自然数)[N=157]
N':縮小版NFA記述行列の行列サイズ(N'は自然数、N'≦N)[N'=17]
尚、以下では、「NFA記述行列」として記載した場合には、「1-char NFA記述行列」と「multi-char NFA記述行列」とのいずれをも示すものとする。従って、Nは1-char NFA記述行列の行列サイズを示す。N'はmulti-char NFA記述行列の行列サイズを示す。Siと、Eiと、S'iと、E'iと、Ciと、は、行列変換情報リストにおける各エントリの要素(1≦i≦K、但しK≧1である。)を示す。K=0の場合には、行列変換情報リストは空である。E0=E'0=0、SK+1=N-1、S'K+1=N'-1であるものと定義する。
M:動作文字数(M≧2)[M=4]
K:行列変換情報リストのエントリ数(K≧0)[K=2]
N:オリジナル版NFA記述行列の行列サイズ(Nは自然数)[N=157]
N':縮小版NFA記述行列の行列サイズ(N'は自然数、N'≦N)[N'=17]
尚、以下では、「NFA記述行列」として記載した場合には、「1-char NFA記述行列」と「multi-char NFA記述行列」とのいずれをも示すものとする。従って、Nは1-char NFA記述行列の行列サイズを示す。N'はmulti-char NFA記述行列の行列サイズを示す。Siと、Eiと、S'iと、E'iと、Ciと、は、行列変換情報リストにおける各エントリの要素(1≦i≦K、但しK≧1である。)を示す。K=0の場合には、行列変換情報リストは空である。E0=E'0=0、SK+1=N-1、S'K+1=N'-1であるものと定義する。
また、以下に説明するステップB2~B4においては、オリジナル版NFA記述行列を、図15に示すような(2K+1)×(2K+1)個の領域に分割して考えるものとする。領域の境界をSiとEiとに基づいて定める(1≦i≦K)。即ち、Si番目(1≦i≦K)の行と列とを用いて、領域の境界を定める。また、Ei番目(1≦i≦K)の行と列とを用いて、領域の境界を定める。SiとEi自身は、それぞれ奇数番目の領域側に含まれる。具体的には、SiとEi自身を、図15に示す太線を用いて示す。図15に示すオリジナル版NFA記述行列において、上からx番目、かつ、左からy番目に位置する領域を、領域(x,y)と称する。xとyの値は、いずれも1から開始する。例えば、上から1番目、かつ、左から1番目に位置する領域を、領域(1,1)として示す。図7に示すオリジナル版1-char NFA記述行列Dを領域分割した例を、図15に示す。図15に示すように、multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dを5×5個の領域に分割する。同様に、縮小版NFA記述行列についても、(2K+1)×(2K+1)個の領域に分割して考えるものとする。図16にその具体例を示す。図16では、SiとEiとに代えて、S'iとE'iとを用いて領域の境界を決定する。
次に、ステップB2における縮小版1-char NFA記述行列D'の生成処理について説明する。図17は、multi-char NFA記述行列生成手段123が縮小版1-char NFA記述行列D'を生成する処理を示すフローチャートである。最初に、multi-char NFA記述行列生成手段123は、縮小版1-char NFA記述行列D'を保持するためのN'×N'行列をNFA記述行列演算情報記憶部144に用意する(ステップD1)。このとき、multi-char NFA記述行列生成手段123は、用意したN'×N'行列の全要素を0として初期化する。尚、縮小版1-char NFA記述行列D'の行列サイズN'は、上述したステップB1内のステップC6において算出済みである。
次に、ステップD2~D6のループ1において、multi-char NFA記述行列生成手段123は、オリジナル版1-char NFA記述行列Dの領域のうち、上からも奇数番目であり、かつ、左からも奇数番目である領域(2i-1,2j-1)(i,jは整数であり、1≦i≦K+1,1≦j≦K+1を満たす。)を、縮小版1-char NFA記述行列D'の同じ位置の領域(2i-1,2j-1)にコピーする。即ち、multi-char NFA記述行列生成手段123は、図15において網掛けを用いて示す領域を、図16において網掛けを用いて示す領域にコピーする。この網掛けを用いて示す領域は、繰り返し正規表現に関係のない領域を示す。図7に示す1-char NFA記述行列Dでは、網掛けを用いて示す領域内の要素は、その値が0である要素を示す。図15において網掛けを用いて示す領域内の要素は、入力された正規表現が異なる場合には、0以外の値となる可能性がある。このため、縮小版1-char NFA記述行列D'においても、網掛けを用いて示す領域の行列要素については、値をそのまま利用するものとする。尚、図17に示すステップD3~D5は、各領域(2i-1,2j-1)に関する上述した処理を一般的に示したものである。即ち、ステップD3~D5において、multi-char NFA記述行列生成手段123は、各領域(2i-1,2j-1)についての処理を行う。
次に、ステップD7~D13において、multi-char NFA記述行列生成手段123は、生成する縮小版1-char NFA記述行列D'の残りの領域(図16において網掛けを用いて示していない領域)について、上から偶数番目、又は、左から偶数番目である領域についての処理を行う。
ここで、図16において網掛けを用いて示していない領域は、図15に示すオリジナル版1-char NFA記述行列Dにおいて、繰り返し正規表現に対応する領域である。このため、繰り返し正規表現の繰り返し回数の増加に応じて、図16において網掛けを用いて示していない領域の行と列の数は、その繰り返し回数に比例して多くなる。この網掛けを用いて示していない領域は、繰り返し正規表現に対応する領域であり、上述したステップA3において、1-char NFA生成手段121が、繰り返し正規表現に対応する部分の状態遷移に関して、状態番号が昇順の連番となるように状態番号を割り当てている。このため、この網掛けを用いて示していない領域に存在する可能性のある状態遷移は、状態Xから状態X+1への状態遷移だけである。
従って、行列変換情報リストのi番目のエントリに対応する繰り返し正規表現について、multi-char NFA記述行列生成手段123は、図15に示すオリジナル版1-char NFA記述行列Dにおいて、繰り返し文字Aiの配置を領域(2i-1,2i)の左下の位置から開始して、これに続けて領域(2i,2i)を右斜め下方向に横切るように連続して位置し、さらに続けて領域(2i,2i+1)の左下にかけて位置するように構成する。従って、領域(2i-1,2i)の左下の位置から領域(2i,2i+1)の左下にかけて、繰り返し文字AiがCi個並ぶ構成となる。網掛けを用いて示していない領域において、その行列要素は繰り返し文字だけとなり、繰り返し正規表現に該当しない要素は全て0となる(図7参照)。
同様にして、行列変換情報リストのi番目のエントリに対応する繰り返し正規表現について、multi-char NFA記述行列生成手段123は、生成する縮小版1-char NFA記述行列に関しても、図16に示すように、繰り返し文字Aiの配置を領域(2i-1,2i)の左下の位置から開始して、これに続けて領域(2i,2i)を右斜め下方向に横切るように連続して位置し、さらに続けて領域(2i,2i+1)の左下にかけて位置するように、行列の要素を設定する。
ただし、図16に示す、生成する縮小版1-char NFA記述行列においては、上から偶数番目、又は、左から偶数番目の領域は、行、又は、列の幅が、動作文字数Mとなるように用意している。このため、繰り返し文字Aiが斜めに並ぶ個数は、M+1個となる。図7に示すオリジナル版1-char NFA記述行列を参照して具体例を説明すると、行列変換情報リストの一つめのエントリは、繰り返し正規表現"A{100}"に関するものであり、繰り返し文字A1='A'、縮小版NFA記述行列における開始状態番号S'1=3、終了状態番号E'1=8である。このため、縮小版1-char NFA記述行列の要素(3行,4列)から要素(7行,8列)にかけて、繰り返し文字'A'がM+1(=5)個並ぶ。また同様に、行列変換情報リストの二番目のエントリは、繰り返し正規表現"B{50}"に関するものであり、縮小版1-char NFA記述行列の要素(10行,11列)から要素(14行,15列)にかけて、繰り返し文字'B'がM+1(=5)個並ぶ。尚、図17に示すステップD8~D12は、行列変換情報リストのi番目のエントリについて、そのエントリに対応する繰り返し正規表現に関する領域内に繰り返し文字を設定する処理を一般的に示したものである。即ち、ステップD8~D12において、multi-char NFA記述行列生成手段123は、i番目のエントリに関する範囲についての処理を行う。
以上説明したように、multi-char NFA記述行列生成手段123は、ステップB2における、縮小版1-char NFA記述行列D'の生成処理を終了する。multi-char NFA記述行列生成手段123は、図7に示すオリジナル版1-char NFA記述行列に対して、ステップB2の処理を行う。図12は、multi-char NFA記述行列生成手段123が生成する、縮小版1-char NFA記述行列である。尚、図12に示す縮小版1-char NFA記述行列においては、行列要素を記載していない要素の値は0であり、対応する状態遷移がないことを示す。また、行列要素が記載されている場合には、要素として記載されている文字(群)が状態遷移の遷移条件であることを示す。例えば、図12に示す縮小版1-char NFA記述行列において、(3行,8列)の要素は'E'であり、これは、状態3から状態8に文字'E'に基づいて状態遷移があることを示す。
次に、ステップB3について説明する。ステップB3において、multi-char NFA記述行列生成手段123は、縮小版multi-char NFA記述行列D'4を生成する。上述したステップB3において、multi-char NFA記述行列生成手段123は、非特許文献3にて開示されている手法に基づいて、縮小版1-char NFA記述行列D'をM回掛け合わせることにより、縮小版multi-char NFA記述行列D'Mを計算する。ここで、D'4=D'×D'×D'×D'である。尚、NFA記述行列同士の掛け算時の演算定義については、非特許文献3の68ページ、3.3章 変換手法と、3.4章 変換例とに詳述されている。動作文字数M=4の場合に、ステップB3において、multi-char NFA記述行列生成手段123は、図12に示す縮小版1-char NFA記述行列D'から、図13に示す縮小版multi-char(4-char) NFA記述行列D'4を生成する。動作文字数Mは4であるため、図13に示す縮小版4-char NFA記述行列D'4は4文字単位のNFAの遷移条件を定義するNFA記述行列である。また、遷移条件を示す縮小版4-char NFA記述行列D'4の各要素は、長さ4の文字列となる。尚、図13において、具体的な要素の値が記載されていない要素の値は0であり、遷移条件が存在しないことを示す。
次に、図18~図22を参照して、ステップB4について説明する。図18は、ステップB4において、multi-char NFA記述行列生成手段123が、オリジナル版multi-char NFA記述行列D4を生成する処理を示すフローチャートである。図18に示すフローチャートは、以下に示す5つの処理(1)~(5)を含む。
(1)上から奇数番目であり、かつ、左から奇数番目の領域に対する処理(ステップE2~E4における処理を示す。)。
(2)上から奇数番目であり、かつ、左から偶数番目の領域に対する処理(ステップE5~E7における処理を示す。)。
(3)上から偶数番目であり、かつ、左から奇数番目の領域に対する処理(ステップE8~E10における処理を示す。)。
(4)上から偶数番目であり、かつ、左から偶数番目の領域に対する処理(ステップE11~E13における処理を示す。)。
(5)繰り返し正規表現に関する補正(ステップE14~E18における処理を示す。)。
尚、NFA記述行列の領域の考え方は、図15と図16に示す通りである。また、上記(1)~(5)の処理は互いに独立であり、図18に示すフローチャートにおいては(1)から(5)の順番に従って実行するものとして説明しているが、実行順序に制約はなく、その実効順序を変更してもよい。以下では、図18に示すフローチャートの順番に従って説明する。上記(1)から(5)の処理に先立ち、multi-char NFA記述行列生成手段123は、N×N行列DMを用意しておく。
(1)上から奇数番目であり、かつ、左から奇数番目の領域に対する処理(ステップE2~E4における処理を示す。)。
(2)上から奇数番目であり、かつ、左から偶数番目の領域に対する処理(ステップE5~E7における処理を示す。)。
(3)上から偶数番目であり、かつ、左から奇数番目の領域に対する処理(ステップE8~E10における処理を示す。)。
(4)上から偶数番目であり、かつ、左から偶数番目の領域に対する処理(ステップE11~E13における処理を示す。)。
(5)繰り返し正規表現に関する補正(ステップE14~E18における処理を示す。)。
尚、NFA記述行列の領域の考え方は、図15と図16に示す通りである。また、上記(1)~(5)の処理は互いに独立であり、図18に示すフローチャートにおいては(1)から(5)の順番に従って実行するものとして説明しているが、実行順序に制約はなく、その実効順序を変更してもよい。以下では、図18に示すフローチャートの順番に従って説明する。上記(1)から(5)の処理に先立ち、multi-char NFA記述行列生成手段123は、N×N行列DMを用意しておく。
まず、ステップE2~E4における処理を示す(1)の処理について説明する。(1)の処理は、上から奇数番目であり、かつ、左から奇数番目の領域に対する処理である。上から奇数番目であり、かつ、左から奇数番目である領域は、遷移元状態と遷移先状態ともに、繰り返し正規表現に関係のない状態に関する遷移条件を示している。
例えば、図13に示す縮小版4-char NFA記述行列において、領域(1,1)の第1行、第3列目の要素"CDES"は、図2に示す状態遷移において状態1→状態2→状態3→状態103→状態3へと1文字単位の遷移を4回行った場合に、状態1→状態3へと遷移条件"CDES"に基づいて遷移することを示す。上から奇数番目であって、かつ、左から奇数番目である領域内の他の要素についても、同様に示す。縮小版4-char NFA記述行列の領域内の各要素と、オリジナル版4-char NFA記述行列の同じ位置の領域内の各要素とは一対一に対応している。このため、multi-char NFA記述行列生成手段123は、上から奇数番目であって、左から奇数番目である領域については、縮小版4-char NFA記述行列の各領域を、オリジナル版4-char NFA記述行列の同じ位置の領域にコピーする(ステップE3)。
尚、図18に示すステップE2~E4は、上述した処理を一般的に示したものである。即ち、ステップE2~E4において、multi-char NFA記述行列生成手段123は、各領域についての処理を行う。ステップE3における領域毎の処理では、multi-char NFA記述行列生成手段123は、ステップB1において計算した行列変換情報リストを参照することで、コピー先の座標を一意に特定することができる。図19は、ステップE4までの処理を終えた時点での、オリジナル版4-char NFA記述行列を示す図である。網掛けを用いて示す部分は、ステップE2~E4の処理において、multi-char NFA記述行列生成手段123が、縮小版4-char NFA記述行列からコピーした要素である。
次いで、ステップE5~E7における(2)の処理について説明する。(2)の処理は、上から奇数番目であり、かつ、左から偶数番目の領域に対する処理である。上から奇数番目であり、かつ、左から偶数番目である領域は、遷移元状態が繰り返し正規表現に関係のない状態であって、遷移先状態が繰り返し正規表現に関係する状態に関する遷移条件を示している。
例えば、図13に示す縮小版4-char NFA記述行列において、領域(1,2)の第1行、第5列目の要素"CDAA"は、図2に示す状態遷移において状態1→状態2→状態3→状態4→状態5へと1文字単位の遷移を4回行った場合に、状態1→状態5へ遷移条件"CDAA"に基づいて遷移することを示す。上から奇数番目であって、かつ、左から偶数番目である領域内の他の要素についても、同様に示す。ここで、繰り返し正規表現に関係しない状態から繰り返し正規表現に関係する状態へとM文字単位の状態遷移を行う場合には、遷移先状態となり得るのは繰り返し正規表現の先頭からM番目の状態だけであることに着目する。これにより、multi-char NFA記述行列生成手段123は、縮小版multi-char NFA記述行列において、上から奇数番目であって、かつ、左から偶数番目である領域を、オリジナル版multi-char NFA記述行列の同じ位置の領域のうち左側の境界に接する範囲にコピーする(ステップE6)。
尚、図18に示すステップE5~E7は、上述した処理を一般的に示したものである。即ち、ステップE5~E7において、multi-char NFA記述行列生成手段123は、各領域についての処理を行う。ステップE6における領域毎の処理では、multi-char NFA記述行列生成手段123は、ステップB1において計算した行列変換情報リストを参照することで、コピー先の座標を一意に特定することができる。図20は、ステップE7までの処理を終えた時点での、オリジナル版4-char NFA記述行列を示す図である。図20ではM=4の場合を示しているので、multi-char NFA記述行列は4-char NFA記述行列となる。網掛けを用いて示す部分(図において、R1を用いて示す部分。)は、上述したステップE2~E4の処理において、multi-char NFA記述行列生成手段123が、縮小版4-char NFA記述行列からコピーした要素である。濃い網掛けを用いて示す部分(図において、R2を用いて示す部分。)は、ステップE5~E7の処理において、multi-char NFA記述行列生成手段123が、縮小版4-char NFA記述行列から新たにコピーした要素である。尚、薄い網掛けを用いて示す部分R1は、multi-char NFA記述行列生成手段123が、上述したステップE4までの処理においてコピーした要素を示す。
次いで、ステップE8~E10における(3)の処理について説明する。(3)の処理は、上から偶数番目であり、かつ、左から奇数番目の領域に対する処理である。上から偶数番目であり、かつ、左から奇数番目である領域は、遷移元状態が繰り返し正規表現に関係する状態であって、遷移先状態が繰り返し正規表現に関係のない状態に関する遷移条件を示している。
例えば、図13に示す縮小版4-char NFA記述行列において、領域(2,3)の第6行、第9列目の要素"AAST"は、図2に示す状態遷移において状態101→状態102→状態103→状態3→状態104へと1文字単位の遷移を4回行った場合に、状態101→状態104へ遷移条件"AAST"に基づいて遷移することを示す。上から偶数番目であって、かつ、左から奇数番目である領域内の他の要素についても、同様に示す。ここで、繰り返し正規表現に関係する状態から繰り返し正規表現に関係しない状態へとM文字単位の状態遷移を行う場合には、遷移元状態となり得るのは繰り返し正規表現の末尾からM番目の状態だけであることに着目する。これにより、multi-char NFA記述行列生成手段123は、縮小版multi-char NFA記述行列において、上から偶数番目であって、かつ、左から奇数番目である領域を、オリジナル版multi-char NFA記述行列の同じ位置の領域のうち下側の境界に接する範囲にコピーする(ステップE9)。
尚、図18に示すステップE8~E10は、上述した処理を一般的に示したものである。即ち、ステップE8~E10において、multi-char NFA記述行列生成手段123は、各領域についての処理を行う。ステップE9における領域毎の処理では、multi-char NFA記述行列生成手段123は、ステップB1において計算した行列変換情報リストを参照することで、コピー先の座標を一意に特定することができる。図21は、ステップE10までの処理を終えた時点での、オリジナル版4-char NFA記述行列を示す図である。図21においては、濃い網掛けを用いて示す部分(図において、R4を用いて示す部分。)は、ステップE8~E10の処理において、multi-char NFA記述行列生成手段123が、縮小版4-char NFA記述行列から新たにコピーした要素である。尚、薄い網掛けを用いて示す部分(図において、R3を用いて示す部分。)は、multi-char NFA記述行列生成手段123が、上述したステップE7までの処理においてコピーした要素を示す。
次いで、ステップE11~E13における(4)の処理について説明する。(4)の処理は、上から偶数番目であり、かつ、左から偶数番目の領域に対する処理である。上から偶数番目であり、かつ、左から偶数番目である領域は、遷移元状態と遷移先状態ともに、繰り返し正規表現に関係する状態に関する遷移条件を示している。
例えば、図13に示す縮小版4-char NFA記述行列において、領域(2,2)の第6行、第4列目の要素"AASA"は、図2に示す状態遷移において状態101→状態102→状態103→状態3→状態4へと1文字単位の遷移を4回行った場合に、状態101→状態104へ遷移条件"AAST"に基づいて遷移することを示す。繰り返し正規表現内の状態101から状態遷移を開始し、一度、繰り返し正規表現に対応する状態を抜けて状態103から状態3の遷移を行った後、再度、繰り返し正規表現に対応する状態4に達している。上から偶数番目であって、かつ、左から奇数番目である領域内の他の要素についても、同様に示す。
図13に示す縮小版4-char NFA記述行列においては、上から偶数番目であって、かつ、左から偶数番目である領域のうち、0以外の要素が存在するのは領域(2,2)だけであり、他の3つの領域(2,4)、(4,2)、(4,4)については、全ての要素が0となっている。これは、領域(4,2)、(4,4)については、遷移元状態が繰り返し正規表現"B{50}"に対応する状態であり、図2に示す状態遷移図において繰り返し正規表現"B{50}"に関する状態遷移を行った後は、状態156に文字'U'で遷移する遷移条件しか存在しないため、領域(4,2)や(4,4)に対応する状態遷移が存在しないためである。また、領域(2,4)は、繰り返し正規表現"A{100}"に関連する状態から繰り返し正規表現"B{50}"に関連する状態への状態遷移を表しているが、繰り返し正規表現"A{100}"に関連する最後の状態である状態102から、繰り返し正規表現"B{50}"に関連する最初の状態である状態106へと達するには5文字分の状態遷移が必要である。このため、領域(2,4)に対応する状態遷移は存在しない。尚、本実施の形態1では、正規表現の一例として"BCD((A{100}|E)S)*TTB{50}U"を用いたが、別の正規表現が指定された場合には、これらの領域(2,4)、(4,2)、(4,4)に対しても、0以外の要素が存在する場合がある。
繰り返し正規表現に関係する状態から繰り返し正規表現に関係する状態へとM文字単位の状態遷移を行う場合には、遷移先状態となり得るのは繰り返し正規表現の先頭からM番目の状態だけであり、遷移元状態になり得るのは繰り返し正規表現の末尾からM番目の状態だけであることに着目する。これにより、multi-char NFA記述行列生成手段123は、縮小版multi-char NFA記述行列において、上から偶数番目であって、かつ、左から奇数番目である領域を、オリジナル版multi-char NFA記述行列の同じ位置の領域のうち、左側と下側の境界に接する範囲にコピーする(ステップE12)。
尚、図18に示すステップE11~E13は、上述した処理を一般的に示したものである。即ち、ステップE11~E13において、multi-char NFA記述行列生成手段123は、各領域についての処理を行う。ステップE12における領域毎の処理では、multi-char NFA記述行列生成手段123は、ステップB1において計算した行列変換情報リストを参照することで、コピー先の座標を一意に特定することができる。図22は、ステップE13までの処理を終えた時点での、オリジナル版4-char NFA記述行列を示す図である。図22においては、濃い網掛けを用いて示す部分(図において、R6を用いて示す部分。)は、ステップE1~E13の処理において、multi-char NFA記述行列生成手段123が、縮小版4-char NFA記述行列から新たにコピーした要素である。尚、薄い網掛けを用いて示す部分(図において、R5を用いて示す部分。)は、multi-char NFA記述行列生成手段123が、上述したステップE10までの処理においてコピーした要素を示す。
次いで、ステップE14~E18における(5)の処理について説明する。(5)の処理は、繰り返し正規表現に関する補正である。図22に示すように、ステップE13までの処理を終えた時点でのオリジナル版multi-char NFA記述行列においては、繰り返し正規表現に対応する状態遷移のうち、繰り返し正規表現"A{100}"に対応する状態では、状態4~98からの状態遷移と、状態8~102への状態遷移と、が規定されていない。また、繰り返し正規表現"B{50}"に対応する状態では、状態106~150からの状態遷移と、状態110~154への状態遷移と、が規定されていない。
状態4~98からの状態遷移について着目すると、状態4~98は繰り返し正規表現"A{100}"に対応する状態である。図2を参照すると、1文字単位の状態遷移をM(=4)回行った場合には、途中で経由する状態と、M回の状態遷移を行った結果達することができる状態とは、いずれも繰り返し正規表現"A{100}"に対応する状態だけである。このため、遷移条件は、繰り返し正規表現の繰り返し文字M個である。上述したステップA3において、1-char NFA生成手段121は、繰り返し正規表現に対応する状態について、状態番号が昇順の連番となるように状態番号を割り当てている。このため、状態4~98からの状態遷移は、遷移条件'A'のM回繰り返し(M=4なので"AAAA")での、状態X(4≦X≦98)から状態X+Mへの状態遷移だけとなる。
同様にして、状態8~102への状態遷移について着目すると、状態8~102への状態遷移に関して有効な状態遷移は、遷移条件'A'のM回繰り返し(M=4なので"AAAA")での、状態X(4≦X≦98)から状態X+Mへの状態遷移だけである。これは、状態4~98からの状態遷移と全く同じ状態遷移である。従って、multi-char NFA記述行列生成手段123は、繰り返し正規表現"A{100}"に対応する状態遷移として、遷移条件'A'のM(=4)回繰り返しでの、状態X(4≦X≦98)から状態X+Mへの状態遷移を、オリジナル版4-char NFA記述行列に追加する。また、同様にして、multi-char NFA記述行列生成手段123は、繰り返し正規表現"B{50}"に対応する状態遷移として、遷移条件'B'のM(=4)回繰り返しでの、状態X(106≦X≦150)から状態X+Mへの状態遷移を、オリジナル版4-char NFA記述行列に追加する。
尚、図18に示すステップE14~E18は、上述した処理を一般的に示したものである。即ち、ステップE14~E18において、multi-char NFA記述行列生成手段123は、それぞれの繰り返し正規表現に対応して、遷移条件として繰り返し文字CiのM回繰り返しでの、状態X(Si≦X≦Ei-M)から状態X+Mへの状態遷移を、オリジナル版4-char NFA記述行列に追加する処理を行う。尚、iは、行列変換情報リストのエントリに割り当てられたインデックス番号を示し、個々の繰り返し正規表現に対応する。図14は、図18に示す処理(ステップE1~E18)を全て終了した後の、完成したオリジナル版4-char NFA記述行列D4を示す図である。
次に、ステップB5について説明する。ステップB5において、multi-char NFA記述行列生成手段123は、上述したステップB4までに生成したオリジナル版4-char NFA記述行列D4を、multi-char NFA記述行列記憶部145に記憶する。
また、multi-char NFA記述行列生成手段123は、生成したオリジナル版multi-char NFA記述行列をmulti-char NFA記述行列記憶部145に記憶する際に、1-char NFA記述行列生成手段122から全ての1-char NFA記述行列の生成処理が完了したことを示す信号を受信している場合には、全てのmulti-char NFA記述行列の生成処理が完了したことを示す信号を、multi-char NFA生成手段124に通知する。以上説明したようにして、multi-char NFA記述行列生成手段123は、multi-char NFA記述行列生成処理を完了する。
次に、図23を参照して、multi-char NFA生成手段124の動作について説明する。multi-char NFA生成手段124は、NFA記述行列の定義に基づいて、M文字単位の状態遷移(multi-char NFA)を生成する。multi-char NFA生成手段124は、非特許文献3に開示される手法に基づいて、multi-char NFA記述行列記憶部145に記憶したオリジナル版multi-char NFA記述行列から、multi-char NFAを生成する。multi-char NFA生成手段124は、生成したmulti-char NFAをmulti-char NFA記憶部146に記憶する。具体的には、まず、multi-char NFA生成手段124は、図14に示すオリジナル版4-char NFA記述行列D4の要素の中で、初期状態を示すIと、終了状態を示すFと、を任意の1文字にマッチすることを示す'*'に変換する。次いで、multi-char NFA生成手段124は、オリジナル版4-char NFA記述行列より、4-char NFA(M文字単位の状態遷移)を生成する。図23は、multi-char NFA生成手段124が生成した4-char NFAを示す図である。multi-char NFA生成手段124は、生成したmulti-char NFAをmulti-char NFA記憶部146に記憶して、その処理を終了する。
また、multi-char NFAをmulti-char NFA記憶部146に記憶する際に、multi-char NFA記述行列生成手段123から全てのmutli-char NFA記述行列の生成処理が完了したことを示す信号を受信している場合には、multi-char NFA生成手段124は、全てのmulti-char NFAの生成処理が完了したことを示す信号を、HDL変換手段125に通知する。
次に、HDL変換手段125の動作について説明する。HDL変換手段125は、multi-char NFA記憶部146に記憶したmulti-char NFAについて、そのNFAの状態と、状態間の遷移と、遷移条件等の情報を分析する。HDL変換手段125は、分析結果に基づいて、各状態をレジスタに、遷移条件を文字(列)比較器にそれぞれ変換して、状態間の遷移に応じて各レジスタの間を接続することで、そのNFA回路を記述するVerilog HDL等のHDL(Hardware Description Language)記述に変換する。
また、HDL変換手段125は、multi-char NFA生成手段124から全てのmulti-char NFAの生成処理が完了したことを示す信号を受信した場合には、multi-char NFAから変換した全てのHDL記述と、正規表現からHDLへの変換処理が完了したことを示す信号と、を出力装置13に出力する。
以上説明したように、本実施の形態1によれば、繰り返し正規表現を含む正規表現において繰り返し正規表現の繰り返し回数が増加した場合においても、NFAの遷移条件を複数文字単位に拡張したNFAを生成するためのNFA記述行列の演算量の増加を抑制することができる。即ち、本実施の形態1に係る手法は、オリジナル版1-char NFA記述行列において、繰り返し正規表現に対応する状態遷移に関する行と列の数を、繰り返し正規表現の繰り返し文字数から動作文字数Mにまで削減する。そして、行列サイズの小さい縮小版1-char NFA記述行列を作成した上で、縮小版の動作文字数M文字単位のNFA記述行列を計算する。そして、オリジナル版1-char NFA記述行列の状態数に対応するM文字単位のNFA記述行列を計算することで、M文字単位のNFAを得る。オリジナル版のNFA記述行列においては、行列サイズは、繰り返し正規表現の繰り返し回数に比例するものであったのに対して、上述したようにして作成した縮小版のNFA記述行列においては、繰り返し正規表現の数に比例する行列サイズに削減することができる。従って、行列サイズがNである行列同士の演算量はO(N3)であるため、本実施の形態1に係る手法は、multi-char NFA記述行列を計算する際の行列演算量を、関連技術と比較して大幅に削減することができる。multi-char NFA記述行列を計算する際の演算量を削減することができるため、M文字単位のNFAを作成するためのmulti-char NFA記述行列を生成する際に要する計算時間を削減することができる。これにより、正規表現が入力されてからM文字単位のNFAを求めて、最終的に、指定された正規表現を検索する回路のHDL記述を得るために要する所用時間を削減することができる。
また、本実施の形態1によれば、行列サイズの小さい縮小版の1-char NFA記述行列を用いてmulti-char NFA記述行列を生成するための演算を行うことで、その演算の際に使用するメモリに関して、行列演算情報を一時的に保持するためのメモリ容量を削減することができる。
また、本実施の形態1によれば、1文字単位のNFAを生成する際に、繰り返し正規表現に対応する状態には状態番号が昇順となるように状態番号を割り当てることで、縮小版multi-char NFA記述行列からオリジナル版multi-char NFA記述行列を生成する際に、繰り返し正規表現に対応した状態遷移の追加を、状態Xから状態X+Mへの状態遷移を追加するという単純な処理で実現することができる。これにより、縮小版multi-char NFA記述行列からオリジナル版multi-char NFA記述行列へと変換するために保持すべき情報量を削減することができる。
尚、上述した実施の形態1では、本発明をNFAに適用する場合を説明したが本発明はこれに限定されない。即ち、実施の形態1と同様の構成を適用し、1-char NFA生成手段121において、1文字単位のNFAを生成する代わりに1文字単位のDFAを生成し、1文字単位のDFAを生成する際には、繰り返し正規表現に対応する状態遷移の開始状態番号を保持するように構成するようにしてもよい。これにより、NFAに限らずDFAに対しても、行列サイズの小さな縮小版の記述行列を用いて、同時に複数文字を処理可能なM文字単位のDFAを生成することができる。
実施の形態2.
次に、図24を参照して、本発明の実施の形態2について説明する。図24は、本発明の実施の形態2の構成を示すブロック図である。図24を参照すると、本実施の形態2は、上述した実施の形態1と同様に、キーボード等の入力装置11と、プログラム制御に従って動作するデータ処理装置14と、情報を記憶する記憶装置140と、ディスプレイ装置や印刷装置等の出力装置13と、を含む。
次に、図24を参照して、本発明の実施の形態2について説明する。図24は、本発明の実施の形態2の構成を示すブロック図である。図24を参照すると、本実施の形態2は、上述した実施の形態1と同様に、キーボード等の入力装置11と、プログラム制御に従って動作するデータ処理装置14と、情報を記憶する記憶装置140と、ディスプレイ装置や印刷装置等の出力装置13と、を含む。
本実施の形態2においては、上述した実施の形態1のデータ処理装置12に含まれる、1-char NFA生成手段121と、1-char NFA記述行列生成手段122と、multi-char NFA記述行列生成手段123と、multi-char NFA生成手段124と、HDL変換手段125とが実行する処理を、データ処理装置14が実行する正規表現-HDL変換プログラム15に基づいて実現するものである。
データ処理装置14は、正規表現-HDL変換プログラム15を読み込む。正規表現-HDL変換プログラム15は、データ処理装置14の動作を制御する。データ処理装置14は、正規表現-HDL変換プログラム15の制御が、上述した実施の形態1におけるデータ処理装置12が実行する処理と同一の処理を実行する。
尚、本実施の形態2においても、上述した実施の形態1と同様に、NFAに限定されずDFAに対しても同様の処理を行うことができる。
実施の形態3.
次に、図25を参照して、本発明の実施の形態3について説明する。図25は、本発明の実施の形態3の構成を示すブロック図である。図25を参照すると、本実施の形態3は、キーボード等の入力装置11と、プログラム制御に従って動作するデータ処理装置16と、情報を記憶する記憶装置140と、FPGA等の再構成可能なハードウェアデバイスにその構成をコンフィグレーションするためのコンフィグレーション装置164と、パターンマッチングの被検索対象データをパターンマッチング装置17に入力するデータ入力装置174と、FPGA等の再構成可能なハードウェアデバイスを有するパターンマッチング装置17と、パターンマッチングの出力結果を表示するためのディスプレイ装置や印刷装置等の結果出力装置175と、を含む。
次に、図25を参照して、本発明の実施の形態3について説明する。図25は、本発明の実施の形態3の構成を示すブロック図である。図25を参照すると、本実施の形態3は、キーボード等の入力装置11と、プログラム制御に従って動作するデータ処理装置16と、情報を記憶する記憶装置140と、FPGA等の再構成可能なハードウェアデバイスにその構成をコンフィグレーションするためのコンフィグレーション装置164と、パターンマッチングの被検索対象データをパターンマッチング装置17に入力するデータ入力装置174と、FPGA等の再構成可能なハードウェアデバイスを有するパターンマッチング装置17と、パターンマッチングの出力結果を表示するためのディスプレイ装置や印刷装置等の結果出力装置175と、を含む。
データ処理装置16は、図1に示す上述した実施の形態1のデータ処理装置12に対して、コンフィグレーションデータ変換手段161を加えたものである。その他の要素は、上述した実施の形態1と同じであるため、説明を省略する。
コンフィグレーションデータ変換手段161は、HDL変換手段125より、正規表現からHDLへの変換処理が完了したことを示す信号を受け取る。正規表現からHDLへの変換処理が完了したことを示す信号を受け取った場合には、コンフィグレーションデータ変換手段161は、HDL変換手段125から受信したmulti-char NFAを記述するHDL記述に基づいて、パターンマッチング装置17が有する再構成可能なハードウェアデバイスの構成情報となるコンフィグレーションデータへと変換する。変換処理を完了すると、コンフィグレーションデータ変換手段161は、コンフィグレーションデータをコンフィグレーション装置164に出力する。尚、HDLからコンフィグレーションデータへの変換については、例えば、FPGAである場合には、そのベンダーが提供している開発ツールを使用することができるため、その変換方法の詳細については省略する。
コンフィグレーション装置164は、コンフィグレーションデータ変換手段161からコンフィグレーションデータを受信する。コンフィグレーションデータを受信したコンフィグレーション装置164は、コンフィグレーションデータを受信したコンフィグレーション装置164は、パターンマッチング装置17のパターンマッチング部172を実現する再構成可能なハードウェアデバイスを構成・設定する。コンフィグレーション装置164は、FPGA等の再構成可能なハードウェアデバイスにその構成をコンフィグレーションするための制御プログラムや、ハードウェアデバイスにデータを転送するための書き込みケーブル等にを用いて構成する。コンフィグレーション装置164を構成するこれらの構成要素は、例えばFPGAである場合には、デバイスベンダーが提供している開発ツールに含まれている。コンフィグレーション装置164がコンフィグレーションデータを用いて再構成可能なハードウェアデバイスを構成・設定する詳細な手順については、FPGA等のデバイスベンダーの提供する開発ツールを使用することができる。このため、ここではその詳細な説明を省略する。
パターンマッチング装置17は、データ入力部171と、パターンマッチング部172と、結果出力部173と、を含む。データ入力部171と、パターンマッチング部172と、結果出力部173とは、それぞれ別々の再構成可能なハードウェアデバイス上に構成する。
データ入力部171は、データ入力装置174から入力されたパケットデータや、テキストデータ等のパターンマッチング対象データ(以下、これらデータを被検索データと称する。)を整形して、データ処理装置16にて生成した同時動作数に等しい同時処理文字数へと並列化する。データ入力部171は、同時処理文字数単位に、被検索データをパターンマッチング部172へ入力する。
パターンマッチング部172は、コンフィグレーション装置164を経由して入力された、データ処理装置16が生成したコンフィグレーションデータを用いて構成される回路である。即ち、パターンマッチング部172は、データ処理装置16が生成したmulti-char NFA回路そのものを示す。パターンマッチング部172に構成されたNFA回路は、データ入力部171から被検索データが入力される都度、状態遷移が起こる。そして、NFA回路は、入力された被検索データがパターンと一致した場合には、その信号が終了状態を構成しているレジスタからパターンに一致した旨を示す信号と、パターンに一致した被検索データに関する情報(例えば、パターンに一致した被検索データの位置等を示す情報。)と、を結果出力部173へと出力する。
結果出力部173は、パターンマッチング部172から入力されたパターンに一致したことを示す信号と、パターンに一致した被検索データに関する情報と、を受信する。結果出力部173は、入力された被検索データがどの入力文字列に応じてどのパターンに一致したのか等の情報を処理して、その処理結果を結果出力装置175へと出力する。尚、どのパターンに一致したかの通知は、例えば、予め定義しておいたパターン番号等を用いて通知することができる。
本実施の形態3では、正規表現そのものを入力することで、1-char NFAから、指定された処理文字数で遷移を行うmulti-char NFAの変換を行う。そして、本実施の形態3に係る手法は、multi-char NFAのNFA回路を記述するHDL記述を生成し、そのHDL記述を用いて記述されるNFA回路をパターンマッチング装置内のハードウェアデバイス上に構成する。これにより、本実施の形態3に係る手法は、ハードウェアデバイス上に構成したNFA回路を用いた、パターンマッチング装置を実現することができる。上述した実施の形態1にて説明したように、本発明は、multi-char NFA記述行列を計算する際の演算量を削減することができる。これにより、本発明は、M文字単位のNFAを作成するためのmulti-char NFA記述行列の生成に要する計算時間を削減することができる。従って、本発明は、正規表現が入力されてからM文字単位のNFAを得て、最終的に、指定された正規表現を検索する回路のHDL記述を得る、までの所用時間を削減することができる。このため、本発明は、入力装置11より新たな正規表現が入力された際には、短時間でmulti-char NFA回路を記述したHDL記述を得ることができる。これにより、そのNFA回路を記述したHDL記述を変換したコンフィグレーションデータを短時間で得ることができ、入力装置11より新たな正規表現が入力されてからその正規表現がパターンマッチング部172の構成に反映されるまでの時間を短縮することができる。
尚、本実施の形態3は、上述した実施の形態2における正規表現-HDL変換プログラム15で制御されるデータ処理装置が生成するmulti-char NFAであって、そのmulti-char NFAを記述するHDL記述をコンフィグレーションデータ変換手段161に入力し、そのHDL記述からコンフィグレーションデータを生成するようにしてもよい。
さらに、本実施の形態3では、パターンマッチング装置17において、データ入力部171と、パターンマッチング部172と、結果出力部173とは、それぞれ別々の再構成可能なハードウェアデバイス上に構成するものとしたが本発明はこれに限定されない。即ち、これら3つを同じ再構成可能なハードウェアデバイス上に構成してもよい。また、例えば、データ入力部171と、結果出力部173と、を同じ再構成可能なハードウェアデバイス上に構成し、パターンマッチング部172を別の再構成可能なハードウェアデバイス上に構成する等してもよい。データ入力部171と、パターンマッチング部172と、結果出力部173と、これらを配備する再構成可能なハードウェアデバイスと関係については、制約はない。
さらに、データ入力部171と、結果出力部173とについては、ASIC(Application Specific Integrated Circuit)等の再構成できないハードウェアデバイス上に構成することも可能である。
また、ハードウェアデバイスの一部のみが再構成可能であり、他の部分は再構成できないハードウェアデバイスを用いて、パターンマッチング部172を再構成可能な部分に構成し、データ入力部171と結果出力部173とを再構成できないハードウェアデバイス上に構成するようにしてもよい。ここで、データ入力部171と結果出力部173の両方、又は、これらのいずれか1つを、パターンマッチング部122と同じ再構成可能なハードウェアデバイス上に構成する場合には、コンフィグレーションデータ変換手段161は、HDL変換手段125が生成したNFA回路を記述するHDL記述に加えて、データ入力部171や結果出力部173の回路を記述するHDLについても読み込むようにしてもよい。これにより、コンフィグレーションデータ変換手段161は、読み込んだコンフィグレーションデータを生成することで、データ入力部171と結果出力部173の両方、又は、これらのいずれか1つを、パターンマッチング部122と同じ再構成可能なハードウェアデバイス上に構成する場合にも対応することができる。
上述した実施の形態3の動作の説明では、コンフィグレーション装置164は、コンフィグレーションデータを格納せずに、受信したコンフィグレーションデータを使用して、パターンマッチング装置17のパターンマッチング部172を実現する再構成可能なハードウェアデバイスを構成・設定する構成としたが本発明はこれに限定されない。即ち、コンフィグレーションデータを記憶するコンフィグレーションデータ記憶装置を更に備え、コンフィグレーション装置164は、コンフィグレーションデータ変換手段161よりコンフィグレーションデータを受信した場合には、その受信したコンフィグレーションデータを前記コンフィグレーションデータ記憶装置に記憶させた後に、前記コンフィグレーションデータ記憶装置からコンフィグレーションデータを読み出す構成としてもよい。
また、上述した実施の形態3の動作の説明では、コンフィグレーション装置164は、コンフィグレーションデータ変換手段161よりコンフィグレーションデータを受信した場合には、パターンマッチング部172を実現する再構成可能なハードウェアデバイスの構成を開始する構成としたが、本発明はこれに限定されない。即ち、コンフィグレーション装置164は、コンフィグレーションデータ変換手段161よりコンフィグレーションデータを受信した際にパターンマッチング部172を実現する再構成可能なハードウェアデバイスの構成を開始する必要はなく、パターンマッチング装置17のパターンマッチング部172の動作状況を考慮して、パターンマッチング装置17のパターンマッチング部172の動作に都合のよいタイミングで、パターンマッチング部172を実現する再構成可能なハードウェアデバイスの構成を開始するようにしてもよい。
尚、本実施の形態3においても、上述した実施の形態1、2と同様に、NFAに限定されずDFAに対しても同様の処理を行うことができる。
以下、本発明による効果について説明する。第1の効果は、繰り返し正規表現を含む正規表現において、繰り返し正規表現の繰り返し回数が多くなった場合でも、NFA記述行列の演算量を少なくできることである。NFA記述行列は、NFAの遷移条件を複数文字単位に拡張したNFAを生成するための行列である。
その理由は、本発明は、1-char NFA記述行列からmulti-char NFA記述行列を生成する際に、1-char NFA記述行列から、行列サイズの小さい1-char NFA記述行列を作成し、作成した行列サイズの小さい1-char NFA記述行列を用いてmulti-char NFA記述行列を求めるための演算を行い、最後に行列サイズ縮小前の1-char NFA記述行列と同じ大きさのmulti-char NFA記述行列に変換しているためである。即ち、1文字単位の遷移のNFAを記述する1-char NFA記述行列から指定された文字単位の遷移のNFAを記述するmulti-char NFA記述行列を生成する際に、1-char NFA記述行列から、繰り返し正規表現に対応する状態遷移に関する行および列の数を指定された文字数にまで縮小した、行列サイズの小さい1-char NFA記述行列を作成し、作成した行列サイズの小さい1-char NFA記述行列を用いてmulti-char NFA記述行列を求めるための演算を行い、最後に行列サイズ縮小前の1-char NFA記述行列と同じ大きさのmulti-char NFA記述行列に変換することで、行列サイズの小さい1-char NFA記述行列を用いてmulti-char NFA記述行列を求めるための演算を行うことができるためである。
第2の効果は、繰り返し正規表現を含む正規表現において、繰り返し正規表現の繰り返し回数が多くなった場合でも、NFA記述行列の演算に必要な記憶領域を少なくできることである。
その理由は、第1の効果と同様に、multi-char NFA記述行列を求めるための演算を行う前に、行列サイズの小さい1-char NFA記述行列を生成し、生成した行列サイズの小さい1-char NFA記述行列を用いてmulti-char NFA記述行列を求めるための演算を行うことで、演算対象となる行列のサイズを小さく抑えることができるためである。
さらに、本発明は、1文字単位の遷移のNFAを記述する1-char NFA記述行列からmulti-char NFA記述行列を生成する際に、1-char NFA記述行列から、繰り返し正規表現に対応する状態遷移に関する行および列の数を指定された文字数にまで縮小した、行列サイズの小さい1-char NFA記述行列を作成する。そして、作成した行列サイズの小さい1-char NFA記述行列を用いてmulti-char NFA記述行列を求めるための演算を行い、最後に行列サイズ縮小前の1-char NFA記述行列と同じ大きさのmulti-char NFA記述行列に変換する。NFA記述行列の各行と各列はそれぞれ有限オートマトンの状態に対応している。行列サイズを小さくすることは行列の一部の行、又は、列を削除することを示す。行列の行、又は、列の一部を削除することは、記述行列へと変換する前の有限オートマトンにおいては、一部の状態を削除していることと等価である。即ち、本発明において、行列サイズを縮小した1-char NFA記述行列を用いてmulti-char NFA記述行列を求めるための演算を行うことは、有限オートマトンの状態数を削減した記述行列を作成した上で当該演算を行うことに相当する。従って、本発明では、multi-char NFA記述行列を求める際の演算において、有限オートマトンの状態数を削減することができる。
尚、本発明は上述した実施例のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
この出願は、2008年6月4日に出願された日本出願特願2008―146909を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
本発明の活用例として、正規表現を用いたパターンマッチング処理を行うためのNFA回路を記述したHDL生成システムや、生成プログラム等の用途に適用することができる。また、本発明を用いて生成したHDLを用いてNFA回路を構成することで、正規表現を用いた高速なパターンマッチング処理を行うためのパターンマッチング装置等の用途に適用することができる。さらに、パターンマッチング装置にパケット処理回路を加えることで、ネットワーク侵入検知システム(NIDS: Network Intrusion Detection System)や、ネットワーク侵入防止システム(NIPS: Network Intrusion Prevention System)に対しても適用することができる。また、パソコンやワークステーションに搭載されているソフトウェアベースでのパターンマッチング処理の代替となるハードウェアアクセラレータ用NFA回路生成システム、生成プログラムを格納する記録媒体、正規表現検索ハードウェアアクセラレータ装置等に対しても適用することができる。
11:入力装置、
12:データ処理装置、
13:出力装置、
121:1-char NFA生成手段、
122:1-char NFA記述行列生成手段、
123:multi-char NFA記述行列生成手段、
124:multi-char NFA生成手段、
125:HDL変換手段、
14:データ処理装置(実施の形態2)、
15:正規表現―HDL変換プログラム、
16:データ処理装置(実施の形態3)、
161:コンフィグレーションデータ変換手段、
162:記憶装置、
163:コンフィグレーションデータ記憶部、
164:コンフィグレーション装置、
17:パターンマッチング装置、
171:データ入力部、
172:パターンマッチング部、
173:結果出力部、
174:データ入力装置、
175:結果出力装置、
200~204:レジスタ、
300~304:各文字を比較する比較器、
400~404:ANDゲート、
500~502:ORゲート
12:データ処理装置、
13:出力装置、
121:1-char NFA生成手段、
122:1-char NFA記述行列生成手段、
123:multi-char NFA記述行列生成手段、
124:multi-char NFA生成手段、
125:HDL変換手段、
14:データ処理装置(実施の形態2)、
15:正規表現―HDL変換プログラム、
16:データ処理装置(実施の形態3)、
161:コンフィグレーションデータ変換手段、
162:記憶装置、
163:コンフィグレーションデータ記憶部、
164:コンフィグレーション装置、
17:パターンマッチング装置、
171:データ入力部、
172:パターンマッチング部、
173:結果出力部、
174:データ入力装置、
175:結果出力装置、
200~204:レジスタ、
300~304:各文字を比較する比較器、
400~404:ANDゲート、
500~502:ORゲート
Claims (30)
- 入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成する有限オートマトン生成システムであって、
前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成手段と、
前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成手段と、
前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小手段と、
前記縮小行列形式表現を用いて、前記行列演算を行う行列演算手段と、
前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大手段と、
を有する有限オートマトン生成システム。 - 前記行列縮小手段は、
前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうち、前記繰り返し正規表現に対応する領域の行及び列を、前記遷移条件として指定する任意の文字数の幅から成る行及び列へと縮小した行列形式表現を作成する
ことを特徴とする請求項1記載の有限オートマトン生成システム。 - 前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する繰り返しリスト作成手段を更に有する
ことを特徴とする請求項1記載の有限オートマトン生成システム。 - 前記行列縮小手段は、
前記繰り返しリスト作成手段で作成した繰り返し正規表現リストを参照して、前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうちで縮小する領域を決定する
ことを特徴とする請求項3記載の有限オートマトン生成システム。 - 前記行列拡大手段は、
前記繰り返しリスト作成手段で作成した繰り返し正規表現リストを参照して、前記行列演算の結果である行列形式表現の領域のうちで拡大する領域を決定する
ことを特徴とする請求項3記載の有限オートマトン生成システム。 - 前記繰り返し正規表現リストの各要素を、前記繰り返し正規表現の繰り返し文字と、当該繰り返し文字の繰り返し回数と、当該繰り返し正規表現に対応する有限オートマトンの状態番号と、から構成する
ことを特徴とする請求項4又は5記載の有限オートマトン生成システム。 - 前記固定文字数単位有限オートマトン生成手段は、
入力する正規表現を固定文字数の遷移条件から成る有限オートマトンとして生成する際に、前記繰り返し正規表現に対応する有限オートマトンの状態番号として、連続する状態番号を割り当てる
ことを特徴とする請求項1記載の有限オートマトン生成システム。 - 前記固定文字数単位有限オートマトン生成手段は、
前記繰り返し正規表現に対応する有限オートマトンの状態番号として、連続する状態番号を割り当てる際に、当該割り当てる状態番号を昇順とする
ことを特徴とする請求項7記載の有限オートマトン生成システム。 - 前記行列拡大手段で拡大した行列形式表現を有限オートマトン回路へと変換する回路変換手段を更に有する
ことを特徴とする請求項1記載の有限オートマトン生成システム。 - 入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成する有限オートマトン生成方法であって、
前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成し、
前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成し、
前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成し、
前記縮小行列形式表現を用いて、前記行列演算を行い、
前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する
有限オートマトン生成方法。 - 前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうち、前記正規表現に含まれる繰り返し正規表現に対応する領域を縮小した行列形式表現の作成は、
前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうち、前記繰り返し正規表現に対応する領域の行及び列を、前記遷移条件として指定する任意の文字数の幅から成る行及び列へと縮小した行列形式表現を作成する
ことを特徴とする請求項10記載の有限オートマトン生成方法。 - 前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する
ことを特徴とする請求項10記載の有限オートマトン生成方法。 - 前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうち、前記正規表現に含まれる繰り返し正規表現に対応する領域を縮小した行列形式表現の作成は、
前記作成した繰り返し正規表現リストを参照して、前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうちで縮小する領域を決定する
ことを特徴とする請求項12記載の有限オートマトン生成方法。 - 前記行列演算の結果である行列形式表現を、前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現の作成は、
前記作成した繰り返し正規表現リストを参照して、前記行列演算の結果である行列形式表現の領域のうちで拡大する領域を決定する
ことを特徴とする請求項12記載の有限オートマトン生成方法。 - 前記繰り返し正規表現リストの各要素を、前記繰り返し正規表現の繰り返し文字と、当該繰り返し文字の繰り返し回数と、当該繰り返し正規表現に対応する有限オートマトンの状態番号と、から構成する
ことを特徴とする請求項13又は14記載の有限オートマトン生成方法。 - 入力する正規表現を固定文字数の遷移条件から成る有限オートマトンとして生成する際に、前記繰り返し正規表現に対応する有限オートマトンの状態番号として、連続する状態番号を割り当てる
ことを特徴とする請求項10記載の有限オートマトン生成方法。 - 前記繰り返し正規表現に対応する有限オートマトンの状態番号として、連続する状態番号を割り当てる際に、当該割り当てる状態番号を昇順とする
ことを特徴とする請求項16記載の有限オートマトン生成方法。 - 前記拡大した行列形式表現を有限オートマトン回路へと変換する
ことを特徴とする請求項10記載の有限オートマトン生成方法。 - 入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成する有限オートマトン生成プログラムを格納する記録媒体であって、
前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成ステップと、
前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成ステップと、
前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小ステップと、
前記縮小行列形式表現を用いて、前記行列演算を行う行列演算ステップと、
前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大ステップと、
をコンピュータに実行させることを特徴とする有限オートマトン生成プログラムを格納する記録媒体。 - 前記行列縮小ステップでは、
前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうち、前記繰り返し正規表現に対応する領域の行及び列を、前記遷移条件として指定する任意の文字数の幅から成る行及び列へと縮小した行列形式表現を作成する
ことを特徴とする請求項19記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する繰り返しリスト作成ステップを更に有する
ことを特徴とする請求項19記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記行列縮小ステップでは、
前記繰り返しリスト作成ステップで作成した繰り返し正規表現リストを参照して、前記固定文字数の遷移条件から成る有限オートマトンを記述する行列形式表現の領域のうちで縮小する領域を決定する
ことを特徴とする請求項21記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記行列拡大ステップでは、
前記繰り返しリスト作成ステップで作成した繰り返し正規表現リストを参照して、前記行列演算の結果である行列形式表現の領域のうちで拡大する領域を決定する
ことを特徴とする請求項21記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記繰り返し正規表現リストの各要素を、前記繰り返し正規表現の繰り返し文字と、当該繰り返し文字の繰り返し回数と、当該繰り返し正規表現に対応する有限オートマトンの状態番号と、から構成する
ことを特徴とする請求項22又は23記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記固定文字数単位有限オートマトン生成ステップでは、
入力する正規表現を固定文字数の遷移条件から成る有限オートマトンとして生成する際に、前記繰り返し正規表現に対応する有限オートマトンの状態番号として、連続する状態番号を割り当てる
ことを特徴とする請求項19記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記固定文字数単位有限オートマトン生成ステップでは、
前記繰り返し正規表現に対応する有限オートマトンの状態番号として、連続する状態番号を割り当てる際に、当該割り当てる状態番号を昇順とする
ことを特徴とする請求項25記載の有限オートマトン生成プログラムを格納する記録媒体。 - 前記行列拡大ステップで拡大した行列形式表現を有限オートマトン回路へと変換する回路変換ステップを更に有する
ことを特徴とする請求項19記載の有限オートマトン生成プログラムを格納する記録媒体。 - 入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成し、前記生成した有限オートマトンを用いてパターンマッチを行うパターンマッチング装置であって、
前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成手段と、
前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する繰り返しリスト作成手段と、
前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成手段と、
前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小手段と、
前記縮小行列形式表現を用いて、前記行列演算を行う行列演算手段と、
前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大手段と、
前記行列拡大手段で拡大した行列形式表現を有限オートマトン回路へと変換する回路変換手段と、
前記回路変換手段で変換した有限オートマトン回路をハードウェア記述言語を用いて記述する回路記述手段と、を有し、
前記回路記述手段で記述した回路記述を用いて、再構成可能ハードウェアデバイス上に前記有限オートマトンを用いたパターンマッチ回路を構成し、当該構成したパターンマッチ回路を用いてパターンマッチを行う
パターンマッチング装置。 - 入力する正規表現から、指定する任意の文字数の遷移条件から成る有限オートマトンを行列演算を用いて生成し、前記生成した有限オートマトンを用いてパターンマッチを行うパターンマッチング装置であって、
前記正規表現から、固定文字数の遷移条件から成る固定文字数単位有限オートマトンを生成する固定文字数単位有限オートマトン生成手段と、
前記正規表現に含まれる繰り返し正規表現と当該繰り返し正規表現に対応する固定文字数単位有限オートマトンの状態番号との対応関係を保持する繰り返し正規表現リストを作成する繰り返しリスト作成手段と、
前記固定文字数単位有限オートマトンから当該固定文字数単位有限オートマトンの状態と前記遷移条件との対応関係を記述する行列形式表現を生成する固定文字数単位行列形式表現生成手段と、
前記固定文字数単位行列形式表現の領域のうち、繰り返し正規表現に対応する領域を縮小した縮小行列形式表現を作成する行列縮小手段と、
前記縮小行列形式表現を用いて、前記行列演算を行う行列演算手段と、
前記行列演算の結果である行列形式表現を、前記固定文字数単位行列形式表現の行列サイズと同じ行列サイズとなる行列形式表現へと拡大した行列形式表現を作成する行列拡大手段と、
前記行列拡大手段で拡大した行列形式表現を有限オートマトン回路へと変換する回路変換手段と、
前記回路変換手段で変換した有限オートマトン回路をハードウェア記述言語を用いて記述する回路記述手段と、
前記回路記述手段で記述した回路記述から、再構成可能ハードウェアデバイスの構成情報を示すコンフィグレーションデータを生成するコンフィグレーション変換手段と、有し、
前記コンフィグレーション変換手段で生成したコンフィグレーションデータを用いて、再構成可能ハードウェアデバイス上に前記有限オートマトンを用いたパターンマッチ回路を構成し、当該構成したパターンマッチ回路を用いてパターンマッチを行う
ことを特徴とするパターンマッチング装置。 - 前記パターンマッチ回路をハードウェア化し、当該ハードウェア化したパターンマッチ回路を用いてパターンマッチを行う
ことを特徴とする請求項28又は29に記載のパターンマッチング装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2010515745A JP5429164B2 (ja) | 2008-06-04 | 2009-05-21 | 有限オートマトン生成システム |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2008-146909 | 2008-06-04 | ||
JP2008146909 | 2008-06-04 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2009147794A1 true WO2009147794A1 (ja) | 2009-12-10 |
Family
ID=41397880
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2009/002241 WO2009147794A1 (ja) | 2008-06-04 | 2009-05-21 | 有限オートマトン生成システム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5429164B2 (ja) |
WO (1) | WO2009147794A1 (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010107114A1 (ja) * | 2009-03-19 | 2010-09-23 | 日本電気株式会社 | パターンマッチング装置 |
JP5321589B2 (ja) * | 2008-08-13 | 2013-10-23 | 日本電気株式会社 | 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム |
WO2014041783A1 (ja) * | 2012-09-11 | 2014-03-20 | 日本電気株式会社 | 文字列検出回路及び文字列検出方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003242179A (ja) * | 2002-02-05 | 2003-08-29 | Internatl Business Mach Corp <Ibm> | 文字列照合方法、これを用いた文書処理装置及びプログラム |
JP2005242997A (ja) * | 2004-01-30 | 2005-09-08 | Nec Corp | データ検索装置及び方法 |
JP2007034777A (ja) * | 2005-07-28 | 2007-02-08 | Nec Corp | データ検索装置及び方法、並びにコンピュータ・プログラム |
JP2009093599A (ja) * | 2007-10-12 | 2009-04-30 | Nec Corp | 文字列照合回路 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4604174B2 (ja) * | 2004-02-05 | 2010-12-22 | 独立行政法人農業・食品産業技術総合研究機構 | 発酵ソバ食品及びその製造法 |
-
2009
- 2009-05-21 WO PCT/JP2009/002241 patent/WO2009147794A1/ja active Application Filing
- 2009-05-21 JP JP2010515745A patent/JP5429164B2/ja not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003242179A (ja) * | 2002-02-05 | 2003-08-29 | Internatl Business Mach Corp <Ibm> | 文字列照合方法、これを用いた文書処理装置及びプログラム |
JP2005242997A (ja) * | 2004-01-30 | 2005-09-08 | Nec Corp | データ検索装置及び方法 |
JP2007034777A (ja) * | 2005-07-28 | 2007-02-08 | Nec Corp | データ検索装置及び方法、並びにコンピュータ・プログラム |
JP2009093599A (ja) * | 2007-10-12 | 2009-04-30 | Nec Corp | 文字列照合回路 |
Non-Patent Citations (3)
Title |
---|
CLARK R: "Design of Efficient FPGA Circuits For Matching Complex Patterns in Network Intrusion Detection Systems", GEORGIA TECH THESES AND DISSERTATIONS, GEORGIA INSTITUTE OF TECHNOLOGY, 3 March 2004 (2004-03-03), Retrieved from the Internet <URL:http://smartech.gatech.edu/bitstream/1853/5137/1/ClarkChristopherR200405ms.pdf> [retrieved on 20090611] * |
SIDHU R, ET AL.,: "Fast Regular Expression Matching using FPGAs", FIELD-PROGRAMMABLE CUSTOM COMPUTING MACHINES, 2001. FCCM '01. THE 9TH ANNUAL IEEE SYMPOSIUM, April 2001 (2001-04-01), pages 227 - 238, Retrieved from the Internet <URL:http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=17FF6D46ClDA2A21F73321CA208AEAD4?doi=10.1.1.23.730&rep=repl&type=pdf>> * |
YAMAGAKI N. ET AL.: "NFA Umekomigata Pattern Matching Kairo ni Okeru Multibyte Shorika ni Kansuru Kento", IEICE TECHNICAL REPORT, vol. 107, no. 225, 13 September 2007 (2007-09-13), pages 65 - 70 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5321589B2 (ja) * | 2008-08-13 | 2013-10-23 | 日本電気株式会社 | 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム |
WO2010107114A1 (ja) * | 2009-03-19 | 2010-09-23 | 日本電気株式会社 | パターンマッチング装置 |
US8725671B2 (en) | 2009-03-19 | 2014-05-13 | Nec Corporation | Pattern matching appratus |
WO2014041783A1 (ja) * | 2012-09-11 | 2014-03-20 | 日本電気株式会社 | 文字列検出回路及び文字列検出方法 |
Also Published As
Publication number | Publication date |
---|---|
JPWO2009147794A1 (ja) | 2011-10-20 |
JP5429164B2 (ja) | 2014-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5321589B2 (ja) | 有限オートマトン生成装置、パターンマッチング装置、有限オートマトン回路生成方法およびプログラム | |
JP5381710B2 (ja) | ε遷移を含まない非決定性有限オートマトン生成システムと方法およびプログラム | |
JP5857072B2 (ja) | オートマトンの入次数および/または出次数を制御するための量化子の展開 | |
US9552335B2 (en) | Expedited techniques for generating string manipulation programs | |
US20150262074A1 (en) | Solving digital logic constraint problems via adiabatic quantum computation | |
EP0169010A2 (en) | Systolic array for solving cyclic loop dependent algorithms | |
TWI444894B (zh) | 用於資料平行操作中的次序保存之方法及電腦可讀取儲存媒體 | |
CN103999035A (zh) | 用于状态机中的数据分析的方法及系统 | |
Zuluaga et al. | Streaming sorting networks | |
JPWO2009116646A1 (ja) | マルチバイト処理向け文字列照合用有限オートマトン生成システム | |
Chen et al. | Computer generation of high throughput and memory efficient sorting designs on FPGA | |
JP4165712B2 (ja) | データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 | |
Chrysos et al. | Augmenting deep classifiers with polynomial neural networks | |
JP5429164B2 (ja) | 有限オートマトン生成システム | |
JPWO2008081932A1 (ja) | 文字列照合用有限オートマトン生成システム、その生成方法、及び生成プログラム | |
Daykin et al. | A bijective variant of the Burrows–Wheeler Transform using V-order | |
JP7087931B2 (ja) | 探索プログラム、探索方法及び探索装置 | |
JP4347087B2 (ja) | パターンマッチング装置および方法ならびにプログラム | |
Case et al. | Inductively finding a reachable state space over-approximation | |
Macauley et al. | Order independence in asynchronous cellular automata | |
Nolet et al. | cuSLINK: Single-linkage Agglomerative Clustering on the GPU | |
JP5523360B2 (ja) | N分木内部ノードの圧縮方法及び装置及びプログラム | |
Heuberger et al. | Automata and transducers in the computer algebra system Sage | |
WO2023223424A1 (ja) | ドキュメント生成装置、プログラム及びドキュメント生成方法 | |
JP5935563B2 (ja) | 設計支援装置、設計支援方法及びプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 09758061 Country of ref document: EP Kind code of ref document: A1 |
|
WWE | Wipo information: entry into national phase |
Ref document number: 2010515745 Country of ref document: JP |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 09758061 Country of ref document: EP Kind code of ref document: A1 |